HDFS小檔案的危害

2021-09-25 02:38:06 字數 917 閱讀 1966

一、black塊

舉例:black塊官方設定的是64m,現在多數用的是128m

舉例:

乙個檔案130m % 128m=1…2m

結果是1個塊128m,1個塊2m

一碗水130ml 乙個瓶子規格容量128ml

只能2個瓶子:第1個裝滿128ml 第二個裝不滿,實為2ml

二、小檔案的危害

hdfs 適應場景: 大檔案儲存,小檔案是致命的

舉例說 明

接上個例子130m的檔案

10m的10個檔案 10塊

30m的1個檔案 1塊

共有11個檔案: 11塊

系統維護一般輕量級會比較好,本身可以2個塊去維護,但現在需要11個塊維護 ,如果數量級比較大有可能會把nn撐爆

為什麼小檔案會把nn撐爆?

例如

nn的大小是4g大概是42億位元組

1個小檔案(閾值<=30m): nn節點維護的位元組大約250位元組

1億個小檔案 250b1億=250億位元組

反而如果1億個小檔案合併100萬個大檔案:250b1百萬=2億位元組則不會被撐爆

如果nn撐爆,在大資料中,大資料的結構基本上都是主從架構,主節點的nn起到非常重要的作用,nn掛了,所有對外的服務,讀寫的流程將不能執行。

生產上:,

1.對小檔案閾值進行估算

2.合併小檔案,資料未落地到hdfs之前合併或者資料已經落到hdfs,用spark service服務每天排程去合併 -15天

具體情況根據公司的業務週期進行合併,比如今天是15號則合併1號的檔案,16號合併2號的

3.小檔案危害: 乙個是撐爆nn,另乙個是hive或者spark計算的時候會影響它的速度

HDFS小檔案危害以及解決方案

1 hdfs不適合大量小檔案的儲存,因namenode將檔案系統的元資料存放在記憶體中,因此儲存的檔案數目受限於 namenode的記憶體大小。hdfs中每個檔案 目錄 資料塊占用150bytes。如果存放的檔案數目過多的話會占用很大的記憶體甚至撐爆記憶體 2 hdfs適用於高吞吐量,而不適合低時間...

HDFS合併小檔案

眾所周知,hdfs中過多的小檔案,會給namenode造成很大的壓力,所謂的小檔案,是指遠遠小於檔案塊大小的檔案。在使用hdfs的過程中,應盡量避免生成過多的小檔案。假設存放在本地的資料由很多個小檔案組成,需要上傳到hdfs。一般的做法是在本地使用指令碼 程式先把小檔案合併後再上傳。假設本地有兩個小...

小檔案處理 HDFS

1.儲存 hdfs可以儲存小檔案,但是這個過程中,每乙個小檔案在儲存的時候都會產生一條元資料,這也就意味著如果儲存大量的小檔案,就會產生大量的元資料,則意味著記憶體會被大量占用,此時就會導致hdfs的讀寫效率整體降低 2.計算 每乙個小檔案都會看做乙個切片來進行處理,每乙個切片都會對應乙個mapta...