版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章Hadoop綜合應(yīng)用預(yù)習(xí)檢查請(qǐng)說(shuō)出TableMapper與Mapper的區(qū)別請(qǐng)說(shuō)出TableReducer與Reducer的區(qū)別如何解決客戶端和任務(wù)的第三方依賴庫(kù)問(wèn)題?在Job運(yùn)行期間,共享全局變量有哪些方法?集中測(cè)試2/41回顧與作業(yè)點(diǎn)評(píng)簡(jiǎn)述HMaster、HRegionServer、HRegion間的關(guān)系描述HBase概念視圖的結(jié)構(gòu)HBaseShell常用操作有哪些?HBase數(shù)據(jù)存儲(chǔ)管理API有哪些?點(diǎn)評(píng)作業(yè)的提交情況和共性問(wèn)題回顧作業(yè)點(diǎn)評(píng)3/41本章任務(wù)使用HDFS+MapReduce+HBase實(shí)現(xiàn)音樂排行榜4/41本章目標(biāo)理解HBase和MapReduce的集成使用掌握快速導(dǎo)入數(shù)據(jù)到HBase掌握MapReduce接收HBase數(shù)據(jù)輸入掌握MapReduce輸出到HBase5/41MapReduce與HBase集成策略使用MapReduce計(jì)算使用HBase存儲(chǔ)、查詢數(shù)據(jù)優(yōu)勢(shì)對(duì)HBase中的數(shù)據(jù)進(jìn)行非實(shí)時(shí)性的統(tǒng)計(jì)分析對(duì)HBase中的數(shù)據(jù)進(jìn)行分布式計(jì)算在多個(gè)MapReduce間使用HBase作為存儲(chǔ)媒介方法使用HBaseMapReduceAPI6/41HBaseMapReduceAPI簡(jiǎn)介位于HBase提供的“hbase-server-1.0.2.jar”繼承自HadoopMapReduceAPI需在Hadoop集群中配置HBase的環(huán)境復(fù)制hbase-site.xml到$HADOOP_HOME/etc/hadoop編輯$HADOOP_HOME/etc/hadoop/hadoop-env.shexportHADOOP_CLASSPATH=$HADOOP_CLASSPATH:~/hbase-1.0.2/lib/*HBaseMapReduceAPIHadoopMapReduceAPIorg.apache.hadoop.hbase.mapreduce.TableMapperorg.apache.hadoop.mapreduce.Mapperorg.apache.hadoop.hbase.mapreduce.TableReducerorg.apache.hadoop.mapreduce.Reducerorg.apache.hadoop.hbase.mapreduce.TableInputFormatorg.apache.hadoop.mapreduce.InputFormatorg.apache.hadoop.hbase.mapreduce.TableOutputFormatorg.apache.hadoop.mapreduce.OutputFormat演示HBase在Hadoop中的環(huán)境配置7/41HBaseMapReduce應(yīng)用示例“hbase-server-1.0.2.jar”提供的應(yīng)用rowcounterimporttsvcompletebulkload示例hadoopjar~/hbase-1.0.2/lib/hbase-server-1.0.2.jarrowcountermusic示例hadoopjar~/hbase-1.0.2/lib/hbase-server-1.0.2.jarimporttsv–Dimporttsv.bulk.output=tmp–Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:singer,info:gender,info:ryghme,info:terminalmusic/input2/music2示例hadoopjar~/hbase-1.0.2/lib/hbase-server-1.0.2.jarcompletebulkloadtmpmusicHBase表名指定生成的HFile目錄,“/user/hduser/tmp”“/user/hduser/tmp”和importtsv結(jié)合使用實(shí)現(xiàn)批量數(shù)據(jù)導(dǎo)入HDFS目錄,表示數(shù)據(jù)來(lái)源演示行數(shù)統(tǒng)計(jì)和批量導(dǎo)入8/41學(xué)員操作——HBase批量導(dǎo)入需求說(shuō)明獲取素材music1.txt、music2.txt、music3.txt使用批量導(dǎo)入工具導(dǎo)入音樂播放記錄,其中表名:music行鍵格式:ID_NAME_DATE列族:info列鍵:info:name,info:singer,info:gender,info:ryghme,info:terminal實(shí)現(xiàn)思路將hbase-site.xml復(fù)制到Hadoop配置目錄將HBase類庫(kù)中的jar文件添加到$HADOOP_CLASSPATH環(huán)境變量中運(yùn)行hbase-server-1.0.2.jar中的importtsv和completebulkload作業(yè)導(dǎo)入數(shù)據(jù)完成時(shí)間:20分鐘練習(xí)9/41常見問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解共性問(wèn)題集中講解10/41編寫HBaseMapReduce依賴的jar文件HBase
jar文件MapReducejar文件MapReduce編程模型MapperReducerJob涉及到的類TableMapperTableInputFormatTableOutputFormatTableReducerTableMapReduceUtil11/41類定義為什么TableMapper不提供輸入鍵/值類型?TableInputFormat繼承InputFormat<ImmutableBytesWritable,Result>讀取HBase行數(shù)據(jù)并封裝為<ImmutableBytesWritable,Result>并傳遞給TableMapperpublicabstractclassTableMapper<KEYOUT,VALUEOUT>extends
Mapper<ImmutableBytesWritable,Result,KEYOUT,VALUEOUT>{}輸入鍵類型,行鍵的字節(jié)數(shù)組輸入值類型,行鍵對(duì)應(yīng)的列數(shù)據(jù)思考提示輸出鍵/值類型TableMapper3-112/41自定義TableMapperstaticclassMyMapperextendsTableMapper<Text,Text>{
protectedvoidmap(ImmutableBytesWritablekey,Resultvalue, Contextcontext)throwsIOException,InterruptedException{ List<Cell>cells=value.listCells();
for(Cellcell:cells){
StringoutValue=String.format("RowKey:%sFamily:%sQualifier:%scellValue:%s", Bytes.toString(key.get()),//行鍵
Bytes.toString(CellUtil.cloneFamily(cell)),//列族
Bytes.toString(CellUtil.cloneQualifier(cell)),//列修飾符
Bytes.toString(CellUtil.cloneValue(cell))//單元格值
);
context.write(newText(CellUtil.getCellKeyAsString(cell)),
newText(outValue));
}
}}示例TableMapper3-213/41運(yùn)行TableMapperConfigurationconf=HBaseConfiguration.create();conf.set(TableInputFormat.INPUT_TABLE,"music");conf.set(TableInputFormat.SCAN_COLUMNS,"info:nameinfo:gender");Jobjob=Job.getInstance(conf,"hbase-mapreduce-api");//MapReduce程序作業(yè)基本配置job.setJarByClass(TableMapperDemo.class);//通過(guò)驅(qū)動(dòng)類的jar文件查找job.setInputFormatClass(TableInputFormat.class);//輸入格式j(luò)ob.setMapperClass(MyMapper.class);job.setMapOutputKeyClass(Text.class);//Mapper輸出鍵類型job.setMapOutputValueClass(Text.class);//Mapper輸出值類型……job.getConfiguration().set("tmpjars",StringUtils.join(libjars,','));……示例演示示例1:使用TableMapper處理數(shù)據(jù)指定被讀取的表指定被掃描的列解決任務(wù)對(duì)jar文件的依賴TableMapper3-314/41TableInputFormat常用常量設(shè)置TableInputFormat與HBaseScan對(duì)象常量值在任務(wù)運(yùn)行時(shí)初始化為Scan的相關(guān)參數(shù)常量說(shuō)明INPUT_TABLE指定表名SCAN_COLUMN_FAMILY指定列族SCAN_COLUMNS指定列,如:”info:nameinfo:gender”SCAN_ROW_START指定掃描行鍵范圍的起始行SCAN_ROW_STOP指定掃描行鍵范圍的結(jié)束行SCAN_TIMERANGE_START指定時(shí)間范圍的起始時(shí)間SCAN_TIMERANGE_END指定時(shí)間范圍的結(jié)束時(shí)間15/41第三方j(luò)ar文件依賴3-1客戶端執(zhí)行階段類路徑作業(yè)jar文件作業(yè)jar文件lib和classes$HADOOP_CLASSPATH客戶端執(zhí)行階段16/41第三方j(luò)ar文件依賴3-2任務(wù)執(zhí)行階段類路徑Hadoop執(zhí)行基本MapReduce程序的基礎(chǔ)類庫(kù)路徑作業(yè)jar文件作業(yè)jar文件中的lib和classes由-libjars選項(xiàng)指定的jar文件分布式緩存(DistributedCache)中的所有文件任務(wù)執(zhí)行階段注意不是$HADOOP_CLASSPATH17/41解決方案將依賴庫(kù)追加至客戶端$HADOOP_CLASSPATH中通過(guò)-libjars選項(xiàng)將依賴庫(kù)添加到任務(wù)的類路徑第三方j(luò)ar文件依賴3-3提示可使用GenericOptionsParser將“-libjars”選項(xiàng)值賦給Configuration的“tmpjars”屬性!18/41TableMapReduceUtil簡(jiǎn)化Job配置的輔助工具類簡(jiǎn)化第三方依賴處理addDependencyJars(Configuration,Class<?>...)addDependencyJars(Job)簡(jiǎn)化Job初始化initTableMapperJob()initTableReducerJob()演示:簡(jiǎn)化Job配置Scanscan=newScan();scan.addColumn(Bytes.toBytes("info"),Bytes.toBytes("name"));scan.addColumn(Bytes.toBytes("info"),Bytes.toBytes("gender"));TableMapReduceUtil.initTableMapperJob("music",scan,MyMapper.class, Text.class,Text.class,job);示例集成了addDependencyJars(job)19/41HBase輸出格式TableMapper是否支持輸出到HBase呢?TableOutputFormat繼承OutputFormat<KEY,Mutation>輸出鍵可為任意類型,而輸出值只能是Mutation使用要點(diǎn)指定TableMapper的KEYOUT、VALUEOUT指定Job的輸出格式為TableOutputFormat設(shè)置輸出表:TableOutputFormat.OUTPUT_TABLE問(wèn)題提示必須是Mutation類型演示示例2:輸出歌曲清單Put、Get、Delete操作的父類20/41學(xué)員操作——使用TableMapper需求說(shuō)明掃描music表的列info:name和info:terminal,并分別輸出到HDFS文件和HBase中,HDFS文件:
HBase表名:namelist,列族:details實(shí)現(xiàn)思路創(chuàng)建MapReduce工程添加HBase依賴庫(kù)編寫客戶端程序編寫map任務(wù)處理程序配置作業(yè)運(yùn)行作業(yè)指導(dǎo)提示完成時(shí)間:25分鐘RowKey:[行鍵]
Family:[列族] Qualifier:[列修飾符]Value:[單元值]21/41常見問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解共性問(wèn)題集中講解22/41TableReducer3-1類定義TableReducer的輸出值類型VALUEOUT是什么?TableOutputFormat的輸出值類型是MutationTableReducer以TableOutputFormat作為輸出格式TableReducer的處理結(jié)果能輸出到HDFS嗎?publicabstractclassTableReducer<KEYIN,VALUEIN,KEYOUT>extendsReducer<KEYIN,VALUEIN,KEYOUT,Mutation>{}問(wèn)題提示思考23/41自定義TableReducerTableReducer3-2staticclassMyReducerextendsTableReducer<Text,IntWritable,Text>{
@Override protectedvoidreduce(Textkey,Iterable<IntWritable>values, Contextcontext)throwsIOException,InterruptedException{ intplayCount=0; for(IntWritablenum:values){ playCount+=num.get(); } //為Put操作指定行鍵
Putput=newPut(Bytes.toBytes(key.toString())); //為Put操作指定列和值
put.addColumn(Bytes.toBytes("details"),Bytes.toBytes("rank"), Bytes.toBytes(playCount)); context.write(key,put); }}示例接收來(lái)自Mapper的輸出鍵/值類型輸出鍵類型輸出值類型24/41運(yùn)行TableReducerTableReducer3-3Configurationconf=HBaseConfiguration.create();GenericOptionsParsergop=newGenericOptionsParser(conf,args);Jobjob=Job.getInstance(conf,"top-music");job.setJarByClass(TableReducerDemo.class); job.setNumReduceTasks(2);Scanscan=newScan();scan.addColumn(Bytes.toBytes("info"),Bytes.toBytes("name"));TableMapReduceUtil.initTableMapperJob("music",scan,MyMapper.class, Text.class,IntWritable.class,job);TableMapReduceUtil.initTableReducerJob("namelist",MyReducer.class,job);示例演示示例3:使用TableReducer25/41學(xué)員操作——使用TableReducer需求說(shuō)明使用TableMapper掃描“music”表對(duì)每一次播放記錄中的歌曲名稱進(jìn)行計(jì)數(shù)將計(jì)數(shù)結(jié)果輸出到TableReducer進(jìn)行匯總將匯總結(jié)果輸出到表“namelist”實(shí)現(xiàn)思路編寫map任務(wù)程序編寫reduce任務(wù)程序配置作業(yè)運(yùn)行客戶端指導(dǎo)提示完成時(shí)間:25分鐘26/41常見問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解共性問(wèn)題集中講解27/41小結(jié)比較之前的MapReduce實(shí)現(xiàn)步驟map處理使用TableMapperreduce處理使用TableReducerJob配置使用TableMapReduceUtil工具類初始化作業(yè)輸入/輸出格式輸入格式:TableInputFormat輸出格式:TableOutputFormat28/41實(shí)現(xiàn)音樂排行榜3-1運(yùn)行流程29/41實(shí)現(xiàn)音樂排行榜3-2HBase表結(jié)構(gòu)行鍵時(shí)間戳列族(info)列健值1_song1_2016-1-1112:03:01t5info:namesong1t4info:singersinger1t3info:gendermant2info:rythmeslowt1info:terminalpc……行鍵時(shí)間戳列族(details)列健值song1t2details:rank3song2t1details:rank5……music表namelist表30/41實(shí)現(xiàn)音樂排行榜3-3程序?qū)崿F(xiàn)統(tǒng)計(jì)作業(yè)ScanMusicMapper
:掃描music表每一行中的列info:nameIntNumReducer
:匯總單曲播放總次數(shù)并輸出到namelist排序作業(yè)ScanMusicNameMapper
:掃描全部歌曲名稱,獲得單曲播放次數(shù),并輸出HDFS文件IntWritableDecreaseingComparator
:實(shí)現(xiàn)降序顯示結(jié)果showResult():讀取HDFS文件map處理時(shí)將鍵和值互換,并使用默認(rèn)Reducer輸出演示示例4:音樂排行榜31/41HBase表設(shè)計(jì)優(yōu)化列族數(shù)量越少越好避免使用時(shí)序或單調(diào)遞增(遞減)的行鍵盡量最小化行鍵和列族的大小版本的數(shù)量不要設(shè)置過(guò)大32/41全局共享數(shù)據(jù)的方法讀寫HDFS文件占用較多系統(tǒng)資源配置Job屬性適合少量的共享數(shù)據(jù)使用分布式緩存適合大量的共享數(shù)據(jù),但是只讀33/41使用分布式緩存復(fù)制文件至HDFS配置作業(yè)使用緩存文件Configurationconf=newConfiguration();Jobjob=Job.getInstance(conf,
“job1”);job.addCacheFile(newURI(“/input2/file/file1.txt#myfile”));job.addFileToClassPath(newPath(“/input2/file/a.jar”));示例publicstaticclassMyMapperextendsMapper<Object,Text,Text,IntWritable>{ publicvoidmap
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《高原疾病防治知識(shí)》課件
- 2025年分期付款化妝品購(gòu)買合同
- 2025年P(guān)PP項(xiàng)目合作物資保障協(xié)議
- 二零二五年海洋工程建設(shè)項(xiàng)目施工合同6篇
- 二零二五年度PVC管材綠色制造技術(shù)合作合同3篇
- 2025年度新能源發(fā)電項(xiàng)目租賃合同3篇
- 2025版學(xué)校圖書館古籍保護(hù)與展示工程合同3篇
- 二零二五年度航空航天器研發(fā)與測(cè)試合同4篇
- 2025年度住宅小區(qū)物業(yè)管理權(quán)轉(zhuǎn)讓與社區(qū)安全防范協(xié)議
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)經(jīng)營(yíng)授權(quán)協(xié)議
- 2024年云南省中考數(shù)學(xué)試題含答案解析
- 國(guó)家中醫(yī)藥管理局發(fā)布的406種中醫(yī)優(yōu)勢(shì)病種診療方案和臨床路徑目錄
- 2024年全國(guó)甲卷高考化學(xué)試卷(真題+答案)
- 汽車修理廠管理方案
- 人教版小學(xué)數(shù)學(xué)一年級(jí)上冊(cè)小學(xué)生口算天天練
- (正式版)JBT 5300-2024 工業(yè)用閥門材料 選用指南
- 三年級(jí)數(shù)學(xué)添括號(hào)去括號(hào)加減簡(jiǎn)便計(jì)算練習(xí)400道及答案
- 蘇教版五年級(jí)上冊(cè)數(shù)學(xué)簡(jiǎn)便計(jì)算300題及答案
- 澳洲牛肉行業(yè)分析
- 計(jì)算機(jī)江蘇對(duì)口單招文化綜合理論試卷
- 成人學(xué)士學(xué)位英語(yǔ)單詞(史上全面)
評(píng)論
0/150
提交評(píng)論