设为首页 加入收藏

TOP

hadoop优化 之 Archive 归档工具使用
2018-11-30 00:47:09 】 浏览:108
Tags:hadoop 优化 Archive 归档 工具 使用
版权声明:本文为博主原创文章,转载请附上原出处。 https://blog.csdn.net/Veechange/article/details/50776177
Hadoop并不擅长对小型文件的储存,原因取决于Hadoop文件系统的文件管理机制,Hadoop的文件存储的单元为一个块(block),block的数据存放在集群中的datanode节点上,由namenode对所有datanode存储的block进行管理。namenode将所有block的元数据存放在内存中,以方便快速的响应客户端的请求。那么问题来了,不管一个文件有多小,Hadoop都把它视为一个block,大量的小文件,将会把namenode的内存耗尽。
那么如何对大量的小文件进行有效的处理呢?Hadoop的优秀工程师们其实已经为我们考虑好了,Hadoop提供了一个叫Archive归档工具,Archive可以把多个文件归档成为一个文件,换个角度来看,Archive实现了文件的元数据整理,但是,归档的文件大小其实没有变化,只是压缩了文件的元数据大小。
Archive的用法:
1、看一下,目录结构: hadoop fs -ls -R

2、归档gs目录:hadoop archive -archiveName gs.har -p /user/cb/gs har
-archiveName 指定归档文件名;
-p 指定要进行归档目录的父目录,支持同时归档多个子目录;
gs 归档目录
har 归档文件存放的目录
#具体的执行信息如下:是通过MapReduce来完成的,只有map,没有reduce的Job。(下面只是节选执行结果)
cb@Standalone14:~$ hadoop archive -archiveName gs.har -p /user/cb/gs har
16/02/15 08:32:59 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
16/02/15 08:32:59 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
16/02/15 08:33:00 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
16/02/15 08:33:00 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
16/02/15 08:33:01 INFO mapreduce.JobSubmitter: number of splits:1
16/02/15 08:33:01 INFO mapreduce.JobSubmitter: Submitting tokens for job:job_local1719015123_0001
16/02/15 08:33:01 INFO mapreduce.Job: The url to track the job: http://localhost:8080/

3、查看执行结果:hadoop fs -ls har #创建了一个目录har,目录下有一个gs.har文件;


4、查看归档文件明细文件:hadoop fs -ls har/gs.har
归档文件中包括2个索引文件:_index,_masterindex;part是多个原文件的集合,根据index文件去找到原文件。


5、查看归档文件的原文件:hadoop fs -ls -R har:///user/cb/har/gs.har


6、另外,我们可以像其它文件系统一样,操作har文件的下级目录: hadoop fs -ls -R har:///user/cb/har/gs.har/gs


7、远程操作归档文件也是很方法的:hadoop fs -ls -R har://hdfs-localhost:9090/user/cb/har/gs.har/gs


8、删除归档文件:hadoop fs -rmr har/gs.har

不足的地方:
1、archive文件本占用与原文件相同的硬盘空间;
2、archive文件不支持压缩;
3、archive一旦创建就不能进行修改;
4、archive虽然解决了namenode的空间问题,但是,在执行mapreduce时,会把多个小文件交给同一个mapreduce去split,这会降低mapreduce的效率。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hadoop实践(三)---Hadoop数据类.. 下一篇Hadoop回顾之Hadoop发展史

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目