首页 > 其他分享 >0508-如何使用Hadoop的Archive处理小文件

0508-如何使用Hadoop的Archive处理小文件

时间:2022-10-04 11:35:36浏览次数:66  
标签:tmp 0508 lib 文件 Hadoop hadoop har Archive

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​https://github.com/fayson/cdhproject​


提示:代码块部分可以左右滑动查看噢


1

文档编写目的


Fayson在前面的文章《​​如何在Hadoop中处理小文件​​》、《​​如何在Hadoop中处理小文件-续​​》和《​​如何使用Impala合并小文件​​》等,在文章中也详细说明了怎么去处理Hadoop中的小文件。文章中也提到小文件过多会对NameNode造成压力,导致NameNode内存使用过高。本篇文章Fayson主要使用Hadoop Archive Files功能将集群中的小文件进行归档。


  • 测试环境:

1.操作系统:Redhat7.4

2.CM和CDH版本为5.15.0


2

环境准备


在本地测试环境中准备大量的小文件,这里Fayson直接将/opt/cloudera/parcels/CDH/lib目录直接put到HDFS上(因为lib下有大量的jar包)。


1.在put小文件到HDFS前,集群中的Block数量为30418


0508-如何使用Hadoop的Archive处理小文件_hdfs


2.将/opt/cloudera/parcels/CDH/lib目录put到HDFS的/tmp目录下


[root@cdh05 CDH]# hadoop fs -put /opt/cloudera/parcels/CDH/lib /tmp
[root@cdh05 CDH]# hadoop fs -ls /tmp/lib


0508-如何使用Hadoop的Archive处理小文件_hdfs_02


3.此时查看集群的Block数量增长到60446


0508-如何使用Hadoop的Archive处理小文件_hadoop_03


通过上述环境准备Fayson将集群的blocks数量增加了30028将近一倍。


3

Hadoop Archive使用


使用Hadoop自带的Archive对集群中的小文件进行归档处理,将小文件打包到更大的HAR文件中,如下为归档操作步骤:


1.在命令行执行如下命令将/tmp/lib目录下所有的目录进行归档


[root@cdh05 ~]# hadoop archive -archiveName libarchive.har -p /tmp/lib -r 3 * /tmp


0508-如何使用Hadoop的Archive处理小文件_hadoop_04


参数说明:

-archiveName:指定归档文件名称

-p:指定要进行归档目录或文件的父目录

-r:指定归档文件的副本数

*:可以使用通配的方式归档一类文件或目录(如:test*表示以test开头的文件或目录)

/tmp:指定归档libarchive.har文件的输出目录


2.查看libarchive.har文件大小以及原始目录的文件大小


0508-如何使用Hadoop的Archive处理小文件_hdfs_05


可以看到归档文件libarchive.har与原始/tmp/lib的大小一致,只是对小文件进行归档合并为一个大的har文件,并未对文件进行压缩处理。查看此时HDFS Blocks总数为60469,相较于之前增加了23个Block。


0508-如何使用Hadoop的Archive处理小文件_hadoop_06


3.执行如下命令浏览libarchive.har文件内容


[root@cdh05 ~]# hadoop fs -ls har:/tmp/libarchive.har


0508-如何使用Hadoop的Archive处理小文件_hdfs_07


与/tmp/lib下的目录一致,HAR文件的浏览方式需要在hdfs路径前添加har:


4.将原始的/tmp/lib目录删除,观察集群的Blocks总数


[root@cdh05 ~]# hadoop fs -rmr -skipTrash /tmp/lib
[root@cdh05 ~]# hadoop fs -ls /tmp


0508-如何使用Hadoop的Archive处理小文件_hdfs_08


查看此时HDFS Blocks总数为30397,相较于之前减少了30072个Block。


0508-如何使用Hadoop的Archive处理小文件_hive_09


可以看到通过使用Hadoop Archive Files方式可以将集群中的小文件打包成一个大的HAR文件以减少集群中小文件,来达到降低集群的Blocks数量减轻NameNode压力。


5.访问libarchive.har归档的文件及获取归档文件中的内容


[root@cdh05 ~]# hadoop fs -ls har:///tmp/libarchive.har/avro
[root@cdh05 ~]# hadoop fs -get har:///tmp/libarchive.har/avro/avro-1.7.6-cdh5.15.0.jar


