什么是MapReduce
分布式编程框架,用户直接操作业务逻辑,无需感知底层分布式实现
优点
- 易于编程
- 良好的扩展性,动态增加服务器
- 高容错
- 适合海量数据计算
缺点
- 不擅长实时计算
- 不擅长流式计算
- 不擅长DAG有项无环图
工作原理
InoutFormat
- maptask并行度
一个job的Map阶段并行度由切片数决定
一个切片分配一个task实例
默认情况下,切片大小=BlockSize(文件块大小)
切片时针对每一个文件单独切片 - job执行过程
新旧api兼容 -> 确认连接 -> 确认stag路径 -> 创建jobid -> 切片并输出切片文件 -> job的xml信息 -> jar包-> 标记job状态为running -> 删除配置信息
- 切片
根据配置信息获取切片的最大值和最小值没有默认为1和无限大
获取块大小 设置切片大小
如果文件大小是切片大小的1.1倍才会去切片
fileInputformat原理:
MapReduce工作流程
MapTask工作机制
read
map
collect
溢写阶段
merge阶段
reduceTask工作机制
copy阶段
sort阶段
reduce阶段
Shullfe流程
map之后 reduce之前