HDFS 小文件存档(重要)

1、原因:

小文件不适合储存在Hadoop中,因为都会占用NameNode内存的元数据(相当于目录),

无论小文件的大小都会占用一个DataNode块(128M)

2、解决方案

HDFS存档文件或HAR文件,对内是一个一个独立的文件,对NameNode是一个整体,减少NameNode的内存

3、实操

a、启动集群

启动HDFS和Yarn

b、创造环境

# 创建HDFS目录
hadoop fs -mkdir -p /usr/tom/input
# 上传文件到HDFS
hadoop fs -put ./a.txt /usr/tom/input
hadoop fs -put ./b.txt /usr/tom/input
hadoop fs -put ./c.txt /usr/tom/input

c、开启端口 (血的教训)

sudo firewall-cmd --zone=public --add-port=8032/tcp --permanent
sudo firewall-cmd --reload

开启了下列端口,仍需开启端口

37099 41304 43899 45796 43221 
40007 33400 35676 42095 38084
37469 44899 37125 43179 35034
35776 41624 34054 43654 803241215

时间有限,暴力解决,关闭防火墙

sudo systemctl stop firewalld

c、归档文件

hadoop archive -archiveName wt.har -p /usr/tom/input /usr/tom/output
                                         必须代.har  hdfs src              hdfs dest

 d、查看归档

hadoop fs -ls -R /usr/tom/output/wt.har

注意:对外 wt.har 是一个整体,对应一个NameNode

e、解析归档文件

hadoop fs -ls -R har:////usr/tom/output/wt.har

注意:对内wt.har,是一个一个小文件,har:/// 是协议

 

posted @ 2020-09-01 23:55  市丸银  阅读(242)  评论(0编辑  收藏  举报