您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Hadoop怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
條款6:多個大輸入的Job建議使用串行執行,多個小輸入的Job建議使用并行執行。
Hadoop的任務處理分為map階段以及reduce階段,當集群的taskslots足夠支持多個任務同時執行時,建議使用多任務并行執行,反之,建議使用串行執行,且當一個Job開始執行reducetask
時,可以開始執行下一個Job的maptask。
以下是我們在50臺退役機器上分別并行和串行運行2個100G,200G,300G的任務的測試結果:
條款7:reducer的個數應該略小于集群中全部reduceslot的個數。
maptask的個數由輸入文件大小決定,所以選擇合適的reducer的個數對充分利用Hadoop集群的性能有重要的意義。
Hadoop中每個task均對應于tasktracker中的一個slot,系統中mapperslots總數與reducerslots總數的計算公式如下:
mapperslots總數=集群節點數×mapred.tasktracker.map.tasks.maximum
reducerslots總數=集群節點數×mapred.tasktracker.reduce.tasks.maximum
設置reducer的個數比集群中全部的reducerslot略少可以使得全部的reducetask可以同時進行,而且可以容忍一些reducetask失敗。
條款8:多個簡單串行的Job優于一個復雜的Job。將復雜的任務分割成多個簡單的任務,這是典型的分治的思想。這樣不僅可以使得程序變得更簡單,職責更單一,而且多個串行的任務還可以
在上一個任務的正在執行reduce任務的時候,利用空閑的map資源來執行下一個任務。
4.Key-Value權衡
Map-Reduce算法的核心過程如下:
map(k1,v1)-->list(k2,v2)
reduce(k2,list(v2))-->list(v2)
即通過用戶定義的map函數將輸入轉換為一組<Key,Value>對,而后通過用戶定義的reduce函數將<Key,List<Value>>計算出***的結果。
如何選擇合適的map和reduce函數才能充分利用Hadoop平臺的計算能力呢?換句話說,如何選擇上式中合適的K2和V2呢?
條款9:maptask或reducetask的大小應該適中,以一個task運行2-3分鐘為宜,且task不能超出計算節點的運算能力。
雖然Hadoop平臺幫助我們將數據分割成為小任務來執行,但我們也應當意識到,每個task都是在一個計算節點運行的,若一個task對機器資源(CPU、內存、磁盤空間等)的需求超出了計算
節點的能力的話,任務將會失敗。而如果task過小的話,雖然計算節點能夠快速的完成task的執行,但過多的task的管理開銷,以及中間結果頻繁的網絡傳輸將占據任務執行的絕大部分時間,
這樣同樣會嚴重影響性能。建議的task大小***是以能夠運行2-3分鐘為宜。
條款10:map產生的中間結果不宜過大。
輸入數據經過用戶定義的map函數后生成的<Key,Value>對是Map-Reduce模型的中間計算結果。
Maptask將計算的中間結果保存在本地磁盤,而后通過Reducetask拉去所有當前任務所需的中間結果,并將中間結果按Key排序。顯然若map產生的中間結果過大,網絡傳輸時間以及中間結
果排序將占據大部分的Job執行時間。
關于“Hadoop怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。