Hadoop MapReduce:如何确保所有节点之间并行执行多个任务

时间:2016-05-09 10:35:39

标签: hadoop mapreduce

我在HDFS中有一个任务列表文件,任务列表是CPU限制的,并且将在一个带有Hadoop MapReduce(仅限Map)的小型5节点集群中执行。例如,任务列表文件包含10行,每行对应一个任务命令。每个任务的执行都需要很长时间,因此在所有5个节点上并行执行列出的10个任务肯定更有效。

但是,由于任务列表文件非常小,因此该数据块可能仅位于一个节点上,因此只有该节点才会根据数据位置原则执行所有这10个任务。有没有任何解决方案可以确保所有10个任务在所有5个节点上并行执行?

1 个答案:

答案 0 :(得分:1)

默认情况下,map reduce将为每个拆分运行一个映射器。 split是一个块,所以如果你有一个非常大的文件,你会得到一个映射器,每个块大小的文件(默认是128MB),它将处理与其他块并行的128MB块。

在您的情况下,您在一个非常小的文件中有一系列行 - 这只是一个分割,因此它将由一个映射器处理。

但是,您可以创建一行10个文件而不是一个10行文件吗?然后你将有10个拆分,map reduce将在整个集群中并行运行10个映射器(取决于可用资源)来处理你的任务。