(1) 影響namenode的壽命,因為檔案元資料儲存在namenode的記憶體中
(2) 影響計算引擎的任務數量,比如每個小的檔案都會生成乙個map任務
(1) 合併小檔案:對小檔案進行歸檔(har)、自定義inputformat將小檔案儲存成sequencefile文 件。
(2) 採用combinefileinputformat來作為輸入,解決輸入端大量小檔案場景。
hadoop自身包含了combinefileinputformat,其功能是將多個小檔案合併如乙個分片,由乙個map任務處理,這樣就減少了不必要的map數量。
(3) 對於大量小檔案job,可以開啟jvm重用。
大量小檔案就會有大量map,開啟jvm重用可以省去大量jvm建立所需時間
(1) 增大環形緩衝區大小。由100m擴大到200m
(2) 增大環形緩衝區溢寫的比例。由80%擴大到90%
1、2間接通過減少溢寫檔案的marge次數來提高效能
(3) 減少對溢寫檔案的merge次數。(10個檔案,一次20個merge)
(4) 不影響實際業務的前提下,採用combiner提前合併,減少 i/o。
詳解:開啟兩個job任務,第乙個job進行類似combiner合併操作,第二個job將第乙個job的結果進行計算操作
(1) 合理設定map和reduce數:兩個都不能設定太少,也不能設定太多。太少,會導致task等待,延 長處理時間;太多,會導致 map、reduce任務間競爭資源,造成處理超時等錯誤。
(2) 設定map、reduce共存:調整slowstart.completedmaps引數,使map執行到一定程度後,
reduce也開始執行,減少reduce的等待時間。
(3) 規避使用reduce,因為reduce在用於連線資料集的時候將會產生大量的網路消耗。
(4) 增加每個reduce去map中拿資料的並行數
(5) 集群效能可以的前提下,增大reduce端儲存資料記憶體的大小。
(2) 使用sequencefile二進位制檔案
sequencefile類可以高效的對小檔案進行儲存和處理
(1) maptask預設記憶體大小為1g,可以增加maptask記憶體大小為4-5g
(2) reducetask預設記憶體大小為1g,可以增加reducetask記憶體大小為4-5g
(3) 可以增加maptask的cpu核數,增加reducetask的cpu核數
(4) 增加每個container的cpu核數和記憶體大小
container:yarn中用於資源排程,提高他的效能更快完成任務資源的排程
(5) 調整每個map task和reduce task最大重試次數
Hadoop優化及小檔案處理
hadoop本身也提供了幾個解決方案,分別為 hadoop archive,sequence file和combinefileinputformat。1 hadoop archive hadoop archive或者har,是乙個高效地將小檔案放入hdfs塊中的檔案存檔工具,它能夠將多個小檔案打包成...
Hadoop小檔案歸檔
hdfs檔案的元資料存放在namenode,大量的小檔案會導致namennode記憶體耗盡。hdfs提供了一種針對小檔案的歸檔方案,namenode將多個小檔案歸檔後的檔案視為乙個整體,所以可以大大降低元資料的開銷。但是對於使用者訪問來說卻是透明的,仍然可以可以對每個檔案單獨訪問。檔案歸檔需要執行m...
hadoop 小檔案解決方案
基於hadoop sequencefile的小檔案解決方案 一 概述 小檔案是指檔案 size 小於hdfs 上block 大小的檔案。這樣的檔案會給 hadoop 的擴充套件性和效能帶來嚴重問題。首先,在 hdfs 中,任何 block 檔案或者目錄在記憶體中均以物件的形式儲存,每個物件約佔 15...