目录
一、MapTask工作机制
(一)并行度机制
1)问题引出
maptask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度。那么,mapTask并行任务是否越多越好呢?
2)MapTask并行度决定机制
一个job的map阶段MapTask并行度(个数),由客户端提交job时的切片个数决定。
切片(逻辑上的切分)大小默认等于128M,和block大小相等,原因是如果不按照block大小进行切分,可能会涉及到一些不同节点之间数据的传输。
(二)MapTask工作机制
总结
- read阶段:读取数并行度决定机制据成key-value
- map阶段:将读取的key-value进行处理,生成新的key-value
- collect阶段:将map的数据写到环形缓冲区(分区)中
- spill溢写阶段:环形缓冲区数据满80%后溢写磁盘,只不过溢写之前需要进行排序
- combine阶段:合并小文件(而不是执行Combiner业务逻辑):归并排序,将一些多次产生的小文件进行合并,形成一个大文件
【注意】MapTask的数量是由切片数决定的,虽然Maptask不能直接设置,但是我们可以通过设置切片个数去完成MapTask数量的指定
详细步骤
(1)Read阶段:Map Task通过用户编写的RecordReader,