Hadoop HDFS (4) Hadoop Archives
2024-08-26 08:20:44
用HDFS存储小文件是不经济的,由于每一个文件都存在一个block里,每一个block的metadata又在namenode的内存里存着,所以,大量的小文件。会吃掉大量的namenode的内存。(注意:一个小文件占用一个block,可是这个block的大小不是设定的值,比方设定每一个block是128M。可是一个1M的文件存在一个block里。实际占用的datanode的硬盘大小是1M,而不是128M。所以这里说的不经济是指占用大量namenode的内存资源。而不是说占用大量datanode的磁盘资源。)
Hadoop Archives(HAR文件)是一个文件打包工具,它把文件打包放进HDFS,以更加有效地利用block,从而减少namenode的内存使用。同一时候,Hadoop Archives还同意client透明訪问HAR包里的文件,像訪问目录里的文件一样方便,更重要的是,HAR文件还能够作为MapReduce的输入。
Hadoop Archives的用法
$hadoop fs -ls -R /user/norris/
列出/user/norris/文件夹下的全部文件,-R表示递归列出子文件夹里的文件。
然后我们能够使用以下命令:
$hadoop archive -archiveName files.har -p /user/norris/ /user/norris/har/
这个命令把/user/norris/文件夹下的全部内容打成files.har包放在/user/norris/har/下。
-p表示父文件夹(parent)。
之后使用
$hadoop fs -ls /user/norris/har/
查看/user/norris/har/文件夹下生成一个files.har文件。
$hadoop fs -ls /user/norris/har/files.har
能够看到files.har包由两个index文件和一组part文件组成。
part文件就是把全部文件内容拼接在一起,index文件存储文件起始位置的偏移量和文件长度。
假设要查看har文件的内容。能够用URI Scheme har来查看:
$hadoop fs -ls -R har:///user/norris/har/files.har
列出har里的文件和文件夹
HAR文件系统位于底层文件系统(HDFS)之上。
删除一个har文件要使用:
$hadoop fs -rm -R /user/norris/har/files.har
要用-R选项,由于在底层文件系统看来。.har文件事实上是一个文件夹。
Hadoop Archives的使用限制
1. 创建一个HAR须要跟源文件同样大小的空间,所以,在准备创建一个HAR之前,要保证有同样大小的磁盘空间。创建之后,能够删除原来的文件。文件夹Hadoop Archives仅仅打包,不压缩。
2. HAR文件一旦创建不可改动,不能向当中添加或删除文件。在实际使用中。一般对于一旦生成就不再更改的文件做定期的archive,比方,每天把当天生成的日志文件打成一个包。
3. 之前提到HAR文件能够作为MapReduce的输入,可是多个小文件打成包输入给MapReduce,并不比单独小文件输入给MapReduce更有效率,关于解决众多小文件输入的效率问题,后面要讨论其它解决方式。
4. 假设namenode的内存不够用了,在考虑降低系统中的大量小文件之后。应该考虑HDFS Federation。我们之前提到过:http://blog.csdn.net/norriszhang/article/details/39178041
最新文章
- 数字信号处理实验(四)——数字滤波器结构
- UIView 的autoresizingMask属性
- 1008. Elevator (20)
- Linux中查看进程的多线程
- sencha touch xtype
- App在后台运行
- java与.net比较学习系列(1) 开发环境和常用调试技巧
- hive metastore Server 出现异常
- 《java.util.concurrent 包源码阅读》18 Exchanger
- C# — Windows服务安装后自动停止问题
- MVCC(Multi-version Cocurrent Control)多版本并发控制协议
- ICPC World Finals 2019 题解
- 基于Python自动上传包到nexus仓库
- 个人作业2——APP案例分析
- php 百家姓
- 【经典漏洞案例】NSA黑客工具包——Windows 0day验证实验
- mysql四-1:单表查询
- Python获取网页Html文本
- 11-Mysql数据库----单表查询
- 安装软件时出现dll文件缺失
热门文章
- SpringBoot学习笔记(16)----SpringBoot整合Swagger2
- 《Unix环境高级编程》读书笔记 第8章-进程控制
- 使用了未经检查或不安全的操作。有关详细信息, 请使用 -Xlint:unchecked 重新编译。
- UE4.18.3 C++项目无法打开C++类问题(VS2017)
- TP5 错误信息提示入坑指南
- HDU-5009 Paint Pearls 动态规划 双向链表
- BZOJ 1355[Baltic2009]Radio Transmission(KMP)
- hadoop-13-root ssh无密码登陆
- HDU 5319
- Android 经常使用工作命令mmm,mm,m,croot,cgrep,jgrep,resgrep,godir