将HDFS上的小文件进行归档

一、说明

1.做本次的实操必须是先搭建好HDFS和yarn并已经启动,测试可以使用的状态。
2.HDFS是一个海量存储的分布式存储系统,每一次存储都占128M,就算是很小的一个文件也会申请一个128M的块来存储。这样就很浪费资源。所以要将这些小的文件进行集中处理,来解决浪费哦资源的问题。
3.我们在处理这些文件的时候,虽然将他们打包放在一起,但是使用的时候还可以像之前一样解析使用。

4.遇到的问题和解决方法在本篇文章结尾处说明

二、步骤演示

1.因为本次是做实验,所以我就随意创建几个小文件进行。
2.首先在HDFS上建一个目录用来存储小文件。

hadoop fs -mkdir -p /archive/input

3.在本地新建一个存小文件的目录datas。我将小文件建在了hadoop2.7.2下的datas目录

mkdir datas

在这里插入图片描述
4.准备小文件,并在小文件里写点数据。
在这里插入图片描述
5.将小文件上传到HDFS的/archive/input目录(我现在就在datas目录下。所以用的 ./* ),上传完看那一下HDFS是否有文件了。

hadoop fs -put ./* /archive/input

在这里插入图片描述
也可以手动命令查看

hadoop fs -ls /archive/input

在这里插入图片描述
6.使用hadoop命令查看归档的命令及参数格式
Name 是打包好的文件名
是想要将那个目录下的文件进行归档。
在这里插入图片描述
7.归档
/archive/input 是将HDFS上的那个目录下的文件归档。
/archive/ouput 归档到那个目录下

hadoop archive -archiveName input.har -p /archive/input /archive/ouput

8.查看

hadoop fs -ls har:///archive/ouput/input.har

在这里插入图片描述
9.使用被归档的文件
(1)先建一个copy文件夹,将文件复制到copy来查看效果。

hadoop fs -mkdir -p /archive/copy

(2)复制文件到copy目录下

hadoop fs -cp har:///archive/ouput/input.har/* /archive/copy

(3)查看copy目录
在这里插入图片描述
在这里插入图片描述

三、可能出现的问题

1.No such file or directory 这个问题是没有知道对应的路径。检查路径。
2.走到map 0% reduce 0%之后卡住不动,这种情况基本就是报错了,程序已经死掉了,这里希望虚拟机的内存给大一点,否则resourcemanager无法分配内存执行job任务
3.Invalid Output: /archive/ouput/input.har
说明这个文件已经存在,如果上次没有成功,次执行需要删除掉。
4.如有其它问题私信博主。

写作不易,如果对您有所帮助,请给一个小小的赞,您的点赞是对我莫大的支持和鼓励,谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值