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

Hadoop Amazon Elastic Map Reduce是否为每个实例运行一个或多个映射程序进程?,hadoop,amazon-web-services,mapreduce,elastic-map-reduce,hadoop-streaming,Hadoop,Amazon Web Services,Mapreduce,Elastic Map Reduce,Hadoop Streaming,我的问题是:我是否应该关心映射器中的多处理(从stdin读取任务,然后将它们分配到工作进程,将结果合并到主进程并输出到stdout),或者Hadoop会自动处理它 我在Hadoop流媒体文档和Amazon Elastic MapReduce常见问题解答中都没有找到答案 我的问题是:我是否应该关心映射器中的多处理(从stdin读取任务,然后将它们分配到工作进程,将结果合并到主进程并输出到stdout),或者Hadoop会自动处理它 设置Hadoop集群后,提交作业所需的最低要求是 输入格式和位置

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

我在Hadoop流媒体文档和Amazon Elastic MapReduce常见问题解答中都没有找到答案

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

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

  • 输入格式和位置
  • 输出格式和位置
  • 映射和减少用于处理数据的函数
  • NameNode和JobTracker的位置
Hadoop将负责将作业分发到不同的节点,监视它们,从i/p读取数据并将数据写入o/p。如果用户必须完成所有这些任务,那么使用Hadoop就没有意义了

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

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

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

  • 输入格式和位置
  • 输出格式和位置
  • 映射和减少用于处理数据的函数
  • NameNode和JobTracker的位置
Hadoop将负责将作业分发到不同的节点,监视它们,从i/p读取数据并将数据写入o/p。如果用户必须完成所有这些任务,那么使用Hadoop就没有意义了

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

Hadoop有“插槽”的概念。插槽是映射程序进程将运行的位置。您可以配置每个tasktracker节点的插槽数。这是将在每个节点上运行parralel的映射过程的理论最大值。若并没有足够多的单独输入数据(称为FileSplits)的popart,则可能会更少
Elastic MapReduce确实有自己的估算,根据实例功能分配多少插槽
同时,我可以想象这样的场景:当一个数据流被多个内核处理时,您的处理将更加有效。如果您有内置多核使用的映射器,您可以减少插槽的数量。但在典型的Hadoop任务中,情况通常不是这样。

Hadoop有一个“插槽”的概念。插槽是映射程序进程将运行的位置。您可以配置每个tasktracker节点的插槽数。这是将在每个节点上运行parralel的映射过程的理论最大值。若并没有足够多的单独输入数据(称为FileSplits)的popart,则可能会更少
Elastic MapReduce确实有自己的估算,根据实例功能分配多少插槽

同时,我可以想象这样的场景:当一个数据流被多个内核处理时,您的处理将更加有效。如果您有内置多核使用的映射器,您可以减少插槽的数量。但是在典型的Hadoop任务中通常不是这样。

有关每个实例类型的map/reduce任务数量,请参见EMR文档[1]

除了David的答案,您还可以通过设置

conf.setMapRunnerClass(MultithreadedMapRunner.class);  
默认值为10个线程,但可以使用

-D mapred.map.multithreadedrunner.threads=5
我经常发现这对于定制高IO的东西很有用


[1]

有关每种实例类型的映射/减少任务数量,请参见EMR文档[1]

除了David的答案,您还可以通过设置

conf.setMapRunnerClass(MultithreadedMapRunner.class);  
默认值为10个线程,但可以使用

-D mapred.map.multithreadedrunner.threads=5
我经常发现这对于定制高IO的东西很有用


[1]

问题不是将作业分发到不同的节点,而是在一个节点上运行多个作业。问题不是将作业分发到不同的节点,而是在一个节点上运行多个作业。谢谢,大卫,这正是我一直在寻找的概念和术语。谢谢,大卫,这正是我一直在寻找的概念和术语。