hadoop2.x版本中新增了Uber方式运行MR。
什么是Uber呢?
hadoop中对于Uber做了如下的定义:
1、mapreduce.job.ubertask.enable=true 首先你要启用uber模式,默认是false
2、map数量<=9,
3、reduce<=1,
4、所有输入文件的总长度<=默认块大小(128M),
5、mapreduce.map.memory.mb(默认1024)<=内存需求(内存需求的大小由yarn.app.mapreduce.am.resource.mb来决定,默认1536M)
6、cpu<=yarn.app.mapreduce.am.resource.cpu-vcores(默认1)
7、非链式方式运行MR
Uber方式运行MapReduce的好处是什么呢?
举例说明,假定默认ReduceTaskNum=1:
比如目标文件夹下有6个小文件,每个文件从5M-20M不等,现在需要通过MR执行相关的统计,
如果不采用Uber模式则需要启动MapReduce作业数为:
1、MapTask=6
2、ReduceTask=1
一起需要去资源管理器申请7次资源(此处省略了MRAppMaster的启动资源)
采用Uber方式运行:
总的资源只需要1个即可。这个资源会被重复利用。