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 任务
- 文件切片时不考虑数据集整体性,而是逐个针对每个文件单独切片(即不可把多个文件大小加到一起来计算切片数量)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现