html5网络公司网站模板,做医疗的网站建设,wordpress 首页文章截断插件,肇庆seo霸屏一、Mapreduce工作流程
#xff08;1#xff09;数据切片Split。数据切片数决定maptask并行度#xff0c;默认情况下#xff0c;一个切片大小块大小。切片不是针对整体数据集#xff0c;而是针对每一个文件单独切片#xff0c;所以会有小文件问题#xff08;CombineTex…一、Mapreduce工作流程
1数据切片Split。数据切片数决定maptask并行度默认情况下一个切片大小块大小。切片不是针对整体数据集而是针对每一个文件单独切片所以会有小文件问题CombineTextInputFormat可用于小文件过多的场景可以将多个小文件在逻辑上划分到一个切片中。
2map。每个maptask并行执行调用map方法对数据进行业务逻辑处理并输出kv键值对。
3shuffle。shuffle过程从map方法输出outk outv键值对开始键值对会被写入到环形缓冲区中同时记录该条数据的分区信息环形缓冲区一半记录数据的元数据信息一半记录真实数据信息当环形缓冲区写到80%的时候环形缓冲区开始反向写入数据并且已写入的80%数据开始溢写到磁盘在真正写入磁盘之前会在内存中首先按照key进行快速排序一个mapTask可能会有多个溢写文件这些文件在进入reduce之前还会进行归并排序成一个大的溢写文件如果有combiner会在这先进行部分聚合。reduceTask会从不同的mapTask主动拉取自己分区的数据并对这些来自不同mapTask的数据再次进行归并排序合并成一个大的文件到这里shuffle阶段就结束了之后就是调用reduce方法完成最终的聚合操作了。
4reduce。调用reduce方法完成最后的逻辑聚合。
二、MapTask工作机制
一个MapTask总体上包含read、map、collect、溢写、merge五个阶段。
1read阶段。读取数据。
2map阶段。调用map方法处理输入的kv键值对。
3collect阶段。将map计算结果进行收集写入到环形缓冲区。
4溢写阶段。环形缓冲区达到80%时会进行溢写注意溢写前会先进行快排。
5merge阶段。一个maptask的多个溢写文件进行归并形成一个大的溢写文件。
三、ReduceTask工作机制
一个ReduceTask总体上包含Copy、Sort、reduce三个阶段。
1Copy阶段。从不同的Maptask主动拷贝自己分区的数据文件。
2Sort阶段。对来自不同maptask的文件进行归并排序整合为一个文件。
3reduce阶段。调用reduce方法按照聚合逻辑进行聚合运算。
四、Shuffle机制
map方法结束到reduce方法之前的过程都属于shuffle过程。shuffle过程的理解主要就是三次排序过程一次快排两次归并。
1一个maptask在溢写每个文件到磁盘前都会在内存中对不同的分区内部进行快排保证了每个溢写文件内部的分区内有序
2一个maptask可能会有多个溢写文件每个溢写文件都划分了分区且分区内有序这些溢写文件会进行归并排序合并成一个大的溢写文件保留分区且分区内有序
3reduceTask会主动从不同的maptask拉取自己分区的数据从不同maptask拷贝的文件在进入reduce方法之前还会进行一次归并排序。
五、部分调优参数
1shuffle中的缓冲区大小会影响溢写次数缓冲区越大溢写次数越少磁盘的io越少执行速度越快。缓冲区大小可以通过mapreduce.task.io.sort.mb参数进行调整。