Hadoop小檔案歸檔

2021-10-01 07:12:19 字數 2041 閱讀 1732

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...