Hadoop Archives档案
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档案的更多相关文章
- Hadoop Archives
原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/hadoop_archives.html 什么是Hadoop archives? 如何创建archive? 如 ...
- hadoop文件系统上的小文件合并-Hadoop Archives
1. 什么是Hadoop archives Hadoop archives是特殊的档案格式.一个Hadoop archive对应一个文件系统目录. Hadoop archive的扩展名是.har.Ha ...
- Hadoop HDFS (4) Hadoop Archives
用HDFS存储小文件是不经济的,由于每一个文件都存在一个block里,每一个block的metadata又在namenode的内存里存着,所以,大量的小文件.会吃掉大量的namenode的内存.(注意 ...
- hadoop深入研究:(五)——Archives
转载请注明来源地址:http://blog.csdn.net/lastsweetop/article/details/9123155 简介 我们在hadoop深入研究:(一)——hdfs介绍里已讲过, ...
- 从零自学Hadoop(11):Hadoop命令上
阅读目录 序 概述 Hadoop Common Commands User Commands Administration Commands File System Shell 引用 系列索引 本文版 ...
- 从零自学Hadoop(13):Hadoop命令下
阅读目录 序 MapReduce Commands User Commands Administration Commands YARN Commands User Commands Administ ...
- HADOOP命令介绍
一.用户命令1.archive命令 (1).什么是Hadoop archives?Hadoop archives是特殊的档案格式.一个Hadoop archive对应一个文件系统目录. Hadoop ...
- Hadoop 2.0命令手册
1. FS Shell 1.1 简介 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 所有的的FS shell命令使用URI ...
- hadoop shell 详解
概述 所有的hadoop命令均由bin/hadoop脚本引发.不指定参数运行hadoop脚本会打印所有命令的描述. 用法: hadoop [--config confdir] [COMMAND] ...
随机推荐
- vue 无限级分类导航
递归组件,实现无限级分类导航 https://cn.vuejs.org/v2/guide/components-edge-cases.html#%E9%80%92%E5%BD%92%E7%BB%84% ...
- js中报错"Maximum call stack size exceeded"解决方法
Uncaught RangeError: Maximum call stack size exceeded 错误直译过来就是“栈溢出”,出现这个错误的原因是因为我进行了递归运算,但是忘记添加判断条件, ...
- Java学习之路(四):面向对象
Java中的面向对象 概念:面向对象的原本的意思是“”万物皆对象“” 面向对象思想的特点: 是一种更符合我们思想习惯的思想,将复杂的事情简单化 使我们角色发生了转换,将我们从执行者变成了指挥者 面向对 ...
- 浏览器获取WEB服务器时间
/* * 获取XMLHttpRequest对象 */ function CreateXMLHttpRequest() { var xmlreq = false; if (window.ActiveXO ...
- 【JS】逻辑运算符 非! 与&& 或||
JS中的逻辑运算符在处理布尔值的判断时,和其他语言没有什么不同,不过在处理对象时,就需要好好梳理记忆下了. 逻辑非(!) 如果一个操作数是一个对象,返回false; 如果一个操作数是一个空字符串,返回 ...
- JavaScript中类型检测
文章首发: http://www.cnblogs.com/sprying/p/4349426.html 本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块,这篇文章是我很早之前总结的. 一. ...
- Java入门系列-20-异常
为什么要进行异常处理 下面这段代码能否正常执行 public class DemoCalc { public static void main(String[] args) { int a=0; in ...
- Db - DataAccess
/* Jonney Create 2013-8-12 */ /*using System.Data.OracleClient;*/ /*using System.Data.SQLite;*/ /*us ...
- net 记录controller Action耗时
可能有些时候需要记录Action的执行时间来优化系统功能,这时可以用过滤器来实现 第1个例子 using System; using System.Diagnostics; using System. ...
- 分布式事务概述--2pc的概念
转载自一个大拿:http://www.cnblogs.com/LBSer/p/4715395.html 前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我 ...