hdfs 存储小文件弊端

每个文件均按块存储,每个块的元数据存储在 NameNode 的内存中,因此hadoop 存储小文件会非常低效。因为大量的小文件会耗尽 NameNode 中的大部分内存。但注意,存储小文件所需要的磁盘容量和存储这些文件原始内容所需要的磁盘空间相比也不会增多。例如, 一个 1MB 的文件以大小为 128MB 的块存储,使用的是 1MB 的磁盘空间,而不是 128MB。

HAR 文件

Hadoop Archives (HAR files)是在 Hadoop 0.18.0 版本中引入的,它的出现就是为了缓解大量小文件消耗 NameNode 内存的问题。HAR 文件是通过在 HDFS 上构建一个层次化的文件系统来工作。一个 HAR 文件是通过 hadoop 的 archive 命令来创建,而这个命令实 际上也是运行了一个 MapReduce 任务来将小文件打包成 HAR 文件。对客户端来说,使用 HAR 文件没有任何影响。所有的原始文件都可见并且可访问的(通过 har://URL)。但在 HDFS 端它内部的文件数减少了。

Hadoop 存档文件或 HAR 文件,是一个更高效的文件存档工具,它将文件存入 HDFS 块,在减少 NameNode 内存使用的同时,允许对文件进行透明的访问。具体说来,Hadoop 存档文件对内还是一个一个独立文件,对 NameNode 而言却是一个整体,减少了 NameNode 的内存。

创建测试数据

本次用的单节点hadoop101,启动集群有点卡。

//本地上传3个jpg
[root@hadoop101 tmp]# pwd
/root/tmp
[root@hadoop101 tmp]# hdfs dfs -mkdir -p /ylj/demo
[root@hadoop101 tmp]# hdfs dfs -put ./1.jpg /ylj/demo/1.jpg
[root@hadoop101 tmp]# hdfs dfs -put ./1.jpg /ylj/demo/2.jpg
[root@hadoop101 tmp]# hdfs dfs -put ./1.jpg /ylj/demo/3.jpg

测试

启动yarn
[root@hadoop101 hadoop-2.7.2]# start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-root-resourcemanager-hadoop101.out
localhost: starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-root-nodemanager-hadoop101.out
归档文件

使用方法

[root@hadoop101 tmp]# hadoop  archive
archive -archiveName <NAME>.har -p <parent path> [-r <replication factor>]<src>* <dest>Invalid usage.

执行归档

[root@hadoop101 tmp]# hadoop  archive  -archiveName demo.har -p /ylj/demo /ylj/har
19/04/01 01:24:07 INFO client.RMProxy: Connecting to ResourceManager at hadoop101/192.168.1.101:8032
19/04/01 01:24:08 INFO client.RMProxy: Connecting to ResourceManager at hadoop101/192.168.1.101:8032
19/04/01 01:24:08 INFO client.RMProxy: Connecting to ResourceManager at hadoop101/192.168.1.101:8032
19/04/01 01:24:08 INFO mapreduce.JobSubmitter: number of splits:1
19/04/01 01:24:08 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1554052164088_0002
19/04/01 01:24:09 INFO impl.YarnClientImpl: Submitted application application_1554052164088_0002
19/04/01 01:24:09 INFO mapreduce.Job: The url to track the job: http://hadoop101:8088/proxy/application_1554052164088_0002/
19/04/01 01:24:09 INFO mapreduce.Job: Running job: job_1554052164088_0002
19/04/01 01:24:17 INFO mapreduce.Job: Job job_1554052164088_0002 running in uber mode : false
19/04/01 01:24:17 INFO mapreduce.Job:  map 0% reduce 0%
19/04/01 01:24:25 INFO mapreduce.Job:  map 100% reduce 0%
19/04/01 01:24:33 INFO mapreduce.Job:  map 100% reduce 100%
19/04/01 01:24:34 INFO mapreduce.Job: Job job_1554052164088_0002 completed successfully
19/04/01 01:24:35 INFO mapreduce.Job: Counters: 49
....省略一万行....


查看归档
[root@hadoop101 tmp]# hdfs dfs -ls -R /ylj/har/demo.har
-rw-r--r--   1 root supergroup          0 2019-04-01 01:24 /ylj/har/demo.har/_SUCCESS
-rw-r--r--   5 root supergroup        270 2019-04-01 01:24 /ylj/har/demo.har/_index
-rw-r--r--   5 root supergroup         23 2019-04-01 01:24 /ylj/har/demo.har/_masterindex
-rw-r--r--   1 root supergroup     305970 2019-04-01 01:24 /ylj/har/demo.har/part-0
[root@hadoop101 tmp]# hdfs dfs -ls -R har:///ylj/har/demo.har
-rw-r--r--   1 root supergroup     101990 2019-04-01 01:16 har:///ylj/har/demo.har/1.jpg
-rw-r--r--   1 root supergroup     101990 2019-04-01 01:16 har:///ylj/har/demo.har/2.jpg
-rw-r--r--   1 root supergroup     101990 2019-04-01 01:16 har:///ylj/har/demo.har/3.jpg

如果想把归档文件中的内容解析出来,可以使用-cp命令

[root@hadoop101 tmp]# hdfs dfs -mkdir /ylj/demo_har
[root@hadoop101 tmp]# hdfs dfs -cp har:///ylj/har/demo.har/* /ylj/demo_har

Hadoop HDFS archive 存档相关推荐

  1. Python +大数据-hadoop生态-hadoop(三)--Hadoop HDFS

    Python +大数据-hadoop生态-hadoop(三)–Hadoop HDFS 今日课程学习目标 理解分布式文件存储的概念与实现 掌握HDFS分块存储.副本机制等特性 学会shell操作HDFS ...

  2. Hadoop HDFS文件操作的Java代码

    1.创建目录 import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.ha ...

  3. bboss hadoop hdfs大数据抽取工具

    bboss大数据抽取工具功能特点如下: 实现db到hadoop hdfs数据导入功能,提供高效的分布式并行处理能力,可以采用数据库分区.按字段分区.分页方式并行批处理抽取db数据到hdfs文件系统中: ...

  4. org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in receiveBlock for block

    Hbase依赖的datanode日志中如果出现如下报错信息:DataXceiverjava.io.EOFException: INFO org.apache.hadoop.hdfs.server.da ...

  5. JAVA程序连接hadoop HDFS服务报无法连接。

    2019独角兽企业重金招聘Python工程师标准>>> 在虚拟机部署hadoop的HDFS系统,在centos系统中敲各种操作命令,对文件读取.上传.删除等都没什么问题.但用JAVA ...

  6. Linux下Hadoop hdfs Java API使用

    0 前言 搞了大约2天时间终于把Linux下面Java API的使用给弄清楚了.做个笔记方便以后参考.环境如下所示 Hadoop:2.5.1 Linux:Ubuntu kylin eclipse:lu ...

  7. Hadoop HDFS概念学习系列之熟练掌握HDFS的Shell访问(十五)

    调用文件系统(FS)Shell命令应使用 $HADOOP_HOME/bin/hadoop fs  *** 的形式!!! 所有的FS Shell命令使用URI路径作为参数. URI格式是scheme:/ ...

  8. BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略

    BigData:大数据开发的简介.核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS.HBase.Hive}+Docker).经典场景应用之详细攻略 BigData:大数 ...

  9. Hadoop HDFS分布式文件系统 常用命令汇总

    引言:我们维护hadoop系统的时候,必不可少需要对HDFS分布式文件系统做操作,例如拷贝一个文件/目录,查看HDFS文件系统目录下的内容,删除HDFS文件系统中的内容(文件/目录),还有HDFS管理 ...

