2023學(xué)年完整公開課版Hbase批量處理_第1頁(yè)
2023學(xué)年完整公開課版Hbase批量處理_第2頁(yè)
2023學(xué)年完整公開課版Hbase批量處理_第3頁(yè)
2023學(xué)年完整公開課版Hbase批量處理_第4頁(yè)
2023學(xué)年完整公開課版Hbase批量處理_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Hbase批量處理課程內(nèi)容Hbase基礎(chǔ)HbaseShellHbaseJava編程Hbase過(guò)濾器Hbase批量處理HBase與MapReduce在偽分布式模式和完全分布式模式下的HBase是架構(gòu)在HDFS之上的,因此完全可以將MapReduce編程框架和HBase結(jié)合起來(lái)使用。將HBase作為底層存儲(chǔ)結(jié)構(gòu),MapReduce調(diào)用HBase進(jìn)行特殊的處理,這樣能夠充分結(jié)合HBase分布式大型數(shù)據(jù)庫(kù)和MapReduce并行計(jì)算的優(yōu)點(diǎn)。HBase實(shí)現(xiàn)了TableInputFormatBase類,該類提供了對(duì)表數(shù)據(jù)的大部分操作,其子類TableInputFormat則提供了完整的實(shí)現(xiàn),用于處理表數(shù)據(jù)并生成鍵值對(duì)。TableInputFormat類將數(shù)據(jù)表按照Region分割成split,即有多少個(gè)Regions就有多個(gè)splits,然后將Region按行鍵分成<key,value>對(duì),key值對(duì)應(yīng)行鍵,value值為該行所包含的數(shù)據(jù)。HBase實(shí)現(xiàn)了MapReduce計(jì)算框架對(duì)應(yīng)的TableMapper類和TableReducer類。HBase實(shí)現(xiàn)的TableOutputFormat將輸出的<key,value>對(duì)寫到指定的HBase表中。HBase與MapReduce將MapReduce和HBase結(jié)合起來(lái)的WordCount程序,從指定文件中搜集數(shù)據(jù),進(jìn)行統(tǒng)計(jì)計(jì)算,最后將結(jié)果存儲(chǔ)到HBase中。publicstaticclasshBaseReducerextendsTableReducer<Text,IntWritable,NullWritable>{ protectedvoidreduce(Textkey,Iterable<IntWritable>values,Contextcontext)throwsIOException,InterruptedException{intsum=0; for(IntWritablevalue:values){ sum+=value.get(); } Putput=newPut(key.toString().getBytes());

put.addColumn("content".getBytes(),"count".getBytes(), String.valueOf(sum).getBytes());

context.write(NullWritable.get(),put); }}HBase的Bulkload如果HDFS中有海量數(shù)據(jù)要導(dǎo)入HBase,通常MapReduce在寫Hbase時(shí)使用的是TableOutputFormat

方式,在reduce中直接生成put對(duì)象寫入hbase,該方式在大數(shù)據(jù)量寫入時(shí)效率低下,并對(duì)HBase節(jié)點(diǎn)的穩(wěn)定性造成一定的影響。HBase支持bulkload的入庫(kù)方式,它是利用hbase的數(shù)據(jù)信息按照特定格式存儲(chǔ)在hdfs內(nèi)這一原理,直接在HDFS中生成持久化的HFile數(shù)據(jù)格式文件,然后上傳至合適位置,即完成巨量數(shù)據(jù)快速入庫(kù)的辦法。配合mapreduce完成,高效便捷,而且不占用region資源,增添負(fù)載,在大數(shù)據(jù)量寫入時(shí)能極大的提高寫入效率,并降低對(duì)HBase節(jié)點(diǎn)的寫入壓力。

HBase的BulkloadMap中主要代碼:publicstaticclassbulkMapperextendsMapper<LongWritable,Text,ImmutableBytesWritable,Put>{ protectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{ ... ImmutableBytesWritablerowKeyWritable=new ImmutableBytesWritable(rowKey); Putput=newPut(rowKey); ... context.write(rowKeyWritable,put); }}HBase的BulkloadMain中主要代碼:…job.setMapperClass(bulkMapper.class); job.setReducerClass(PutSortReducer.class); job.setMapOutputKeyClass(ImmutableBytesWritable.class);job.setMapOutputValueClass(Put.class);job.setOutputFormatClass(HFileOutputFormat2.class);...HBase的BulkloadConnectionconn=ConnectionFactory.createConnection(conf);TableName

tn=TableName.valueOf("test");HTabletable=(HTable)conn.getTable(tn);

RegionLocator

regionLocator=conn.getRegionLocator(tn);HFileOutputFormat2.configureIncrementalLoad(job,table,regionLocator);job.waitForCompletion(true);LoadIncrementalHFilesloader=new

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論