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文件中看到作业用于验证设置的实际任务数