码迷,mamicode.com
首页 > 其他好文 > 详细

hadoop文件系统上的小文件合并-Hadoop Archives

时间:2018-07-21 18:02:24      阅读:411      评论:0      收藏:0      [点我收藏+]

标签:des   前缀   文件系统   应该   删除   name   局限性   扩展名   文件的   

1. 什么是Hadoop archives

Hadoop archives是特殊的档案格式。一个Hadoop archive对应一个文件系统目录。 Hadoop archive的扩展名是.har。Hadoop archive包含元数据(形式是_index和_masterindx)和数据(part-)文件。_index文件包含了档案中的文件的文件名和位置信息。

2. 创建archives

创建archives是一个Map/Reduce job。你应该在map reduce集群上运行这个命令。
用法:hadoop archive -archiveName name -p <parent> <src>* <dest>

(1) -archiveName用来指定要创建的archive的文件名,必须以.har结尾,例如:foo.har;

(2) 参数"-p"为src path的前缀

示例1:

hadoop archive -archiveName IotBillBackup201805.har -p /IotBillBackup201805 /har/IotBillBackup201805

在上面的例子中,/IotBillBackup201805目录下的所有文件会被归档到这个文件系统目录下/har/IotBillBackup201805/IotBillBackup201805.har。
示例2:

hadoop archive -archiveName foo.har -p /user/hadoop dir1 dir2 /user/zoo/

在上面的例子中,/user/hadoop/dir1 和 /user/hadoop/dir2 会被归档到这个文件系统目录下/user/zoo/foo.har。
注意:当创建archive时,源文件不会被更改或删除

3. 访问archives

hdfs dfs -ls har:///har/IotBillBackup201805/IotBillBackup201805.har
hdfs dfs -ls har:///user/zoo/foo.har

4. 解压archives

(1) 串行解压

# 把IotBillBackup201805.har中的文件全部解压到/IotBillBackup201805目录下
hdfs dfs -cp har:///har/IotBillBackup201805/IotBillBackup201805.har/* hdfs:/IotBillBackup201805

hdfs dfs -cp har:////user/hadoop/dir1 hdfs:/user/zop/newdir1
hdfs dfs -cp har:////user/hadoop/dir2 hdfs:/user/zop/newdir2

(2) 并行解压(Map/Reduce job),使用DistCp:

hadoop distcp har:///har/IotBillBackup201805/IotBillBackup201805.har/* hdfs:/IotBillBackup201805

启动一个Mapreduce任务来完成解压

5. archives的局限性

(1) 创建archive文件要消耗和原文件一样多的硬盘空间;

(2) archive文件不支持压缩,尽管archive文件看起来象已经被压缩过了;

(3) archive文件一旦创建就无法改变,这就意味这你要改一些东西的话,你需要重新创建archive文件。

hadoop文件系统上的小文件合并-Hadoop Archives

标签:des   前缀   文件系统   应该   删除   name   局限性   扩展名   文件的   

原文地址:https://www.cnblogs.com/concurrencyy/p/9347364.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!