Hadoop–Task 相关
在MapReduce計算框架中,一個應(yīng)用程序被劃分為Map和Reduce兩個計算階段。他們分別由一個或多個Map Task 和Reduce Task組成。
?
IFile
??? IFile是一種支持行壓縮的存儲格式。為了減少MapTask寫入磁盤的數(shù)據(jù)量和跨網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,IFile支持按行壓縮數(shù)據(jù)記錄。當(dāng)前Hadoop提供了ZLib(默認(rèn)壓縮方式)、BZip2等壓縮算法。
??? IFile文件格式:<key-len, value-len, key, value>
排序
???? 排序是MapReduce框架中最重要的從a組之一。Map Task和Reduce Task均會對數(shù)據(jù)(按照key)進行排序。該操作屬于Hadoop的默認(rèn)行為。任何應(yīng)用程序均會被排序,而不管邏輯上是否需要。
???? 對于Map Task,它會將處理的結(jié)果暫時存放到一個緩沖區(qū),當(dāng)緩沖區(qū)使用率達到一定閾值后,在對緩沖區(qū)中的數(shù)據(jù)進行以此排序。并將這些有序集合以IFile文件的形式寫到磁盤上。而當(dāng)數(shù)據(jù)處理完畢后,它會對磁盤上所有文件進行一次合并。已將這些文件形成一個大的有序文件。
???? 對于Reduce Task,它從每個Map Task上面遠(yuǎn)程拷貝相應(yīng)的數(shù)據(jù)文件,如果文件大小超過一定閾值,則放到磁盤,否則放到內(nèi)存。如果磁盤上文件數(shù)目達到一定閾值,則進行一次合并以生成一個更大文件;如果內(nèi)存中文件大小或者數(shù)目超過一定閾值,則進行一次合并后寫到磁盤上。當(dāng)所有數(shù)據(jù)拷貝完畢后,Reduce Task統(tǒng)一對內(nèi)存和磁盤上的所有數(shù)據(jù)進行一次合并。
???? Map Task和Reduce Task的緩沖區(qū)數(shù)據(jù)合并使用Hadoop自己實現(xiàn)的快排算法,而IFile文件合并則使用了基于堆實現(xiàn)的優(yōu)先隊列。
快排
優(yōu)先隊列
? 文件歸并由類Merger完成。其采用多輪遞歸合并的方式。每輪選取最小的前io.sort.factor(默認(rèn)是10,用戶可配置)個文件進行合并。并將產(chǎn)生的文件重新加入帶合并列表中。知道剩下的文件數(shù)目小于io.sort.factor個,此時,他會返回指向由這些文件組成的小頂堆的迭代器。
Reporter
?? Reporter用來完成Task周期性的向TaskTracker匯報最新進度和計數(shù)器值。TaskReporter類實現(xiàn)了Reporter接口,并以線程形式啟動。其匯報的信息中包含兩部分:
轉(zhuǎn)載于:https://www.cnblogs.com/lovemdx/p/3236182.html
總結(jié)
以上是生活随笔為你收集整理的Hadoop–Task 相关的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同步复位和异步复位
- 下一篇: java的Access restrict