用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







Hadoop HDFS (4) Hadoop Archives的更多相关文章

  1. 【转】Hadoop HDFS分布式环境搭建

    原文地址  http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统 ...

  2. Hadoop(1)---运行Hadoop自带的wordcount出错问题。

    在hadoop2.9.0版本中,对namenode.yarn做了ha,随后在某一台namenode节点上运行自带的wordcount程序出现偶发性的错误(有时成功,有时失败),错误信息如下: // : ...

  3. Hadoop演进与Hadoop生态

    1.了解对比Hadoop不同版本的特性,可以用图表的形式呈现. (1)0.20.0~0.20.2: Hadoop的0.20分支非常稳定,虽然看起来有些落后,但是经过生产环境考验,是 Hadoop历史上 ...

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

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

  5. Docker 安装Hadoop HDFS命令行操作

    网上拉取Docker模板,使用singlarities/hadoop镜像 [root@localhost /]# docker pull singularities/hadoop 查看: [root@ ...

  6. hadoop/hdfs/yarn 详细命令搬运

    转载自文章 http://www.cnblogs.com/davidwang456/p/5074108.html 安装完hadoop后,在hadoop的bin目录下有一系列命令: container- ...

  7. 介绍hadoop中的hadoop和hdfs命令

    有些hive安装文档提到了hdfs dfs -mkdir ,也就是说hdfs也是可以用的,但在2.8.0中已经不那么处理了,之所以还可以使用,是为了向下兼容. 本文简要介绍一下有关的命令,以便对had ...

  8. Hadoop HDFS 用户指南

    This document is a starting point for users working with Hadoop Distributed File System (HDFS) eithe ...

  9. Hadoop HDFS负载均衡

    Hadoop HDFS负载均衡 转载请注明出处:http://www.cnblogs.com/BYRans/ Hadoop HDFS Hadoop 分布式文件系统(Hadoop Distributed ...

随机推荐

  1. swift语言点评十五-$0

    import UIKitimport XCPlayground class ViewController: UIViewController { func action() { print(" ...

  2. Java可以远程操作服务器的协议笔记

    1.SCPClient(本地复制到远程.远程复制到本地.目前未看到可以远程操作文件) 2.SMB协议(可以远程操作文件:新增.修改) 3.SFTPv3Client(可以远程操作文件:新增.修改)

  3. 滴滴云安装mysql数据库

    Linux CentOS安装配置MySQL数据库   没什么好说的,直接正面刚吧. 安装mysql数据库 a)下载mysql源安装包:wget http://dev.mysql.com/get/mys ...

  4. HDU-1052 Tian Ji -- The Horse Racing 贪心 考虑特殊位置(首尾元素)的讨论

    题目链接:https://cn.vjudge.net/problem/HDU-1052 题意 田忌赛马问题扩展版 给n匹马,马的能力可以相同 问得分最大多少 思路 贪心做得还是太少,一开始一点思虑都没 ...

  5. Ubuntu 如何进入系统文件/etc/profile修改内容

    转载:https://blog.csdn.net/cfq1491/article/details/81088117 /etc/profile 默认权限为 -rw-r--r-- 即只有root用户可以修 ...

  6. 关于JWT(Json Web Token)的思考及使用心得

    什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(php 后端实现JWT认证方法一般用来做轻量级的API鉴权.由于许多API接口设计是遵循无状态的(比如 ...

  7. 关于 Error: No PostCSS Config found in 的错误

    问题描述: 项目在本地运行不报错,上传到 GitHub 之后,再 clone 到本地, npm install 安装完成之后再执行 npm run dev 这时报错 Error: No PostCSS ...

  8. 【BZOJ 1208】[HNOI2004]宠物收养所

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用set搞. (因为规定了不会有相同特点值的东西. 所以可以不用multiset. 那么每次用lower_bound找离它最近的配对 ...

  9. python 工具包安装

    (1)wxPython是python的常用gui yum install wxPython (2)numpy, scipy是常用的数学处理工具包 yum install scipy

  10. 浅析为什么 char 类型的范围是 : -128~+127

    在 C 语言中. signed char 类型的范围为 -128~127,每本教科书上也这么写.可是没有哪一本书上(包含老师)也不会给你为什么是 -128~127,这个问题貌似看起来也非常easyea ...