檸檬學(xué)院:Hadoop及Mapreduce入門(mén)_第1頁(yè)
檸檬學(xué)院:Hadoop及Mapreduce入門(mén)_第2頁(yè)
檸檬學(xué)院:Hadoop及Mapreduce入門(mén)_第3頁(yè)
檸檬學(xué)院:Hadoop及Mapreduce入門(mén)_第4頁(yè)
檸檬學(xué)院:Hadoop及Mapreduce入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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)介

Hadoop及Mapreduce入門(mén)檸檬學(xué)院大數(shù)據(jù)培訓(xùn)在線教育OutlinesHadoopOverviewHDFSMap-reduceProgrammingParadigmHadoopMap-reduceJobSchedulerResourcesHadoop,Why?數(shù)據(jù)太多了,需要能存儲(chǔ)、快速分析Pb級(jí)數(shù)據(jù)集的平臺(tái)單機(jī)的存儲(chǔ)、IO、CPU有限,需要可擴(kuò)展的集群?jiǎn)吸c(diǎn)故障問(wèn)題 –單點(diǎn)故障是正?,F(xiàn)象,但需要處理這種異常 –節(jié)點(diǎn)有增有減需要好用的、可靠的基礎(chǔ)平臺(tái)來(lái)解決,最好是開(kāi)源的HadoopHistoryDec2004–GoogleGFSpaperpublishedJuly2005–NutchusesMapReduceFeb2006–BecomesLucenesubprojectApr2007–Yahoo!on1000-nodeclusterApr2008–FastestQuickSorton1TBJan2008–AnApacheTopLevelProjectJul2008–A4000nodetestclusterHadoop-relatedprojectsNutch:網(wǎng)頁(yè)搜索軟件,不只是爬蟲(chóng)Avro:數(shù)據(jù)序列化系統(tǒng)Chukwa:用于管理大規(guī)模分布式集群的數(shù)據(jù)收集系統(tǒng)ZooKeeper:用于分布式應(yīng)用的高性能協(xié)同服務(wù)Hbase:類似于BigTable的,key-value數(shù)據(jù)庫(kù)系統(tǒng)PIG:并行計(jì)算的一種高級(jí)語(yǔ)言Hive:數(shù)據(jù)倉(cāng)庫(kù)Mahout:分布式機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的LibHama:基于BSP的超大規(guī)??茖W(xué)計(jì)算框架WhoUsesHadoopAmazonAdobeAdknowledge:

behavioraltargeting,clickstreamanalyticsAlibabaBaidu:搜索日志分析;每周處理3000TB數(shù)據(jù)BixoLabs:webminingDatagraph:處理RDF數(shù)據(jù),存儲(chǔ)、索引EBay

:532nodes,搜索優(yōu)化和研究ETHZurichSystemsGroup:教學(xué)《MassivelyParallelDataAnalysiswithMapReduce》Facebook

:1100nodes,12PB;300nodes,3PBFOX:3個(gè)Cluster用于日志分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)Freestylers:構(gòu)建基于圖片的推薦系統(tǒng)GoogleGruter.Corp:索引、Link分析、數(shù)據(jù)挖掘Hulu:HbasehostingIBMKrugle

:源代碼搜索Last.fm:圖表計(jì)算、A/B測(cè)試,userprofile分析,cookie級(jí)的報(bào)表處理LinebergerComprehensiveCancerCenter:癌癥相關(guān)的研究,使用SeqWareLinkedIn:這人你可能認(rèn)識(shí)TheNewYorkTimesPARC:分析Wikipedia里的沖突Powerset/MicrosoftPressflip:個(gè)性化搜索,訓(xùn)練SVM模型Yahoo?。?000nodes(2*4cpuboxesw4*1TBdisk&16GBRAM)Moreon/hadoop/PoweredBy

GoalsofHDFS大數(shù)據(jù)集存儲(chǔ) –10Knodes,100millionfiles,10PB

