HDFS 輸入檔案避免切分

2021-09-01 10:00:22 字數 625 閱讀 1898

一般來說,分片大小計算公式如下:

max(minimumsize,min(maximumsize,blocksize))

minimumsize < blocksize < maximumsize

對於許多小檔案的話,hadoop的處理效率是低下的,一種方法是我們使用hadoop 存檔工具把許多小檔案打包成乙個har檔案,但是這樣會要求至少需要與原檔案大小相同的另乙份磁碟空間,而且har檔案不能修改或者刪除裡面的檔案,不過inputformat類並不知道檔案已經存檔,所以處理效率仍然不好;另一種方法是使用combinefileinputformat類,同樣這個類對大檔案也有很好的效果,這對於hdfs中已經存在很多小檔案的情況下值得一試。還有一種方法就是使用sequenecefile 合併許多小檔案,鍵是檔名,值是檔案內容。

盡量避免許多小檔案的情況:

reducer個數選擇

常用方法

設定比總槽數稍微少一些的reducer數,給任務留餘地(容忍一些錯誤發生而不需要次延長作業執行時間),比如說計畫性任務或者推測性任務。

如果reduce任務很大,較好的做法是使用更多reducer,使任務粒度變小,這樣任務的失敗才不至於顯著影響作業執行時間。

hadoop拾遺(一) 避免切分map檔案

有二種辦法可以保證輸入檔案不被切分。第一種 最簡單但不怎麼漂亮的 方法就是增加最小分片大小,將它設定成大於要處理的最大檔案大小。把它設定為最大值long.max value即可。每二種方法就是使用fileinputformat具體子類,並且過載issplitable 方法把返回值設定為false。例...

Nginx 日誌檔案切分

bin bash 切分nginx日誌 目錄base dir usr local nginx 檔名base file name access.log 原日誌目錄 home path base dir logs 備份日誌目錄 bak path base dir datalogs 原檔案 home fil...

Nginx 日誌檔案切分

bin bash 切分nginx日誌 目錄base dir usr local nginx 檔名base file name access.log 原日誌目錄 home path base dir logs 備份日誌目錄 bak path base dir datalogs 原檔案 home fil...