HDFS的小檔案合併成大檔案

2021-09-29 10:21:18 字數 911 閱讀 4654

前提:

在實際專案中,輸入資料往往是由許多小檔案組成,這裡的小檔案是指小於hdfs系統block大小的檔案(預設128m), 然而每乙個儲存在hdfs中的檔案、目錄和塊都對映為乙個物件,儲存在namenode伺服器記憶體中,通常占用150個位元組。

由於hadoop擅長儲存大檔案,因為大檔案的元資料資訊比較少,如果hadoop集群當中有大量的小檔案,那麼每個小檔案都需要維護乙份元資料資訊,會大大的增加集群管理元資料的記憶體壓力,所以在實際工作當中,如果有必要一定要將小檔案合併成大檔案進行一起處理。

hdfs dfs -getmerge /config/*.xml ./hello.xml

方法:

/**

* 將多個本地系統檔案 , 上傳到hdfs , 並且合併成乙個大的檔案

* @throws urisyntaxexception

* @throws ioexception

* @throws interruptedexception

*/@test

public

void

mergefile()

throws urisyntaxexception, ioexception, interruptedexception

ioutils.

closequietly

(outputstream)

; local.

close()

; fs.

close()

;}

HDFS合併小檔案

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

HDFS的API操作 小檔案的合併

由於 hadoop 擅長儲存大檔案,因為大檔案的元資料資訊比較少,如果 hadoop 集群當中有大量的小檔案,那麼每個小檔案都需要維護乙份元資料資訊,會大大的增加集群管理元資料的記憶體壓力,所以在實際工作當中,如果有必要一定要將小檔案合併成大檔案進行一起處理 cd export servers hd...

小檔案處理 HDFS

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