日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Hadoop入門專家引導(dǎo)

本節(jié)和大家介紹一下Hadoop入門,主要內(nèi)容是Hadoop概論,Hadoop的基本概念等內(nèi)容,希望通過本節(jié)的介紹,大家對(duì)Hadoop有初步的認(rèn)識(shí)。下面是具體介紹。

創(chuàng)新互聯(lián)公司成都網(wǎng)站建設(shè)按需開發(fā),是成都營銷推廣公司,為成都發(fā)電機(jī)租賃提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺(tái)程序開發(fā)等。成都網(wǎng)站設(shè)計(jì)熱線:028-86922220

Hadoop入門

Hadoop是GoogleMapReduce的一個(gè)Java實(shí)現(xiàn)。MapReduce是一種簡(jiǎn)化的分布式編程模式,讓程序自動(dòng)分布到一個(gè)由普通機(jī)器組成的超大集群上并發(fā)執(zhí)行。就如同java程序員可以不考慮內(nèi)存泄露一樣,MapReduce的run-time系統(tǒng)會(huì)解決輸入數(shù)據(jù)的分布細(xì)節(jié),跨越機(jī)器集群的程序執(zhí)行調(diào)度,處理機(jī)器的失效,并且管理機(jī)器之間的通訊請(qǐng)求。這樣的模式允許程序員可以不需要有什么并發(fā)處理或者分布式系統(tǒng)的經(jīng)驗(yàn),就可以處理超大的分布式系統(tǒng)得資源。

一、概論
作為Hadoop程序員,他要做的事情就是:
1、定義Mapper,處理輸入的Key-Value對(duì),輸出中間結(jié)果。
2、定義Reducer,可選,對(duì)中間結(jié)果進(jìn)行規(guī)約,輸出最終結(jié)果。
3、定義InputFormat和OutputFormat,可選,InputFormat將每行輸入文件的內(nèi)容轉(zhuǎn)換為Java類供Mapper函數(shù)使用,不定義時(shí)默認(rèn)為String。
4、定義main函數(shù),在里面定義一個(gè)Job并運(yùn)行它。
然后的事情就交給系統(tǒng)了。Hadoop入門首先要了解一下基本概念。

1.基本概念:Hadoop的HDFS實(shí)現(xiàn)了google的GFS文件系統(tǒng),NameNode作為文件系統(tǒng)的負(fù)責(zé)調(diào)度運(yùn)行在master,DataNode運(yùn)行在每個(gè)機(jī)器上。同時(shí)Hadoop實(shí)現(xiàn)了Google的MapReduce,JobTracker作為MapReduce的總調(diào)度運(yùn)行在master,TaskTracker則運(yùn)行在每個(gè)機(jī)器上執(zhí)行Task。

2.main()函數(shù),創(chuàng)建JobConf,定義Mapper,Reducer,Input/OutputFormat和輸入輸出文件目錄,***把Job提交給JobTracker,等待Job結(jié)束。

3.JobTracker,創(chuàng)建一個(gè)InputFormat的實(shí)例,調(diào)用它的getSplits()方法,把輸入目錄的文件拆分成FileSplist作為Mappertask的輸入,生成Mappertask加入Queue。

4.TaskTracker向JobTracker索求下一個(gè)Map/Reduce。

MapperTask先從InputFormat創(chuàng)建RecordReader,循環(huán)讀入FileSplits的內(nèi)容生成Key與Value,傳給Mapper函數(shù),處理完后中間結(jié)果寫成SequenceFile.
ReducerTask從運(yùn)行Mapper的TaskTracker的Jetty上使用http協(xié)議獲取所需的中間內(nèi)容(33%),Sort/Merge后(66%),執(zhí)行Reducer函數(shù),***按照OutputFormat寫入結(jié)果目錄。
TaskTracker每10秒向JobTracker報(bào)告一次運(yùn)行情況,每完成一個(gè)Task10秒后,就會(huì)向JobTracker索求下一個(gè)Task。
Nutch項(xiàng)目的全部數(shù)據(jù)處理都構(gòu)建在Hadoop之上,詳見ScalableComputingwithHadoop。下面我們?cè)賮砜匆幌翲adoop入門介紹中程序員編寫的代碼。

二、程序員編寫的代碼
我們做一個(gè)簡(jiǎn)單的分布式的Grep,簡(jiǎn)單對(duì)輸入文件進(jìn)行逐行的正則匹配,如果符合就將該行打印到輸出文件。因?yàn)槭呛?jiǎn)單的全部輸出,所以我們只要寫Mapper函數(shù),不用寫Reducer函數(shù),也不用定義Input/OutputFormat。

 
 
 
  1. packagedemo.hadoop  
  2. publicclassHadoopGrep{  
  3. publicstaticclassRegMapperextendsMapReduceBaseimplementsMapper{  
  4. privatePatternpattern;  
  5. publicvoidconfigure(JobConfjob){  
  6. pattern=Pattern.compile(job.get("mapred.mapper.regex"));  
  7. }  
  8.  
  9. publicvoidmap(WritableComparablekey,Writablevalue,OutputCollectoroutput,Reporterreporter)  
  10. throwsIOException{  
  11. Stringtext=((Text)value).toString();  
  12. Matchermatcher=pattern.matcher(text);  
  13. if(matcher.find()){  
  14. output.collect(key,value);  
  15. }}  
  16. }  
  17. privateHadoopGrep(){  
  18. }//singleton  
  19.  
  20. publicstaticvoidmain(String[]args)throwsException{  
  21. JobConfgrepJob=newJobConf(HadoopGrep.class);  
  22. grepJob.setJobName("grep-search");  
  23. grepJob.set("mapred.mapper.regex",args[2]);  
  24. grepJob.setInputPath(newPath(args[0]));  
  25. grepJob.setOutputPath(newPath(args[1]));  
  26. grepJob.setMapperClass(RegMapper.class);  
  27. grepJob.setReducerClass(IdentityReducer.class);  
  28. JobClient.runJob(grepJob);  
  29. }  

RegMapper類的configure()函數(shù)接受由main函數(shù)傳入的查找字符串,map()函數(shù)進(jìn)行正則匹配,key是行數(shù),value是文件行的內(nèi)容,符合的文件行放入中間結(jié)果。
main()函數(shù)定義由命令行參數(shù)傳入的輸入輸出目錄和匹配字符串,Mapper函數(shù)為RegMapper類,Reduce函數(shù)是什么都不做,直接把中間結(jié)果輸出到最終結(jié)果的的IdentityReducer類,運(yùn)行Job。整個(gè)代碼非常簡(jiǎn)單,絲毫沒有分布式編程的任何細(xì)節(jié)。請(qǐng)期待下節(jié)關(guān)于Hadoop入門介紹。


標(biāo)題名稱:Hadoop入門專家引導(dǎo)
文章地址:http://www.5511xx.com/article/dhseijg.html