Amazon Elastic Map Reduce是否为每个实例运行一个或多个映射器进程?

时间:2012-02-03 03:50:43

标签: hadoop amazon-web-services mapreduce elastic-map-reduce hadoop-streaming

我的问题是:我自己应该关心我的mapper中的多处理(从stdin读取任务然后将它们分配到工作进程,将结果组合在一个主进程中并输出到stdout)或者Hadoop会自动处理它吗?

我既没有在Hadoop Streaming文档中找到答案,也没有在Amazon Elastic MapReduce FAQ中找到答案。

3 个答案:

答案 0 :(得分:1)

Hadoop有一个“插槽”的概念。 Slot是映射器进程将运行的位置。您配置每个tasktracker节点的插槽数。它是每个节点运行parralel的映射过程的理论最大值。如果没有足够的单独输入数据(称为FileSplits),它可以更少。
弹性MapReduce确实有自己的估计,根据实例功能分配多少个插槽。
与此同时,我可以想象当一个数据流被许多内核访问时,您的处理将更加有效。如果您的映射器具有内置多核使用 - 您可以减少插槽数。但它通常是典型的Hadoop任务中的一个案例。

答案 1 :(得分:1)

请参阅EMR doco [1]了解每个实例类型的map / reduce任务数。

除了David的答案之外,您还可以让Hadoop通过设置每个地图插槽运行多个线程...

conf.setMapRunnerClass(MultithreadedMapRunner.class);  

默认值为10个线程,但可以使用

进行调整
-D mapred.map.multithreadedrunner.threads=5

我经常发现这对自定义高IO的东西很有用。

[1] http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/HadoopMemoryDefault_AMI2.html

答案 2 :(得分:-1)

  

我的问题是:我自己应该关心我的mapper中的多处理(从stdin读取任务然后将它们分配到工作进程,将结果组合在一个主进程中并输出到stdout)或者Hadoop会自动处理它吗?

设置Hadoop群集后,提交作业所需的最低要求为

  • 输入格式和位置
  • 输出格式和位置
  • 用于处理数据的Map和Reduce函数
  • NameNode和JobTracker的位置

Hadoop将负责将作业分发到不同的节点,监视它们,从i / p读取数据并将数据写入o / p。如果用户必须完成所有这些任务,那么就没有必要使用Hadoop。

建议,阅读Hadoop文档和一些教程。

相关问题