MapReduce 数据切片与 MapTask 并行度

MapReduce 核心组件
  • MapTask :执行 Map 端计算任务
  • ReduceTask : 执行 Reduce 端计算任务
  • MRAppMaster : 负责监控、管理所有 Task 计算任务
数据切片原理
  • 计算切片块大小

    computeSplitSize(Math.max(minSize,Math.min(maxSize,blocksize));

    • 默认切片块大小 blocksize =128M(本地模式32 M) minSize = 1 maxSize=0x7fffffffffffffff
    • 切片块 SplitSize 的大小默认等于 blockSize
    • 想要下调切片块 SplitSize 大小,把 maxSize 调小即可;想要上调 SplitSize 切片大小,把 minSize 调大即可
  • 计算切片数量

    ((double) bytesRemaining)/splitSize > 1.1

    • 每次切片时都要判断切完剩余部分是否大于默认切片的1.1倍。不大于则与前一个切片合成一个切片,也就是在这种情况下,切片的大小可以稍大于默认切片大小;大于则需要再创建一个新切片
MapTask 并行度

MapTask 并行度指的是 MapReduce 程序需要运行多少个 MapTask 任务

MapTask 的并行度由文件的切片数量决定

  • 文件切片大小(BlockSize)在 本地(Local) 模式默认为 32M,在集群(Cluster)模式默认为 128 M
  • 客户端提交 Job 时,一个文件切片对应一个 MapTask 任务
  • 文件切片时不考虑数据集整体性,而是逐个针对每个文件单独切片(即不可把多个文件大小加到一起来计算切片数量)
posted @ 2021-12-02 22:06  追こするれい的人  阅读(66)  评论(0编辑  收藏  举报