您現在的位置是:首頁 > 遊戲
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 大的資料夾
3。2小檔案合併的方法和工具
1、不常用的資料表,使用HAR壓縮
提供使用者配置HAR壓縮策略:
1)輸入不常用資料夾/目錄列表 2) 輸入指定日期,在該日期之前的資料均可壓縮成HAR
當滿足以上策略時,系統自動執行結果。
2、開發合併小工具
根據實際生產情況, 可以針對按照日期來分割槽的Hive表, 開發如下小工具。
使用者輸入需要合併的hive /db /表名稱
使用者輸入分割槽 開始時間-結束時間。
給出合併的結果: 總計檔案數/合併後的檔案數/ 參與合併的分割槽數/節約的儲存空間
給出合併後的檢查: 合併前的entry count /合併後的entry count, 測試資料表可用性。
刪除舊檔案。
推薦文章
- 演出福利送不停!社群文化節走進濟陽城裡社群
”社群居民劉奶奶說,她是帶著孫子一起來的,孫子很喜歡小丑還有魔術師的表演,還拿到了贈送的氣球,“這種老人孩子都能受益的活動真是太好了,希望以後文化節能多多走進我們社群...
- 《待到山花爛漫時》第75章:一頓不吃能餓死她?
接下來的幾天,沈言悅都沒有搭理蕭臨琛,她受到程寒的邀請,去了鄰市看一個知名畫家許匯甄的畫展...
- 全真7子名震天下,周伯通作為前輩,為何將九陰真經傳給郭靖
關於傳授九陰真經一事,可能有人會說周伯通謹記王重陽的教誨,禁止本門中人修煉這門武功...