Hadoop概念及其用法專家講解
本節(jié)和大家繼續(xù)學習Hadoop,Hadoop是一個分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會開發(fā)。它有什么奧秘呢,就讓我們一起來繼續(xù)關(guān)注Hadoop吧。
條款6:多個大輸入的Job建議使用串行執(zhí)行,多個小輸入的Job建議使用并行執(zhí)行。
Hadoop的任務處理分為map階段以及reduce階段,當集群的taskslots足夠支持多個任務同時執(zhí)行時,建議使用多任務并行執(zhí)行,反之,建議使用串行執(zhí)行,且當一個Job開始執(zhí)行reducetask
時,可以開始執(zhí)行下一個Job的maptask。
以下是我們在50臺退役機器上分別并行和串行運行2個100G,200G,300G的任務的測試結(jié)果:
條款7:reducer的個數(shù)應該略小于集群中全部reduceslot的個數(shù)。
maptask的個數(shù)由輸入文件大小決定,所以選擇合適的reducer的個數(shù)對充分利用Hadoop集群的性能有重要的意義。
Hadoop中每個task均對應于tasktracker中的一個slot,系統(tǒng)中mapperslots總數(shù)與reducerslots總數(shù)的計算公式如下:
mapperslots總數(shù)=集群節(jié)點數(shù)×mapred.tasktracker.map.tasks.maximum
reducerslots總數(shù)=集群節(jié)點數(shù)×mapred.tasktracker.reduce.tasks.maximum
設(shè)置reducer的個數(shù)比集群中全部的reducerslot略少可以使得全部的reducetask可以同時進行,而且可以容忍一些reducetask失敗。
條款8:多個簡單串行的Job優(yōu)于一個復雜的Job。將復雜的任務分割成多個簡單的任務,這是典型的分治的思想。這樣不僅可以使得程序變得更簡單,職責更單一,而且多個串行的任務還可以
在上一個任務的正在執(zhí)行reduce任務的時候,利用空閑的map資源來執(zhí)行下一個任務。
4.Key-Value權(quán)衡
Map-Reduce算法的核心過程如下:
map(k1,v1)-->list(k2,v2)
reduce(k2,list(v2))-->list(v2)
即通過用戶定義的map函數(shù)將輸入轉(zhuǎn)換為一組<Key,Value>對,而后通過用戶定義的reduce函數(shù)將<Key,List<Value>>計算出***的結(jié)果。
如何選擇合適的map和reduce函數(shù)才能充分利用Hadoop平臺的計算能力呢?換句話說,如何選擇上式中合適的K2和V2呢?
條款9:maptask或reducetask的大小應該適中,以一個task運行2-3分鐘為宜,且task不能超出計算節(jié)點的運算能力。
雖然Hadoop平臺幫助我們將數(shù)據(jù)分割成為小任務來執(zhí)行,但我們也應當意識到,每個task都是在一個計算節(jié)點運行的,若一個task對機器資源(CPU、內(nèi)存、磁盤空間等)的需求超出了計算
節(jié)點的能力的話,任務將會失敗。而如果task過小的話,雖然計算節(jié)點能夠快速的完成task的執(zhí)行,但過多的task的管理開銷,以及中間結(jié)果頻繁的網(wǎng)絡(luò)傳輸將占據(jù)任務執(zhí)行的絕大部分時間,
這樣同樣會嚴重影響性能。建議的task大小***是以能夠運行2-3分鐘為宜。
條款10:map產(chǎn)生的中間結(jié)果不宜過大。
輸入數(shù)據(jù)經(jīng)過用戶定義的map函數(shù)后生成的<Key,Value>對是Map-Reduce模型的中間計算結(jié)果。
Maptask將計算的中間結(jié)果保存在本地磁盤,而后通過Reducetask拉去所有當前任務所需的中間結(jié)果,并將中間結(jié)果按Key排序。顯然若map產(chǎn)生的中間結(jié)果過大,網(wǎng)絡(luò)傳輸時間以及中間結(jié)
果排序?qū)⒄紦?jù)大部分的Job執(zhí)行時間。本節(jié)關(guān)于Hadoop的介紹到此結(jié)束。
【編輯推薦】
- 實例講解Hadoop用法
- 專家指導 如何進行Hadoop分布式集群配置
- Hadoop集群與Hadoop性能優(yōu)化
- HadoopHBase實現(xiàn)配置簡單的單機環(huán)境
- 深入剖析Hadoop HBase