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 @   追こするれい的人  阅读(81)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示