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個即可。這個資源會被重複利用。