您現在的位置是:首頁 > 遊戲

Hadoop 叢集運維的思考——小檔案最佳化

由 新一代搬磚人 發表于 遊戲2022-03-01
簡介2小檔案合併的方法和工具1、不常用的資料表,使用HAR壓縮提供使用者配置HAR壓縮策略:1)輸入不常用資料夾目錄列表 2) 輸入指定日期,在該日期之前的資料均可壓縮成HAR當滿足以上策略時,系統自動執行結果

開源工具是什麼意思

Hadoop 叢集運維的思考——小檔案最佳化

1小檔案最佳化的驅動力

1。1NN 記憶體和HDFS檔案的數量關係計算。

一般來說, NameNode管理檔案File、目錄Directory、塊Block物件, 每一個物件的大小約在150 B。大小。

假設有一個192MB的檔案, 它會切分稱128M+64M, 就會有2個block 檔案+ 1個檔案物件, 佔用大約450B的空間。

如果128個1M的檔案會佔據 256(128檔案+128塊)物件需要36M左右的記憶體。

1。2對NameNode的影響。

NameNode啟動時間變長、效能下降。

NameNode JVM FGC 風險高。

2小檔案的產生

2。1HDFS中的原資料

舉個例子, Spark寫入業務資料到HDFS , 業務有忙閒之分, 但是控制程式如果寫的不好, 那麼在忙的時候, 業務產生的資料,可能是300M*10份, 而過了峰值以後, 就可能會產生10M*10份的資料。顯然後者就是小檔案。

2。2Hive 表運算產生

比如MR 任務中, reducer配置較大, 會輸出很多小檔案。

2。3YARN job history log。

每個任務都會有日誌檔案, 這些日誌檔案大小不一, 有的可能不足1M。

3小檔案最佳化的辦法

3。1找到“有小檔案”的資料夾

平均檔案size越小越好

檔案數量越多越好

HDFS目錄路徑格式如下:

/hive/warehouse//<表名>/<分割槽名> ;

/hbase/<表名> ;

首先計算TOPN佔據儲存的資料夾,當平均檔案<30M時,需要關注這個資料夾, 是小檔案數多的資料夾。同時需要注意,當檔案個數較少時, 比如第三行,那麼也無需做小檔案合併。

TOPN 大的資料夾

Hadoop 叢集運維的思考——小檔案最佳化

3。2小檔案合併的方法和工具

1、不常用的資料表,使用HAR壓縮

提供使用者配置HAR壓縮策略:

1)輸入不常用資料夾/目錄列表 2) 輸入指定日期,在該日期之前的資料均可壓縮成HAR

當滿足以上策略時,系統自動執行結果。

2、開發合併小工具

根據實際生產情況, 可以針對按照日期來分割槽的Hive表, 開發如下小工具。

使用者輸入需要合併的hive /db /表名稱

使用者輸入分割槽 開始時間-結束時間。

給出合併的結果: 總計檔案數/合併後的檔案數/ 參與合併的分割槽數/節約的儲存空間

給出合併後的檢查: 合併前的entry count /合併後的entry count, 測試資料表可用性。

刪除舊檔案。

推薦文章