HDFS 并不擅长存储小文件,因为每个文件最少一个 block,每个 block 的元数据都会在 NameNode 占用内存,如果存在大量的小文件,它们会吃掉NameNode 节点的大量内存。

Hadoop Archives 可以有效的处理以上问题,它可以把多个文件归档成为一个文件,归档成一个文件后还可以透明的访问每一个文件。

使用方法

创建 Archives(档案)

Usage: hadoop archive -archiveName name -p <parent> <src>* <dest>

  其中-archiveName 是指要创建的存档的名称。比如 test.har,archive 的名字的扩展名应该是*.har。 -p 参数指定文件存档文件(src)的相对路径。

  举个例子:-p /foo/bar a/b/c e/f/g

  这里的/foo/bar 是 a/b/c 与 e/f/g 的父路径,所以完整路径为/foo/bar/a/b/c 与/foo/bar/e/f/g

  例如:如果你只想存档一个目录/input 下的所有文件:

hadoop archive -archiveName test.har –p /input /outputdir

  这样就会在/outputdir 目录下创建一个名为 test.har 的存档文件。

查看 Archives

  首先我们来看下创建好的 har 文件。使用如下的命令:

hadoop fs -ls /outputdir/test.har

  这里可以看到 har 文件包括:两个索引文件,多个 part 文件(本例只有一个)以及一个标识成功与否的文件。part 文件是多个原文件的集合,根据index 文件去找到原文件。

  例如上述的三个小文件 1.txt 2.txt 3.txt 内容分别为 1,2,3。进行archive 操作之后,三个小文件就归档到 test.har 里的 part-0 一个文件里。

  archive 作为文件系统层暴露给外界。所以所有的 fs shell 命令都能在archive 上运行,但是要使用不同的 URI。Hadoop Archives 的 URI 是:

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

  scheme-hostname 格式为 hdfs-域名:端口,如果没有提供 scheme-hostname,它会使用默认的文件系统。这种情况下 URI 是这种形式:

har:///archivepath/fileinarchive

  如果用 har uri 去访问的话,索引、标识等文件就会隐藏起来,只显示创建档案之前的原文件:

解压 Archives

  按顺序解压存档(串行):

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

  要并行解压存档,请使用 DistCp:

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

har文档结构

Archive 注意事项

  1. Hadoop archives 是特殊的档案格式。一个 Hadoop archive 对应一个文件系统目录。Hadoop archive 的扩展名是*.har;

  2. 创建 archives 本质是运行一个 Map/Reduce 任务,所以应该在 Hadoop集群上运行创建档案的命令;

  3. 创建 archive 文件要消耗和原文件一样多的硬盘空间;

  4. archive 文件不支持压缩,尽管 archive 文件看起来像已经被压缩过;

  5. archive 文件一旦创建就无法改变,要修改的话,需要创建新的archive 文件。事实上,一般不会再对存档后的文件进行修改,因为它们是定期存档的,比如每周或每日;

  6. 当创建 archive 时,源文件不会被更改或删除;

  7. 虽然 HAR 文件可以作为 MR 的输入,但是由于 InputFormat 类并不知道文件已经存档,所以即使在 HAR 文件里处理许多小文件,仍然低效。

Hadoop Archives档案的更多相关文章

  1. Hadoop Archives

    原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/hadoop_archives.html 什么是Hadoop archives? 如何创建archive? 如 ...

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

    1. 什么是Hadoop archives Hadoop archives是特殊的档案格式.一个Hadoop archive对应一个文件系统目录. Hadoop archive的扩展名是.har.Ha ...

  3. Hadoop HDFS (4) Hadoop Archives

    用HDFS存储小文件是不经济的,由于每一个文件都存在一个block里,每一个block的metadata又在namenode的内存里存着,所以,大量的小文件.会吃掉大量的namenode的内存.(注意 ...

  4. hadoop深入研究:(五)——Archives

    转载请注明来源地址:http://blog.csdn.net/lastsweetop/article/details/9123155 简介 我们在hadoop深入研究:(一)——hdfs介绍里已讲过, ...

  5. 从零自学Hadoop(11):Hadoop命令上

    阅读目录 序 概述 Hadoop Common Commands User Commands Administration Commands File System Shell 引用 系列索引 本文版 ...

  6. 从零自学Hadoop(13):Hadoop命令下

    阅读目录 序 MapReduce Commands User Commands Administration Commands YARN Commands User Commands Administ ...

  7. HADOOP命令介绍

    一.用户命令1.archive命令 (1).什么是Hadoop archives?Hadoop archives是特殊的档案格式.一个Hadoop archive对应一个文件系统目录. Hadoop ...

  8. Hadoop 2.0命令手册

    1.       FS Shell 1.1     简介 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 所有的的FS shell命令使用URI ...

  9. hadoop shell 详解

    概述  所有的hadoop命令均由bin/hadoop脚本引发.不指定参数运行hadoop脚本会打印所有命令的描述.  用法: hadoop [--config confdir] [COMMAND] ...

随机推荐

  1. Dubbo的Api+Provider+Customer示例(IDEA+Maven+Springboot+dubbo)

    项目结构 dubbo-demo dubbo-api:提供api接口,一般存储实体类和接口服务 dubbo-provider:dubbo生产者提供服务,一般存储接口具体实现 dubbo-customer ...

  2. J15W-J45W铜质截止阀厂家,J15W-J45W铜质截止阀价格 - 专题栏目 - 无极资讯网

    无极资讯网 首页 最新资讯 最新图集 最新标签   搜索 J15W-J45W铜质截止阀 无极资讯网精心为您挑选了(J15W-J45W铜质截止阀)信息,其中包含了(J15W-J45W铜质截止阀)厂家,( ...

  3. openerp学习笔记 domain 的应用

    1.在Action中定义,domain用于对象默认的搜索条件: 示例: <record id="action_orders" model="ir.actions.a ...

  4. jmeter调试脚本之变量参数化

    前言 对于参数化,觉得用得最多的应该是csvread函数.csv data config以及用户自定义变量(前一篇文章已经进行了讲解)控制器这几个 案例:bugfree ,提交bug,参数bug名称和 ...

  5. p2p的UDP打洞原理

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  6. HDU 5700——区间交——————【线段树+枚举】

    区间交 Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  7. Go语言备忘录(1):基本数据结构

    本文内容是本人对Go语言的变量.常量.数组.切片.映射.结构体的备忘录,记录了关键的相关知识点,以供翻查. 文中如有错误的地方请大家指出,以免误导!转摘本文也请注明出处:Go语言备忘录(1):基本数据 ...

  8. js实现页面跳转的八种方式

    整理一下JavaScript八种跳转方式,欢迎评论补充! 第一种方法: <script> window.location.replace('http://www.cnblogs.com/c ...

  9. WPF MVVM 之理解(数据绑定)

    (申明:最近在做一个练习,写点东西,谨供参考.) 1.界面展示:其中的布局和样式就不说了,重点在MVVM架构和数据绑定(Model层使用EF(Entity Framework)实体框架,不做介绍). ...

  10. Rabbit主题交换机

    主题交换机类型为:topic. 是直连交换机的一种.只是比直连交换机更灵活,在路由键上引入了通配符的概念 topic交换机支持通配符的路由键. *表示匹配一个词. #匹配所有 生产者 : packag ...