如何告诉MapReduce使用多少映射器?
我正在尝试加速优化MapReduce作业。
有什么办法可以告诉hadoop使用特定数量的mapper / reducer进程吗? 或者,至少是最少数量的映射器进程?
在文档中,指定了您可以使用该方法执行此操作
public void setNumMapTasks(int n)
JobConf类。
这种方式并没有过时,所以我开始使用Job类的Job。 这样做的正确方法是什么?
映射任务的数量由输入中的块数决定。 如果输入文件为100MB且HDFS块大小为64MB,则输入文件将占用2个块。 因此,将产生2个地图任务。 JobConf.setNumMapTasks()(1)提示框架。
Reducer的数量由JboConf.setNumReduceTasks()函数设置。 这决定了作业的reduce任务总数。 此外,mapred.tasktracker.tasks.maximum参数确定可以在单个作业跟踪器节点上并行运行的reduce任务数。
您可以在此处找到有关地图数量和减少工作的更多信息(2)
(1) – http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/JobConf.html#setNumMapTasks%28int%29
(2) – http://wiki.apache.org/hadoop/HowManyMapsAndReduces
- Hadoop:没有可写接口的简单方法将对象作为输出值
- 无法报告状态600秒。 杀! 报告hadoop的进展情况
- 为什么运行hadoop时数据节点会关闭?
- 使用mapPartition和迭代器保存spark RDD
- 线程“main”中的exceptionjava.lang.NoClassDefFoundError:org / apache / hadoop / hbase / HBaseConfiguration
- 不推荐使用$ HADOOP_HOME,Hadoop
- 使用hadoop-yarn-server-nodemanager编译错误
- 为什么我们在Hadoop堆栈中需要ZooKeeper?
- 如何在Hadoop MapReduce中将Object设置为Map输出的值?