emr上的hadoop-map任务不并行

byqmnocz  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(381)

我通过aws的数据管道建立了一个电子病历工作。这个任务是将csv数据从s3传输到dynamodb。
我的数据大小是400 mb。我准备好了 mapred.max.split.size = 134217728 (即128 mb)。这样,我就可以在监控图中看到有3个map任务。但这些任务从未并行运行。所以,完成400MB需要43分钟。任务的stderr日志始终显示按顺序运行的Map任务。
我尝试了2个不同示例类型的核心节点,比如m1.small、c3.xlarge、c3.2xlarge,但都没有用。
要使这些Map任务并行运行,是否需要进行其他设置/配置或更新?

q5lcpyga

q5lcpyga1#

我想梅扬克是对的。我也遇到了类似的问题。1个Map任务正在运行,而其他9个处于挂起状态。我不得不增加#corenodes,我可以看到所有map任务都在运行。
注意dynamodb吞吐量(读/写)和集群的容量。在m2.medium的情况下,默认为2个Map器/示例。

toe95027

toe950272#

检查这是否有帮助:hadoop启动的mapper守护进程用于处理导出和查询dynamodb中存储的数据的请求,其最大读取速率为每秒1 mib,以限制所使用的读取容量。如果在dynamodb上有其他可用的配置吞吐量,则可以通过增加Map程序守护进程的数量来提高配置单元导出和查询操作的性能。为此,可以增加集群中ec2示例的数量,也可以增加每个ec2示例上运行的Map程序守护进程的数量。
您可以通过停止当前集群并使用更多ec2示例重新启动它来增加集群中ec2示例的数量。如果要从amazon emr控制台启动群集,请在configure ec2 instances(配置ec2示例)对话框中指定ec2示例数;如果要从cli启动群集,请使用--num instances(示例数)选项。
示例上运行的Map任务数取决于ec2示例类型。有关支持的ec2示例类型和每个示例提供的Map器数量的更多信息,请转到amazonemr开发人员指南中的hadoop配置参考。在那里,您将找到每个受支持配置的“任务配置”部分。
增加Map程序守护进程数量的另一种方法是将hadoop的mapred.tasktracker.map.tasks.maximum配置参数更改为更高的值。这样做的好处是,在不增加ec2示例的数量或大小的情况下,可以提供更多的Map器,从而为您节省资金。缺点是,将此值设置得太高会导致集群中的ec2示例内存不足。要设置mapred.tasktracker.map.tasks.maximum,启动集群并指定configure hadoop引导操作,将mapred.tasktracker.map.tasks.maximum的值作为引导操作的参数之一传入。下面的示例显示了这一点。
--引导操作s3n://elasticmapreduce/bootstrap actions/configure hadoop--args-s,mapred.tasktracker.map.tasks.maximum=10
有关引导操作的更多信息,请参阅《AmazonEMR开发人员指南》中的使用自定义引导操作。

相关问题