Hadoop小檔案優化

2021-10-21 16:59:11 字數 1318 閱讀 4779

(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...