Hadoop3:MR程序处理小文件的优化办法(uber模式)

一、解决方案

1、在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS(数据源头)

2、Hadoop Archive(存储方向)

是一个高效的将小文件放入HDFS块中的文件存档工具,能够将多个小文件打包成一个HAR文件,从而达到减少NameNode的内存使用

3、CombineTextInputFormat(计算方向)

CombineTextInputFormat用于将多个小文件在切片过程中生成一个单独的切片或者少量的切片

4、开启uber模式,实现JVM重用(计算方向)

默认情况下,每个Task任务都需要启动一个JVM来运行,如果Task任务计算的数据量很小,我们可以让同一个Job的多个Task运行在一个JVM中,不必为每个Task都开启一个JVM。也就是JVM重用。

二、案例

1、未开启uber模式

bash 复制代码
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input/hello.txt /output1

2、观察控制台

3、查看页面任务

发现这个任务,启用了6个Container容器,也就意味着开启了6个JVM。

4、开启uber模式
mapred-site.xml

xml 复制代码
<!--  开启uber模式,默认关闭 -->
<property>
  	<name>mapreduce.job.ubertask.enable</name>
  	<value>true</value>
</property>

<!-- uber模式中最大的mapTask数量,可向下修改  --> 
<property>
  	<name>mapreduce.job.ubertask.maxmaps</name>
  	<value>9</value>
</property>
<!-- uber模式中最大的reduce数量,可向下修改 -->
<property>
  	<name>mapreduce.job.ubertask.maxreduces</name>
  	<value>1</value>
</property>
<!-- uber模式中最大的输入数据量,默认使用dfs.blocksize 的值,可向下修改 -->
<property>
  	<name>mapreduce.job.ubertask.maxbytes</name>
  	<value></value>
</property>

分发配置,无需重启。

5、再次执行任务

bash 复制代码
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input/hello.txt /output1



发现,只启用了一个容器。

相关推荐
有Li14 天前
来自骨关节炎计划的膝关节MR图像的自动异常感知3D骨骼和软骨分割|文献速递-基于生成模型的数据增强与疾病监测应用
3d·mr
EQ-雪梨蛋花汤19 天前
【MR开发】在Pico设备上接入MRTK3(三)——在Unity中运行MRTK示例
mr·pico
EQ-雪梨蛋花汤21 天前
【MR开发】在Pico设备上接入MRTK3(一)——在Unity工程中导入MRTK3依赖
mr·pico·移动端ar
Jiweilai122 天前
【报错处理】MR/Spark 使用 BulkLoad 方式传输到 HBase 发生报错: NullPointerException
spark·hbase·mr·bulkload
Chaihuo x.factory23 天前
创客项目秀|基于XIAO ESP32C3的本地个人助理Mr.M
mr
至善迎风1 个月前
VR、AR、MR、XR 领域最新科研资讯获取指南
ar·vr·mr
三菱-Liu2 个月前
三菱FX5U CPU 内置以太网功能
网络·驱动开发·硬件工程·制造·mr
YY-nb2 个月前
Unity Apple Vision Pro 开发(六):MR 物体交互
unity·apple vision pro·mr
知来者逆2 个月前
illusionX——一个从理解情感到改变学习、创新教育体验集成情感计算的混合现实系统
人工智能·深度学习·学习·llm·大语言模型·mr
北京搜维尔科技有限公司2 个月前
搜维尔科技:TechViz 虚拟会议室-多人协同混合现实协作
科技·mr