Advertisement

MapReduce的任务数量分配

阅读量:

Map任务的个数

当Mapper数据量很大时,会导致大量小文件生成,并且Mapper的生成与启动会占用大量硬件资源。当Mapper数量不足时,并发度较低,则会导致Job执行时间过长,并未能充分利用分布式硬件资源。

Mapper数量由什么决定?

  1. 输入文件数目
  2. 输入文件的大小
  3. 配置参数

根据输入目录中的文件数量来确定将会有多少个映射被启动。
应用将为每个数据片创建并运行一个映射。
每个输入文件都会被分割成至少一个映射。
当单个输入文件的大尺寸超过HDFS块大小时(128MB),同一个文件将导致多个映射被启动。

复制代码
    涉及参数:
    mapreduce.input.fileinputformat.split.minsize //启动map最小的split size大小,默认0
    mapreduce.input.fileinputformat.split.maxsize //启动map最大的split size大小,默认256M
    dfs.block.size//block块大小,默认128M
    计算公式:splitSize =  Math.max(minSize, Math.min(maxSize, blockSize))
    
    下面是FileInputFormat class 的getSp

全部评论 (0)

还没有任何评论哟~