1、調(diào)整reduce個數(shù)方法一
(1)每個Reduce處理的數(shù)據(jù)量默認是256MB
hive.exec.reducers.bytes.per.reducer=256000000
(2)每個任務(wù)最大的reduce數(shù),默認為1009
hive.exec.reducers.max=1009
(3)計算reducer數(shù)的公式
N=min(參數(shù)2,總輸入數(shù)據(jù)量/參數(shù)1)
2、調(diào)整reduce個數(shù)方法二
在hadoop的mapred-default.xml文件中修改
設(shè)置每個job的Reduce個數(shù)
set mapreduce.job.reduces = 15;
3、reduce個數(shù)并不是越多越好
1)過多的啟動和初始化reduce也會消耗時間和資源;
2)另外,有多少個reduce,就會有多少個輸出文件,如果生成了很多個小文件,那么如果這些小文件作為下一個任務(wù)的輸入,則也會出現(xiàn)小文件過多的問題;
在設(shè)置reduce個數(shù)的時候也需要考慮這兩個原則:處理大數(shù)據(jù)量利用合適的reduce數(shù);使單個reduce任務(wù)處理數(shù)據(jù)量大小要合適;