解决小文件问题方式二:Uber模式

目录

一、什么是Uber模式

二、如何开启Uber模式


Hadoop使用中,小文件不仅会导致Namenode内存不足、存储效率低的问题,还会在进行MR计算时,会导致生成过多的切片,需要启动过多的MapTask。每个MapTask的运行都对应一个JVM,那么如此多的JVM开启和关闭,不仅造成了资源的浪费,还降低了计算效率。

解决小文件问题方式很多,除了使用CombineTextInputFormat来减少切片数量,还可以使用Uber模式。

一、什么是Uber模式

Uber模式是Hadoop的一种job运行模式,该模式开启时,在设定的范围内,对一个job,只会提供一个Containor,启动一个JVM来运行所有的MapTask和ReduceTask。

二、如何开启Uber模式

开启uber模式,需要在Hadoop的mapred-site.xml中添加如下配置。

  • 将mapreduce.job.ubertask.enable 设置成true
  • maxmaps:指单个JVM中能够运行的最多的MapTask数量,要求≤9
  • maxreduces:指单个JVM中能够运行的最多的ReduceTask数量,要求≤1
  • maxbytes:指单个JVM中允许的最大数据量,空为没要求
<!--  开启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>

综上,如果开启了Uber模式,MrApplicationMaster在判定输入文件的要求在单JVM要求内时,就会启动单JVM运行,如此有效了降低了MrApplication的资源申请数,和JVM多次个开启和关闭,节省资源,提升效率。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值