Hadoop 增加地图的数量并减少功能

Hadoop 增加地图的数量并减少功能,hadoop,mapreduce,cassandra,Hadoop,Mapreduce,Cassandra,我有个问题。 我想增加我的地图和减少功能的数量,我的输入数据。当我执行System.out.println(conf.getNumReduceTasks())和System.out.println(conf.getnummatasks())时,它会显示: 1 1 1000000 1000000 当我执行conf.setnumreductasks(1000000)和conf.setnummatasks(1000000)并再次执行println方法时,它会显示: 1 1 1000000

我有个问题。 我想增加我的地图和减少功能的数量,我的输入数据。当我执行
System.out.println(conf.getNumReduceTasks())
System.out.println(conf.getnummatasks())
时,它会显示:

1  1
1000000  1000000
当我执行
conf.setnumreductasks(1000000)
conf.setnummatasks(1000000)
并再次执行
println
方法时,它会显示:

1  1
1000000  1000000
但我认为mapreduce程序的执行时间没有变化。我的输入来自cassandra,实际上是cassandra列族行,大约有362000行。 我想设置映射的数量,并将函数减少为输入行的数量


我应该怎么做?

设置map/reduce作业的map/reduce任务数可以定义将使用多少map/reduce进程来处理作业。考虑是否真的需要这么多java进程。 也就是说,地图任务的数量主要是自动确定的;设置映射任务的数量只是一个可以增加Hadoop确定的映射数量的提示

对于reduce任务,默认值为1,实际限制约为1000

见:

了解集群中的每个节点也有最多可并发执行的map/reduce任务,这一点也很重要。这由以下配置设置设置:

mapred.tasktracker.map.tasks.max 和 mapred.tasktracker.reduce.tasks.max

两者的默认值均为2

因此,增加map/reduce任务的数量将限于每个节点可以同时运行的任务数量。这可能是您没有看到工作执行时间发生变化的原因之一

见:

总结如下: 让Hadoop确定映射的数量,除非您需要更多映射任务

使用mapred.tasktracker..tasks.maximum设置控制一次可以运行的任务数

reduce任务数的最大值应介于1或2*之间(mapred.tasktracker.reduce.tasks.maximum*#节点)。您还必须考虑希望一次运行多少map/reduce作业,以便单个作业不会占用所有可用的reduce插槽

对于这两种设置,1000000的值几乎肯定过高;运行那么多java进程是不实际的。我预计如此高的价值只是被忽略了

将mapred.tasktracker..tasks.maximum设置为节点能够同时运行的任务数后,请尝试以增量方式增加作业的map/reduce任务数

您可以在job.xml文件中看到作业用于验证设置的实际任务数