hadoop深入研究:(五)——Archives
来源:互联网 发布:对战平台mac版 编辑:程序博客网 时间:2024/05/17 05:55
简介
我们在hadoop深入研究:(一)——hdfs介绍里已讲过,hdfs并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在namenode节点占用内存,如果存在这样大量的小文件,它们会吃掉namenode节点的大量内存。
hadoop Archives可以有效的处理以上问题,他可以把多个文件归档成为一个文件,归档成一个文件后还可以透明的访问每一个文件,并且可以做为mapreduce任务的输入。
用法
hadoop Archives可以使用archive工具创建,同上一篇讲的distcp一样,archive也是一个mapreduce任务。首先我们先来看下我的目录结构:
- [hadoop@namenode ~]$hadoop fs -lsr
- drwxr-xr-x - hadoop supergroup 0 2013-06-20 12:37 /user/hadoop/har
- drwxr-xr-x - hadoop supergroup 0 2013-05-23 11:35 /user/hadoop/input
- -rw-r--r-- 2 hadoop supergroup 888190 2013-05-23 11:35 /user/hadoop/input/1901
- -rw-r--r-- 2 hadoop supergroup 888978 2013-05-23 11:35 /user/hadoop/input/1902
- -rw-r--r-- 2 hadoop supergroup 293 2013-06-02 17:44 /user/hadoop/news.txt
我们通过archive工具才对该目录进行归档
- hadoop archive -archiveName input.har -p /user/hadoop/ input har
- <div style="text-align: left;"><span style="font-family: arial, 宋体, sans-serif; ">[hadoop@namenode ~]$hadoop fs -ls har</span></div>Found 1 items
- drwxr-xr-x - hadoop supergroup 0 2013-06-20 12:38 /user/hadoop/har/input.har
- [hadoop@namenode ~]$hadoop fs -ls har/input.har
- Found 4 items
- -rw-r--r-- 2 hadoop supergroup 0 2013-06-20 12:38 /user/hadoop/har/input.har/_SUCCESS
- -rw-r--r-- 5 hadoop supergroup 272 2013-06-20 12:38 /user/hadoop/har/input.har/_index
- -rw-r--r-- 5 hadoop supergroup 23 2013-06-20 12:38 /user/hadoop/har/input.har/_masterindex
- -rw-r--r-- 2 hadoop supergroup 1777168 2013-06-20 12:38 /user/hadoop/har/input.har/part-0
如果用har uri去访问的话,这些文件就会隐藏起来,只显示原文件
- [hadoop@namenode ~]$hadoop fs -lsr har:///user/hadoop/har/input.har
- drwxr-xr-x - hadoop supergroup 0 2013-05-23 11:35 /user/hadoop/har/input.har/input
- -rw-r--r-- 2 hadoop supergroup 888978 2013-05-23 11:35 /user/hadoop/har/input.har/input/1902
- -rw-r--r-- 2 hadoop supergroup 888190 2013-05-23 11:35 /user/hadoop/har/input.har/input/1901
- [hadoop@namenode ~]$hadoop fs -lsr har:///user/hadoop/har/input.har/input
- -rw-r--r-- 2 hadoop supergroup 888978 2013-05-23 11:35 /user/hadoop/har/input.har/input/1902
- -rw-r--r-- 2 hadoop supergroup 888190 2013-05-23 11:35 /user/hadoop/har/input.har/input/1901
- [hadoop@namenode ~]$hadoop fs -lsr har://hdfs-namenode:9000/user/hadoop/har/input.har/input
- -rw-r--r-- 2 hadoop supergroup 888978 2013-05-23 11:35 /user/hadoop/har/input.har/input/1902
- -rw-r--r-- 2 hadoop supergroup 888190 2013-05-23 11:35 /user/hadoop/har/input.har/input/1901
删除文件相对简单,但需要递归删除,否则报错
- [hadoop@namenode ~]$hadoop fs -rmr har/input.har
- Deleted hdfs://192.168.115.5:9000/user/hadoop/har/input.har
限制
archive文件有一些限制条件:
1.创建archive文件要消耗和原文件一样多的硬盘空间
2.archive文件不支持压缩,尽管archive文件看起来象已经被压缩过了。
3.archive文件一旦创建就无法改变,这就意味这你要改一些东西的话,你需要创新创建archive文件
4.虽然解决了namenode的内存空间问题,但是在执行mapreduce时,会把多个小文件交给同一个mapreduce去split,这样明显是低效的
解决namenode内存的问题可以参照之前的文章中的hdfs federation。
感谢Tom White,此文章大部分来自于大神的definitive guide,奈何中文版翻译太烂,就在英文原版的基础上和官方的一些文档加入一些自己的理解。
全当是读书笔记吧,画蛇添足之举。
转自:http://blog.csdn.net/lastsweetop/article/details/9123155
- hadoop深入研究:(五)——Archives
- Hadoop深入研究:(五)——Archives
- hadoop深入研究:(五)——Archives
- hadoop深入研究:(四)——distcp
- hadoop深入研究:(七)——压缩
- hadoop深入研究:(八)——codec
- hadoop深入研究:(四)——distcp
- hadoop深入研究:(七)——压缩
- hadoop深入研究:(八)——codec
- hadoop深入研究-(八)——codec
- hadoop深入研究-(八)——codec
- hadoop深入研究-(八)——codec
- hadoop深入研究-(八)——codec
- hadoop深入研究-(八)——codec
- hadoop深入研究:(四)——distcp
- hadoop深入研究:(七)——压缩
- hadoop深入研究:(八)——codec
- hadoop深入研究:(七)——压缩
- Linux : too many open files
- JAVA 并发编程
- Unity3D编辑器的结构介绍之Scene视图
- hadoop深入研究:(四)——distcp
- 送给只会PHP的程序员们一些话
- hadoop深入研究:(五)——Archives
- hadoop深入研究:(六)——HDFS数据完整性
- 第八章 例8.1
- 一个简单的外壳程序的main历程
- 在MFC中使用Qt生成的DLL
- hadoop深入研究:(七)——压缩
- Java串口通信
- Linux操作系统下三种配置环境变量的方法
- 高精度整数加法