本文是根據(jù)網(wǎng)絡(luò)視頻學(xué)習(xí)資料總結(jié)抢肛,不喜勿噴@桥ァ!捡絮!
原語:
?“相同”的key為一組熬芜,調(diào)用一次reduce方法,方法內(nèi)迭代這一組數(shù)據(jù)進(jìn)行計(jì)算福稳。
基本的數(shù)據(jù)流:?輸入(格式化k,v)數(shù)據(jù)集->map映射成一個(gè)中間數(shù)據(jù)集(k,v)->reduce
為什么叫MapReduce:MapTask & ReduceTask
map階段: 一個(gè)block對應(yīng)1或多個(gè)split涎拉,每個(gè)split對應(yīng)一個(gè)maptask。split把文件切分成多個(gè)切片的圆,每個(gè)切片對應(yīng)一個(gè)map任務(wù)進(jìn)行排序鼓拧,計(jì)算,形成<key,value,partition>形式越妈。
reduce階段:將上階段map的中間數(shù)據(jù)集進(jìn)行shuffle季俩,然后merge,根據(jù)原語調(diào)用一次reduce任務(wù)梅掠,把最后的結(jié)果進(jìn)行輸出酌住,如圖二所示店归。
下面是一個(gè)案例:
理解:
Map階段:讀懂?dāng)?shù)據(jù);映射成KV模式酪我;并行分布式消痛;計(jì)算向數(shù)據(jù)移動(dòng)。
Reduce階段:數(shù)據(jù)全量/分量加工都哭;Reduce中可以包含不同的key秩伞;相同的Key匯聚到一個(gè)Reduce中;相同的Key調(diào)用一次reduce方法欺矫。
運(yùn)行架構(gòu):
圖5是Hadoop1.x的計(jì)算運(yùn)行框架纱新,任務(wù)資源調(diào)度和分配由job Tracker進(jìn)行管理,如下圖:
JobTracker負(fù)責(zé)將計(jì)算上下文汇陆,計(jì)算程序(Map task)發(fā)送到DataNode上怒炸。計(jì)算結(jié)果由reduce task程序處理,匯總得到最后的結(jié)果毡代。如下圖:
總結(jié):
Hadoop2.x以后使用yarn框架:
Clients與Resource Manager交互阅羹,Clients提交作業(yè)到計(jì)算框架。RM與NM(Node Manager)保持心跳教寂,當(dāng)RM收到任務(wù)使捏鱼,會(huì)隨機(jī)挑一個(gè)不忙的NM創(chuàng)建App Master,負(fù)責(zé)任務(wù)的調(diào)度酪耕,App向RM發(fā)送資源請求导梆,等資源審核通過,會(huì)在其他的NM上創(chuàng)建Container進(jìn)行實(shí)際的計(jì)算的任務(wù)迂烁,不向App master匯報(bào)自己的任務(wù)狀態(tài)看尼。當(dāng)Container出現(xiàn)故障時(shí),App master會(huì)定時(shí)檢測出來盟步,并創(chuàng)建新的Container藏斩。
一般RM的端口號為:8088
其中Executor就是為了啟動(dòng)APP與NM的連接,使APP與NM進(jìn)行交互却盘,實(shí)現(xiàn)任務(wù)調(diào)度狰域。