Hadoop Archives

Hadoop archives是一种特殊格式的归档,一个归档往往映射到文件系统的目录,一个Hadoop archive通常是*.har的扩展文件。其映射的目录里面存放着元数据(形式如:_index, _masterindex)和数据(part-*)文件。_index文件指定了归档内各个分块文件的文件名和存放地址。

1. 创建归档

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

-archiveName指定创建归档的名称,如:foo.har,也就是说需要在归档名称后面添加一个*.har的扩展

-p 指定需归档的文件的相对路径,如:-p /foo/bar a/b/c e/f/g,/foo/bar是根目录,a/b/c,e/f/g是相对根目录的相对路径

-r 指定所需的复制因子,如果未被指定,默认为3

如果仅仅是想要归档一个单纯的/foo/bar目录,可以这样使用:

hadoop archive -archiveName zoo.har -p /foo/bar -r 3 /outputdir

如果指定了位于加密区域中的源文件,他们将被解密,然后被写入归档。如果har文件不在加密区域中,则它将以明文存储。

2. 查看归档中的文件

归档对外的身份是文件系统层,所以只需更换为操作归档的URI,就可以使用fs的shell命令。此外,需要注意的是,归档是不可变的,所以,名称更换,删除和创建等操作均会产生错误,归档的URI形如:

har://scheme-hostname:port/archivepath/fileinarchive

如果没有提供scheme,则URI形如:

har:///archivepath/fileinarchive

3. 反归档

类比于归档操作的fs shell命令,反归档要解决的仅为将归档文件复制到hdfs的问题

# 逐个反归档
hdfs dfs -cp har:///user/zoo/foo.har/dir1 hdfs:/user/zoo/newdir
# 使用DistCp进行并行操作
hadoop distcp har:///user/zoo/foo.har/dir1 hdfs:/user/zoo/newdir

4. 删除归档

删除har文件必须使用rmr命令,不能使用rm命令。

hdfs dfs -rmr /outputdir/part-00000.har

5.归档与MapReduce

在MapReduce中使用Hadoop归档文件,就像指定一个不同于默认文件系统的输入文件系统一样简单。假设有一个归档,存储在HDFS在/user/zoo/foo。然后为了使用MapReduce输入这个归档文件,可以指定输入目录为har:///user/zoo/foo.har。由于Hadoop Archives对外表现为一个文件系统,MapReduce将能够使用Hadoop Archives中的所有逻辑输入文件作为输入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值