关于如何设置reduce的个数

在默认情况下,一个MapReduce Job如果不设置Reducer的个数,那么Reducer的个数为1。具体,可以通过JobConf.setNumReduceTasks(int numOfReduceTasks)方法来设置Reducer的个数。那么,如何确定Reducer的个数呢,Hadoop documentation 推荐了两个计算公式:

    0.95 * NUMBER_OF_NODES * mapred.tasktracker.reduce.tasks.maximum
    1.75 * NUMBER_OF_NODES * mapred.tasktracker.reduce.tasks.maximum

其中,NUMBER_OF_NODES 代表集群中计算节点的个数,mapred.tasktracker.reduce.tasks.maximum代表每一个节点所分配的Reducer任务槽的个数

    mapred.tasktracker.reduce.tasks.maximum

代表每一个节点所分配的Reducer任务槽的个数..........

 

Dong 13小时前

这个通常 根据经验配置,一般考虑cpu就行了,有几个cpu,配几个slot,如果任务是IO密集型的,可以多配一些slot。

类比这个问题:一个机器上有8个cpu,为了充分利用这些资源,最多启动多少个线程,一般8个,或者稍微大于8个,取决于你的应用类型..

 

 

posted on 2014-04-02 18:16  雨渐渐  阅读(2422)  评论(0编辑  收藏  举报

导航