hadoop命令:archive
hadoop版本:2.6.0
官方链接:
https://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/HadoopArchives.html#Overview
一. 引
hadoop不适合小文件的存储,小文件本省就占用了很多的metadata,就会造成namenode越来越大。Hadoop Archives的出现视为了缓解大量小文件消耗namenode内存的问题。
采用ARCHIVE 不会减少 文件存储大小,只会压缩NAMENODE 的空间使用
二. 什么是存档文件
hadoop存档是特殊格式的存档。该文件总是带有*.har扩展名的目录。目录下包含元数据(_index和_masterindex)和数据部分(part-*)
三. hadoop archive命令
1. 创建一个存档文件
创建一个归档文件的过程是一个MR作业,创建时使用如下命令
hadoop archive -archiveName name -p <parent> [-r <replication factor>] <src>* <dest>
- name:指定存档文件名,其名应该以*.har为后缀。
- -p :表示父目录,指定该参数后,后面的src可使用相对路径。dest使用相对路径时,其相对基础目录为计算用户目录而非-p指定的目录。
- -r 指示所需的复制因子;如果未指定此可选参数,则使用10的复制因子。所谓复制因子即为map任务的个数。
- src:源路径:可以指定指定一个,也可以指定多个,空格分隔
- dest:目标路径:最后一个路径为存放路径。
举个栗子,执行以下命令:hadoop archive -D HADOOP_USER_NAME=ochadoop -archiveName test.har -p /zpy/test hive hvie
表示打包后的文件名为test.har,源文件路径为/zpy/test/hive
下的所有文件,目标路径为/user/ochadoop/hvie
,复制因子为3。
源目录:
生成目录:
归档并不会删除源文件。
2. 查看har文件
har文件采用一套不同于hdfs的路径协议。基本格式为:har://<hdfs路径>
。在未添加协议url时,我们看到的是har文件在HDFS中的底层形式,加上协议头后我们可以看到其目录结构与源目录结构相同。
hadoop fs -ls -R har:///user/ochadoop/hvie/test.har
针对har文件的复制等操作同普通复制操作,唯一区别在于需要在路径头加协议。