最新文章

  1. LiveGBS国标流媒体-摄像机网页低延时无插件直播实现
  2. Heroku和Java –从新手到初学者,第1部分
  3. armqt字体ttf_QT字体的设置
  4. 联想小新模式切换不了_小新Pro 14 2021正式发布,联想举行秋季新品发布会,10款新品齐亮相...
  5. python-day34--进程补充
  6. CentOS7开机进入emergency mode
  7. Atitit 图像金字塔原理与概率 attilax的理解总结qb23
  8. 基于MATLAB的银行卡号识别算法研究
  9. 量化策略回测DualThrust
  10. 计算机坏处英语,玩电脑的危害英语作文,沉迷电脑的危害英语作文!
  11. 车内看车头正不正技巧_侧方位停车把把入库技巧,驾校没教的中途修正方法很实用...
  12. Problem L: 最简分式
  13. STM8学习笔记1:CPU简介
  14. 【已解决】平板作为外接显示屏-Duet
  15. 魅族16php7.3系统,魅族16th官方稳定版固件rom系统刷机包:Flyme 7.3.0.0A
  16. 复习笔记:科学技术史
  17. 【微信小程序】设备判断android还是ios及微信版本信息 ( 含工具类 )
  18. 变异凯撒1(BUCTF在线评测)
  19. 《巴菲特之道》精髓:巴菲特的股神进阶之路和投资方法
  20. 译文:创建性感的CSS

热门文章

  1. 使用curl工具调试https接口
  2. HTTP和HTTPS有什么区别?如何实现网站的HTTPS?
  3. C语言写的“斗牛”游戏原代码
  4. 虚拟汽车加油问题C语言——For初学者
  5. python venv文件夹_Python虚拟环境Venv
  6. Docker学习之路05:五分钟用docker compose搭建一个自己的个人博客网站!
  7. mysql删除重复记录并且只保留一条
  8. JDBC——(手写、spring整合)及(预编译手写、预编译spring整合)
  9. 畅享10plus可以升级鸿蒙系统吗,华为哪些手机可以升级鸿蒙系统
  10. D10 sql labs