0508-如何使用Hadoop的Archive处理小文件_hdfs_10


通过在hdfs路径前加上har:的方式访问归档中的目录及文件。如果不加上har:则会显示如下内容


0508-如何使用Hadoop的Archive处理小文件_hive_11


4

Hadoop Archive解档


既然归档了就需要有解档的操作,可以使用hadoop distcp命令完成,具体操作如下:


[root@cdh05 ~]# hadoop distcp har:/tmp/libarchive.har /tmp/lib


0508-如何使用Hadoop的Archive处理小文件_hdfs_12


完成解档后,可以看到/tmp/lib目录与归档文件目录一致


0508-如何使用Hadoop的Archive处理小文件_hdfs_13


5

总结


1.Hadoop的Archive只能将小文件合并为一个大的HAR文件,并未对归档文件大小进行压缩处理(即原始目录多大归档后的HAR文件依然维持原有大小不变)

2.使用hadoop命令访问归档文件时需要在HDFS路径前添加har:,添加har:后访问方式与普通的访问目录与文件方式无差别


提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

0508-如何使用Hadoop的Archive处理小文件_hdfs_14

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


标签:tmp,0508,lib,文件,Hadoop,hadoop,har,Archive
From: https://blog.51cto.com/u_14049791/5731138

相关文章

  • 手把手教你安装Hadoop集群
    一、虚拟机安装与配置​ 注意,本文不适合小白操作,查看至少需要一点儿linux操作基础,因为其中有很多命令并没有写出来。比如使用vi修改文件后,需要使用:wq来保存并退出。安......
  • Hadoop势微,云原生上位——传统大数据平台的云原生化改造
     以Hadoop为中心的大数据生态系统从2006年开源以来,一直是大部分公司构建大数据平台的选择,但这种传统选择随着人们深入地使用,出现越来越多的问题,比如:数据开发迭代速度不够快......
  • Hadoop3.X安装教程(Ubuntu)
    前提:一台纯净的Ubuntu机器(虚拟机安装教程略)ctrl+alt+T打开bash,全程使用bash指令进行,以hadoop和java8为例首先换源进入root账户sudosu-升级软件列表ap......
  • Hadoop入门常用命令
    1.ls用于显示指定工作目录下的内容,还有两个参数,第一个-a显示所有文件和目录,.开头隐藏文件也会显示。第二个-l除文件名称外,也会将文件型态,权限,拥有者,文件大小等信息详细......
  • 【Linux】Unable to fetch some archives, maybe run apt-get update or try with --f
    一、问题描述在aptinstall时候遇到E:Unabletofetchsomearchives,mayberunapt-getupdateortrywith--fix-missing?的error。Error报的信息显示是这个包向so......
  • 脚本部署Hadoop平台
    @目录初始化环境配置ssh免密配置java、hadoop配置hadoop文件配置集群分发启动集群关闭集群ubuntu环境脚本部署hadoop~根据手工搭建部署此脚本初始化环境各节点上执行!!!!......
  • 大数据平台 Hadoop面临的三大安全问题及解决方案
        Hadoop的初始设计是运行在信任的环境下,它假设所有的集群用户都是可信任的,他们能够正确地表明自己的身份并且不会尝试获取更多的权限。由此实现了简单的安全模式......
  • Geomesa 安装(HBase+Hadoop单节点)
    安全JDK及工具包卸载JDK相关文件卸载openjdk[root@iZ4zeaehxxqhrn553tblkkZ/]#yum-yremovejava-1.8.0-openjdk*卸载tzdata-java[root@iZ4zeaehxxqhrn553tblkkZ......
  • 【云原生】Hadoop HA on k8s 环境部署
    目录一、概述二、开始部署1)添加journalNode编排1、控制器Statefulset2、service2)修改配置1、修改values.yaml2、修改hadoop/templates/hadoop-configmap.yaml3)开始安装4)......
  • 传统部署HadoopSpark与容器化参考
    hadoop-spark搭建过程参考网上的文档与解决问题的文章地址https://www.cnblogs.com/luo630/p/13271637.htmlhttps://www.cnblogs.com/dintalk/p/12234718.htmlhttps:......