MapReduceAPI提供了错误的Map器计数

db2dz4w8  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(233)

我试图通过使用下面的代码获得mapreduce程序中的Map者数量。我得到mapreduce.job.maps的值为2,但是程序实际上启动了6个Map器,因为有6个小文件。有人有类似的问题吗?
代码

job.getConfiguration().get("mapreduce.job.maps")

日志:

num of mappers : 2 
 ...
17/05/13 06:56:47 INFO input.FileInputFormat: Total input paths to process : 6
17/05/13 06:56:47 INFO mapreduce.JobSubmitter: number of splits:6
...
17/05/13 06:56:48 INFO mapreduce.Job: Running job: job_1494588725898_0047
17/05/13 06:56:59 INFO mapreduce.Job: Job job_1494588725898_0047 running in uber mode : false
17/05/13 06:56:59 INFO mapreduce.Job:  map 0% reduce 0%
...
17/05/13 06:57:39 INFO mapreduce.Job:  map 100% reduce 100%
17/05/13 06:57:40 INFO mapreduce.Job: Job job_1494588725898_0047 completed successfully
17/05/13 06:57:40 INFO mapreduce.Job: Counters: 49
        File System Counters
        ...
        Job Counters
                Launched map tasks=6
                Launched reduce tasks=2
idfiyjo8

idfiyjo81#

这不是问题,而是mapreduce的实际行为。
你得到的价值 mapreduce.job.maps 属性是其默认值, 2 . Map器任务的数量将始终由文件输入拆分决定,即 6 在这种情况下。要获得为一个作业启动的map任务的实际数量,您必须等待作业完成。

相关问题