hdfs檔案的元資料存放在namenode,大量的小檔案會導致namennode記憶體耗盡。
hdfs提供了一種針對小檔案的歸檔方案,namenode將多個小檔案歸檔後的檔案視為乙個整體,所以可以大大降低元資料的開銷。但是對於使用者訪問來說卻是透明的,仍然可以可以對每個檔案單獨訪問。
檔案歸檔需要執行mapreduce任務,所以要確保yarn服務正常啟動。
./bin/star-yarn.sh
檔案歸檔
原始目錄/input有3個小檔案,分別為a.txt, b.txt, c.txt
[root@master hadoop-2.6.5]# ./bin/hdfs dfs -ls /input
found 3 items
-rw-r--r-- 2 root supergroup 12 2019-12-05 20:32 /input/a.txt
-rw-r--r-- 2 root supergroup 12 2019-12-05 20:32 /input/b.txt
-rw-r--r-- 2 root supergroup 12 2019-12-05 20:32 /input/c.txt
將input目錄歸檔成input.har
[root@master hadoop-2.6.5]# ./bin/hadoop archive -archivename input.har -p /input /output
檢視歸檔檔案
[root@master hadoop-2.6.5]# ./bin/hdfs dfs -ls /output
found 1 items
drwxr-xr-x - root supergroup 0 2019-12-05 21:24 /output/input.har
訪問歸檔檔案
[root@master hadoop-2.6.5]# ./bin/hdfs dfs -ls har:///output/input.har
found 3 items
-rw-r--r-- 2 root supergroup 12 2019-12-05 20:32 har:///output/input.har/a.txt
-rw-r--r-- 2 root supergroup 12 2019-12-05 20:32 har:///output/input.har/b.txt
-rw-r--r-- 2 root supergroup 12 2019-12-05 20:32 har:///output/input.har/c.txt
[root@master hadoop-2.6.5]# ./bin/hdfs dfs -cat har:///output/input.har/a.txt
hello a.txt
解歸檔檔案
[root@master hadoop-2.6.5]# ./bin/hdfs dfs -cp har:///output/input.har/* /test
[root@master hadoop-2.6.5]# ./bin/hdfs dfs -ls /test
found 3 items
-rw-r--r-- 2 root supergroup 12 2019-12-05 21:30 /test/a.txt
-rw-r--r-- 2 root supergroup 12 2019-12-05 21:30 /test/b.txt
-rw-r--r-- 2 root supergroup 12 2019-12-05 21:30 /test/c.txt
Hadoop小檔案優化
1 影響namenode的壽命,因為檔案元資料儲存在namenode的記憶體中 2 影響計算引擎的任務數量,比如每個小的檔案都會生成乙個map任務 1 合併小檔案 對小檔案進行歸檔 har 自定義inputformat將小檔案儲存成sequencefile文 件。2 採用combinefileinp...
建立hadoop 歸檔檔案
hadoop可以建立自己的歸檔檔案 即har檔案 hadoop archive file 下面的乙個shell命令展示如何建立歸檔檔案 hadoop archive archivename geoway portal.har user administrator geoway port al 對這個...
hadoop 小檔案解決方案
基於hadoop sequencefile的小檔案解決方案 一 概述 小檔案是指檔案 size 小於hdfs 上block 大小的檔案。這樣的檔案會給 hadoop 的擴充套件性和效能帶來嚴重問題。首先,在 hdfs 中,任何 block 檔案或者目錄在記憶體中均以物件的形式儲存,每個物件約佔 15...