用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. ZBrush雕刻生物小技巧

    本教程主要学习如何使用ZBrush®3D图形绘制软件的工具和笔刷雕刻酷酷的生物造型,我们今天来看看在游戏.媒体和电视领域有着十几年丰富经验的3D角色艺术家Francis-Xavier Martins是 ...

  2. .NET Framework 3.5 无法安装以下功能 安装错误:0x800F0906(客户端加域后出现)

    问题:安装错误:0x800F0906    系统安装并加域后,在安装用友软件时提示没有.net 3.5 系统为win10 但是,点击确定后,却出现了这样的错误.如下: 点击下载并安装此功能,出现了这样 ...

  3. h5 input失去焦点软键盘把页面顶起

    var broswer=localStorage.getItem('temp') //浏览器环境 var u = navigator.userAgent var isiOS = !!u.match(/ ...

  4. k8s使用ceph存储

    目录 ceph配置 k8s 配置 通过静态pv,pvc使用ceph 测试多pod挂载静态pv数据不一致问题 StoragaClass 方式 ceph 常用命令 k8s 常用命令 k8s各类端口及IP说 ...

  5. kubernetes 项目

    1:CI/CD Docker: Harbor Git Jenkins 2:微服务 istio

  6. POJ 1161 Walls(最短路+枚举)

    POJ 1161 Walls(最短路+枚举) 题目背景 题目大意:题意是说有 n个小镇,他们两两之间可能存在一些墙(不是每两个都有),把整个二维平面分成多个区域,当然这些区域都是一些封闭的多边形(除了 ...

  7. 如何成为一个偷懒又高效的Android开发人员

    我敢肯定你对这个标题肯定心存疑惑,但事实就是如此,这个标题完全适合Android开发人员.据我所知, Android程序员不情愿写 findViewById().点击事件监听等重复率较高的代码.那我们 ...

  8. systemverilog中堵塞和非堵塞事件以及同步

    一.SV中非堵塞事件 module test; event ev1, ev2; //belong to logic function part always@(ev1) $display(" ...

  9. linux内核设计的艺术--系统启动第一步

    计算机究竟是如何执行起来的呢,在我学习计算机的时候一直不是非常明确,可是近期借了本<linux内核设计的艺术>算是知道了计算机从按开机到启动操作系统之间究竟做了些什么. 这本书刚開始介绍的 ...

  10. java9新特性-18-统一的JVM日志系统

    1.官方Feature 158: Unified JVM Logging 271: Unified GC Logging 2.使用说明 日志是解决问题的唯一有效途径:曾经很难知道导致JVM性能问题和导 ...