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 8032、41215
时间有限,暴力解决,关闭防火墙
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:/// 是协议