AWS EMR |指向AWS S3时的映射器总数

问题描述 投票:0回答:1

如果我们触发指向S3位置的Hive工作负载,我很想知道EMR集群将如何决定映射器的总数。在S3中,数据不是以块的形式存储的,那么哪个组件将创建Input splits并为其分配映射器?

amazon-web-services amazon-s3 amazon-emr
1个回答
1
投票

有两种方法可以找到处理输入数据文件所需的映射器数量:

  1. 映射器的数量取决于Hadoop拆分的数量。如果您的文件小于HDFS或Amazon S3拆分大小,则映射器的数量等于文件的数量。如果您的某些或全部文件大于HDFS或Amazon S3拆分大小(fs.s3.block.size),则映射器的数量等于每个文件的总和除以HDFS / Amazon S3块大小。

以下示例假定块大小为64 MB(S3或HDFS)。

示例1: HDFS上有100个文件,每个文件60 MB = 100个映射器。由于每个文件都小于块大小,因此映射器的数量等于文件的数量。

示例2:您在Amazon S3上有100个文件,每个文件80 MB = 200个映射器。每个数据文件都大于我们的块大小,这意味着每个文件需要两个映射器来处理该文件。100个文件* 2个映射器= 200个映射器

示例3:您有两个60 MB,一个120 MB和两个10 MB文件= 6个映射器。 60 MB的文件需要两个映射器,120 MB的文件需要两个映射器,而两个10 MB的文件每个都需要一个映射器。

  1. 估计所需映射器数量的一种简便方法是在任何Amazon EMR集群上运行您的作业,并记下Hadoop为您的任务计算的映射器数量。您可以通过查看JobTracker GUI或作业的输出来查看总数。这是作业输出的示例,其中突出显示了映射器的数量:

13/01/13 01:12:30 INFO mapred.JobClient:保留时隙(ms)= 0后,所有人花费的总时间减少了等待。13/01/13 01:12:30 INFO mapred.JobClient:花费的总时间保留时隙(ms)= 0后等待的所有地图的总和(map map.JobClient:机架本地地图任务= 20 13/01/13 01:12:30 INFO mapred.JobClient:启动的地图任务= 2013/01/13 01:12:30 INFO映射。JobClient:SLOTS_MILLIS_REDUCES = 2329458

参考:Amazon EMR Best Practices


推荐问答