應(yīng)付硬件故障 –用文件多副本應(yīng)付故障問(wèn)題 –故障自動(dòng)檢測(cè)和恢復(fù)更適合批量處理 –搬移計(jì)算比搬移數(shù)據(jù)更廉價(jià) –數(shù)據(jù)一次寫(xiě)入,多次讀取 –更注重?cái)?shù)據(jù)讀取的高吞吐量,而不是低延時(shí)適應(yīng)復(fù)雜的硬件及軟件平臺(tái)TheFileSystem一個(gè)集群只有一個(gè)Namespace跟Unix的文件系統(tǒng)Namespace很相似,不過(guò)不支持Hardlink、Softlink文件分塊存儲(chǔ)一般一塊大小為64M,可配置每塊會(huì)被復(fù)制在多個(gè)DataNode上支持回收站當(dāng)一個(gè)文件被刪除時(shí)會(huì)先放入用戶下的回收站回收站會(huì)被定期清除恢復(fù)的方式是將文件從回收站移出NameNodeMetadataMeta-data存在內(nèi)存中 –整個(gè)Meta-data放入主內(nèi)存 –Nodemandpagingofmeta-dataMeta-data記錄了 –文件列表信息 –每個(gè)文件的塊列表 –每個(gè)塊對(duì)應(yīng)的DataNode –文件屬性,如創(chuàng)建時(shí)間、創(chuàng)建者、幾份副本等TransactionLog(EditLog) –記錄了文件系統(tǒng)的每個(gè)變化,如創(chuàng)建文件、刪除文件、修改文件的副本數(shù)等 –EditLog會(huì)被合并為FsImage并存入磁盤(pán)Meta-data磁盤(pán)故障 –NameNode可以維護(hù)多份數(shù)據(jù)DataNodeABlockServer –將數(shù)據(jù)存儲(chǔ)本機(jī)文件系統(tǒng)(e.g.ext3) –存儲(chǔ)數(shù)據(jù)塊的Meta-data(e.g.CRC,ID)匯報(bào) –啟動(dòng)時(shí)向NameNode注冊(cè)本地存儲(chǔ)的文件塊 –定期向NameNode報(bào)告本機(jī)存活(心跳)數(shù)據(jù)輸送 –接收來(lái)自客戶端的寫(xiě)數(shù)據(jù) –向客戶端發(fā)送數(shù)據(jù) –將數(shù)據(jù)傳輸?shù)街付ǖ腄ataNodesBlockReplicaPlacement機(jī)架感知NameNode能感知機(jī)架,選擇較優(yōu)的方式假設(shè)有3份或以上,目前的策略是一份放在本地節(jié)點(diǎn)上第二份放在另外一個(gè)機(jī)架的節(jié)點(diǎn)上第三份放在跟第二份同機(jī)架的不同節(jié)點(diǎn)上其他的隨機(jī)放置客戶端從最近的塊讀取DataCorrectness用CRC32來(lái)做數(shù)據(jù)校驗(yàn) –UseCRC32文件寫(xiě)入 –由客戶端負(fù)責(zé)計(jì)算CRC –checksum存放在DataNode文件讀取 –客戶端從DataNode讀取數(shù)據(jù)和checksum –由客戶端校驗(yàn),如果不通過(guò),則客戶端嘗試從其他的副本讀取數(shù)據(jù)FSShellFShadoopfs-mkdir/foodirhadoopfs-rmr/foodirhadoopfs-cat/foodir/myfile.txthadoopfs-tail/foodir/myfile.txtChmod,chown,put,mv,cp,du,dus更多命令請(qǐng)運(yùn)行hadoopfs–help獲取DFSAdminSafemode,upgradeProgress,refreshNodes,…fsck文件系統(tǒng)檢查Balancer集群均衡WebUIMap-reduceProgrammingParadigmMap-reduceProgrammingParadigmMap-reduce是一種適合分布式計(jì)算的編程范式input|map|shuffle|reduce|output最簡(jiǎn)單的實(shí)現(xiàn)方式cat*|grep‘java’|sort|uniq-c|cat>file實(shí)現(xiàn)這種編程范式的有GoogleHadoopOracleTeradata……HadoopMap/Reduce(input)<k1,v1>->

map

-><k2,v2>->

combine*

-><k2,v2>->reduce

-><k3,v3>(output)combine過(guò)程可能沒(méi)有,也可能有多次Mapperpublic

classMapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>{

/***Calledonceatthestartofthetask.*/

protected

voidsetup(Contextcontext)throwsIOException,InterruptedException{}

protected

voidmap(KEYINkey,VALUEINvalue,Contextcontext)throwsIOException,InterruptedException{context.write((KEYOUT)key,(VALUEOUT)value);}

/***Calledonceattheendofthetask.*/

protected

voidcleanup(Contextcontext)throwsIOException,InterruptedException{}}Reducerpublic

classReducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT>{

/***Calledonceatthestartofthetask.*/

protected

voidsetup(Contextcontext)throwsIOException,InterruptedException{}

protected

voidreduce(KEYINkey,Iterable<VALUEIN>values,Contextcontext)throwsIOException,InterruptedException{

for(VALUEINvalue:values){context.write((KEYOUT)key,(VALUEOUT)value);

}

}

/***Calledonceattheendofthetask.*/

protected

voidcleanup(Contextcontext)throwsIOException,InterruptedException{}}JobSetup

public

static

voidmain(String[]args)throwsException{String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs();

if(otherArgs.length!=2){System.err.println("Usage:wordcount<in><out>");System.exit(2);

}Jobjob=newJob(newConfiguration(),"wordcount");job.setJarByClass(WordCount.class);

//設(shè)置輸入job.setInputFormatClass(TextInputFormat.class);FileInputFormat.addInputPath(job,newPath(otherArgs[0]));

//Mapjob.setMapperClass(TokenizerMapper.class);

//Combinejob.setCombinerClass(IntSumReducer.class);

//Reducejob.setReducerClass(IntSumReducer.class);

job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);

//設(shè)置輸出FileOutputFormat.setOutputPath(job,newPath(otherArgs[1]));

//提交Job并執(zhí)行System.exit(job.waitForCompletion(true)?0:1);

}InjectPointsInputjob.setInputFormatClass()SplitRecordReaderMapjob.setMapperClass()Combine*job.setCombinerClass()Shufflingjob.setPartitionerClass()Sortjob.setSortComparatorClass()Groupingjob.setGroupingComparatorClass()Reducejob.setReducerClass()Outputjob.setOutputFormatClass()JobTracker&TaskTrackerJob&Task一個(gè)Job會(huì)被分成多個(gè)Task執(zhí)行一個(gè)Task對(duì)應(yīng)一個(gè)Map或者ReduceJobTracker運(yùn)行在Master上,管理和跟蹤每個(gè)Job收集Task的信息狀態(tài),并匯總重新調(diào)度失敗的任務(wù)TaskTracker向JobTracker匯報(bào)狀態(tài)(心跳)運(yùn)行在每個(gè)計(jì)算節(jié)點(diǎn)上,管理和跟蹤每個(gè)Task收集task的信息,并提供給JobTrackerFIFO先到先得,排隊(duì)執(zhí)行FairSchedule

溫馨提示

  • 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)論