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:/// 是协议

 

相关文章:

  • 2021-10-11
  • 2022-01-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-12
  • 2021-10-26
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-11
  • 2022-12-23
  • 2021-04-24
  • 2021-05-02
相关资源
相似解决方案