Hadoop MapReduce : default number of mappers

标签 hadoop mapreduce

如果我不指定映射器的数量,如何确定该数量?是否有从配置文件(例如 mapred-site.xml)中读取的默认设置?

最佳答案

在 Chris 上面添加的内容上添加更多内容:

  1. 映射的数量通常由输入文件中的 DFS block 数量决定。虽然这会导致人们调整他们的 DFS block 大小来调整 map 的数量。

  2. map 的正确并行级别似乎是大约 10-100 个 map /节点,尽管对于非常 cpu-light map task ,这可以达到 300 左右。任务设置需要一段时间,因此最好至少花一分钟时间执行 map 。

  3. 您可以通过修改 JobConf 的 conf.setNumMapTasks(int num) 来增加 Map 任务的数量。注意:这可能会增加 map 任务的数量,但不会将数量设置为低于 Hadoop 通过拆分输入数据确定的数量。

最后控制 map 的数量是微妙的。 mapred.map.tasks 参数只是对 map 数量的 InputFormat 的提示。默认的 InputFormat 行为是将字节总数拆分为正确数量的片段。但是,在默认情况下,输入文件的 DFS block 大小被视为输入拆分的上限。 可以通过 mapred.min.split.size 设置分割大小的下限。

因此,如果您期望 10TB 的输入数据和 128MB 的 DFS block ,您最终将得到 82k 的 map ,除非您的 mapred.map.tasks 更大。 InputFormat 最终决定了 map 的数量。

阅读更多:http://wiki.apache.org/hadoop/HowManyMapsAndReduces

关于Hadoop MapReduce : default number of mappers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591278/

相关文章:

hadoop - 将hive或hbase表保存在hdinsight中

apache-spark - Apache Spark与Apache Hadoop

hadoop - 有什么方法可以控制在 Hadoop MapReduce 框架中启动哪个节点 reducer ?

python - 在本地测试 mapreduce 流作业的更优雅的方法?

mapreduce - 为什么 Spark 比 Hadoop MapReduce 更快

hadoop - 在hdfs上执行jar文件时出现运行时错误

join - 如何通过在hadoop中合并两个文件在hdfs中创建文件

InputFormat 默认值的 Hadoop ClassCastException

java - Apache Pig : unable to run my own pig. jar 和 pig-withouthadoop.jar

eclipse - Hadoop WordCount 从命令行而不是从 Eclipse 运行