實例講解Hadoop用法
本節(jié)和大家一起學(xué)習(xí)一下Hadoop,通過它的實際應(yīng)用來向大家展示它的功能,從而使讀者更容易了解,希望通過本節(jié)的介紹大家對Hadoop有初步的了解。
Hadoop最佳實踐
1.簡介
Hadoop是Apache自由軟件基金會資助的頂級項目,致力于提供基于map-reduce計算模型的高效、可靠、高擴(kuò)展性分布式計算平臺。
2.Map-Reduce應(yīng)用場景
作為一種受限的分布式計算模型,Map-Reduce計算模型有其擅長的領(lǐng)域,也有其不擅長的方面:
條款1:map-reduce計算模型適用于批處理任務(wù),即在可接受的時間內(nèi)對整個數(shù)據(jù)集計算某個特定的查詢的結(jié)果,該計算模型不適合需要實時反映數(shù)據(jù)變化狀態(tài)的計算環(huán)境。
條款2:map-reduce計算模型是以“行”為處理單位的,無法回溯已處理過的“行”,故每行日志都必須是一個獨立的語義單元,行與行之間不能有語義上的關(guān)聯(lián)。
條款3:相對于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),Map-Reduce計算模型更適合于處理半結(jié)構(gòu)化或無結(jié)構(gòu)話的數(shù)據(jù)。
因為Map-Reduce計算模型是在處理的時候?qū)?shù)據(jù)進(jìn)行解釋的,這就意味著輸入的Key和Value可以不是數(shù)據(jù)本身固有的屬性,Key、Value的選擇完全取決于分析數(shù)據(jù)的人。
條款4:Map-Reduce是一個線性可擴(kuò)展模型,服務(wù)器越多,處理時間越短。
以下是同一個任務(wù)在不同機(jī)器數(shù)下獲得的測試結(jié)果:
3.任務(wù)調(diào)度優(yōu)化
首先對一些術(shù)語進(jìn)行一下說明。Job是一組客服端想要完成的工作,包括輸入數(shù)據(jù),map-reduce程序以及配置信息,Hadoop通過將Job劃分為一些task來執(zhí)行,task又分為maptask和reducetask。
如何調(diào)度Hadoop任務(wù)才能充分發(fā)揮集群中所有服務(wù)器的能力呢?
條款5:每個Job的輸入文件不宜過大,也不宜過小。文件過大會造成reduce任務(wù)分布不均勻,導(dǎo)致reducetime的不可預(yù)知性,而大量的小文件則會嚴(yán)重影響Hadoop的性能。
Hadoop會將Job的輸入文件分割成64M固定大小的split,每個split啟動一個maptask處理,這個split中的每個record都經(jīng)過用戶定義的map函數(shù)處理生成中間結(jié)果。若輸入文件小于64M,則此文件單獨作
為一個split處理。故當(dāng)輸入文件中有大量的小文件時,那么管理這些小文件的開銷以及maptask的創(chuàng)建開銷會占據(jù)絕大多數(shù)的Job執(zhí)行時間。
為了找到Hadoop合適的Job文件大小,我們在一個有50臺退役機(jī)器組成的集群做了一組性能測試,結(jié)果如下表:
我們把一個任務(wù)的計算時間分為兩部分:reduceshuffletime和reducetime。
lreduceshuffletime是reduce任務(wù)把map輸出的<key,value>對copy到本地的時間,即reduceshuffletime=map時間+<key,value>對網(wǎng)絡(luò)傳輸時間。
lreducetime就是rudece處理這些<key,value>對的時間。
從上表我們可以得出結(jié)論:
l各個任務(wù)的reduceshuffletime是完全線性的(隨著任務(wù)量增加,時間線性增加)。
l任務(wù)量在300G以內(nèi),reducetime基本線性增長,之后隨著任務(wù)量增加,reducetime呈現(xiàn)隨機(jī)性加大的趨勢。在任務(wù)量達(dá)到550G后這種隨機(jī)性更加明顯,先后運行同樣的任務(wù)時間可能會相差一個小時??梢酝茢?,隨著任務(wù)量增加,reduce任務(wù)分布不均勻的機(jī)率提高,導(dǎo)致了reducetime的不可預(yù)知性。
l上面兩個時間的疊加影響下,在300G以內(nèi)退役機(jī)器處理任務(wù)的時間是線性增加的。300G以上的任務(wù)需要分成若干個小任務(wù)串行運行,保證reduce處理在線性可控的區(qū)間內(nèi)。本節(jié)關(guān)于Hadoop方面的知識沒有介紹完畢,請關(guān)注下節(jié)介紹。
【編輯推薦】
- Hadoop初探
- 學(xué)習(xí)筆記 Hadoop是什么?
- Hadoop集群與Hadoop性能優(yōu)化
- HadoopHBase實現(xiàn)配置簡單的單機(jī)環(huán)境
- 深入剖析Hadoop HBase