【hadoop】Archive命令使用

本文详细介绍了Hadoop Archive命令的使用,包括如何创建、查看和解压Archive文件,以及串行和并行解压的方法。Archive命令能将小文件打包成.har格式,减少NameNode内存使用,同时保持对文件的透明访问。文章还提到了DistCp命令在大规模文件拷贝中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Archive命令

hadoop Archive是一个高效地将小文件放入HDFS块中的文件存档文件格式,它能够将多个小文件打包成一个后缀为.har文件,这样减少namenode内存使用的同时,仍然允许对文件进行透明的访问。
hadoop Archive目录包含元数据文件( _index 和 _masterindex)和数据文件(part-*),这个_index文件包含了所有文件的名称和他对应part文件的位置。

(1)怎么使用Archive

使用:

hadoop archive -archiveName name -p <parent> [-r <replication factor>] <src>* <dest>

-archiveName 你需要创建的archive的文件名, 例如:tmp.har. 名字应该用*.har后缀。是指定Archive文件的相对路径,例如:-p /user/dss/ /test1 /test2
这里 /user/dss/是/test1和/test2两个相对路径的父路径. 一个是要归档的资源路径,一个是最终归档路径的存放路径。注意:Archive是MapReduce创建了。所以要在map reduce集群环境下运行它。

-r 指示所需的复制因子;如果该可选参数未指定,将使用10的复制因子。

例如:将/user/fish/arch/test1目录下的文件归档到/user/tom/test33文件夹下:hadoop archive -archiveName test.har -p /user/fish arch/test1/ test2
例如:使用通配符,将/user/fish/2015 10,11,12月归档到/user/test33文件夹下:

hadoop archive -archiveName combine.har -p /user/fish2015 1[0-2] /user/test33

例如:不指定归档目录,直接归档parent目录:/user/fish/目录到/user/test33文件夹下:
hadoop archive -archiveName combine.har -p /user/fish /user/test33

例如:归档多个目录,归档/user/fish/目录下的111,222,333目录到/user/test33文件夹下:
hadoop archive -archiveName combine.har -p /user/fish/ 111 222 333 /user/test33

查看Archive文档

查看归档文档

hadoop fs -ls /test/test.har
hadoop dfs -ls /test/test.har
hadoop fs -ls har:test2/test.har/

解压 Archive文档

文件夹内部归档,解压之后会变回archive之前的路径。
例如
/user/dss/test/* 归档成test.har之后解压仍为 /user/dss/test/li 子目录仍存在

串行解压:

hdfs dfs -cp har:///user/zoo/foo.har/dir1 hdfs:/user/zoo/newdir

并行解压(Mapreduce),使用DistCp:

hadoop distcp har:///user/zoo/foo.har/dir1 hdfs:/user/zoo/newdir

报错

 ERROR tools.DistCp: Exception encountered 
java.io.IOException: Invalid path for the Har Filesystem.

表示解压路径不是一个新路径(必须是新路径,否则会报路径无效)

discp 命令

DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。 由于使用了Map/Reduce方法,这个工具在语义和执行上都会有特殊的地方。 这篇文档会为常用DistCp操作提供指南并阐述它的工作模型。

参考:http://hadoop.apache.org/docs/r1.0.4/cn/distcp.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值