大数据常用组件流程
MR
1.MapTask調(diào)用Inputformat方法創(chuàng)建一個(gè)RecordReader
RecordReader以此調(diào)用nextkeyvalue getcurrentkey getcurrentvalue方法
獲取<K,V>傳遞給Mapper類,每讀取一行數(shù)據(jù)就會(huì)調(diào)用一次map方法,然后將
通過(guò)邏輯處理后的<K,V>輸出到OutputCollector
2.Collector將數(shù)據(jù)緩存到環(huán)形緩沖區(qū)中,存滿80%的數(shù)據(jù)后會(huì)溢出到溢出器
spiller中,然后再溢出器中進(jìn)行分區(qū)和快速排序,將分區(qū)后的數(shù)據(jù)生成
幾個(gè)文件(多次溢出生成多個(gè)文件)
3.在Merge中將這幾個(gè)文件進(jìn)行歸并排序后生成一個(gè)(局部有序–>分區(qū)內(nèi)有序)文件(一個(gè)MapTask對(duì)應(yīng)一個(gè)大文件)
4.一個(gè)Reduce去所有MapTask的輸出文件中拉去相同分區(qū)的數(shù)據(jù)然后通過(guò)Merger進(jìn)行歸并排序
(ReduceTask數(shù)量可以通過(guò)手動(dòng)設(shè)置) 第二個(gè)再去相應(yīng)分區(qū)拉取
5.ReduceTask從合并后的文件中讀取 一個(gè)key傳遞給reduce方法,同時(shí)傳遞一個(gè)value迭代器
value迭代器的hasnext方法會(huì)判斷文件中的下一個(gè)key
是否還是已經(jīng)傳入的key,如果是,則next可以返回下一個(gè)value 否則,hasnext直接返回false,本次reduce結(jié)束
6.Reducer中的reduce方法將輸出的結(jié)果導(dǎo)入到外部文件系統(tǒng)
HBase:路由機(jī)制
1:到zookeeper上查找root表的位置
2:跟root表交互,查找meta表所在的位置
3:查找meta,確定rowkey所在的region以及regionserver的位置
4:跟數(shù)據(jù)所在的regionserver進(jìn)行交互
5:regionserver轉(zhuǎn)發(fā)io請(qǐng)求給region
6:查找memstore,如果有則返回,若無(wú)到hdfs上找
7:與hdfs進(jìn)行交互讀取數(shù)據(jù)
8:返回結(jié)果,首先會(huì)寫memstore
9:返回結(jié)果到客戶端
YRAN:job提交流程
1.客戶端提交作業(yè)給resourcemanager
2.resourcemanager將信息加入到等待隊(duì)列中并返回給客戶端jobid,存儲(chǔ)路徑(HDFS上的路徑)信息
3.客戶端將job.jar、job.xml、job.split、job.splitinfo包括切片信息等信息上傳到存儲(chǔ)路徑(HDFS上的路徑/)
4.客戶端通知resourcemanager可以啟動(dòng)job
5.resourcemanager將job加入到j(luò)ob隊(duì)列當(dāng)中,等待nodemanager領(lǐng)取job,將客戶端發(fā)出命令啟動(dòng)AppMaster,然后nodemanager啟動(dòng)container,job.jar、job.xml、job.split、job.splitinfo等信息下載到container內(nèi)
6.AppMaster計(jì)算資源,向resourcemanager請(qǐng)求maptask的資源(container啟動(dòng)maptask)
7.resourcemanager根據(jù)心跳信息分配資源(container),下載job.jar到container內(nèi),AppMaster啟動(dòng)maptask(yarnchild)
8.maptask執(zhí)行完成,通知AppMaster,然后釋放maptask資源,AppMaster向resourcemanager申請(qǐng)reducetask的資源
9.resourcemanager分配資源(container),下載job.jar到container內(nèi),AppMaster啟動(dòng)reducetask(yarnchild)
10.reducetask執(zhí)行完成,通知AppMaster,然后釋放reducetask資源。AppMaster通知resourcemanager。AppMaster釋放資源。
總結(jié)
- 上一篇: vue如何实现上传图片组件
- 下一篇: Hive中实现有序,有序concat拼接