在同一台机器上的多核上运行Map-Reduce应用程序

时间:2013-09-15 08:11:04

标签: hadoop mapreduce

我想在一台机器上运行map reduce任务,我想使用我机器的所有内核。哪种方法最好?如果我在伪分布式模式下安装hadoop,可以使用所有内核吗?

2 个答案:

答案 0 :(得分:3)

您可以使用属性 mapred.tasktracker.map.tasks.maximum mapred.tasktracker.reduce.tasks.maximum 来增加Mappers /的数量根据您的硬件规格,在TaskTracker上同时生成Reducers。默认情况下,它设置为2,因此最多2个映射和2个reduce将在给定实例上运行。但是,要记住的一件事是,如果您的输入非常小,那么框架将决定不​​值得并行执行。在这种情况下,您需要通过 mapred.max.split.size 调整默认分割大小来处理它。

话虽如此,基于我的个人经验,我注意到MR作业通常是I / O(可能是内存,有时)绑定。因此,CPU在正常情况下并没有真正成为瓶颈。因此,您可能会发现很难在一台机器上一次充分利用所有核心来完成工作。

我建议设计一些策略来决定适当数量的Mapper / Reducers,以便有效地执行处理,以确保您正确使用CPU,因为Mappers / Reducers会占用每个节点上的插槽。一种方法是采用核心数,将其乘以 .75 ,然后根据需要设置Mappers和Reducers的数量。 例如,您有 12个物理核心或24个虚拟核心,那么您可以拥有 24 * .75 = 18 个插槽。现在根据您的需求,您可以决定是使用 9Mappers + 9Reducers 还是 12Mappers + 6Reducers 或其他。

答案 1 :(得分:0)

我正在回答这个问题的答案:Hadoop and map-reduce on multicore machines

对于Apache Hadoop 2.7.3,我的经验是,启用YARN还将支持多核支持。以下是在单个节点上启用YARN的简单指南:

https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/SingleCluster.html#YARN_on_a_Single_Node

默认配置似乎运行良好。如果你想调整你的核心用法,那么也许可以看看设置' yarn.scheduler.minimum-allocation-vcores'和' yarn.scheduler.maximum-allocation-vcores'在yarn-site.xml(https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

另外,请参阅此处了解有关如何配置具有多核支持的简单Hadoop沙箱的说明:https://bitbucket.org/aperezrathke/hadoop-aee