哪个网站做网上旅社预定,泉州模板建站源码,做推广最好的网站是哪个?,灰色产业推广引流渠道文章目录
Hadoop之MapReduce重点架构原理
一、MapReduce概念
二、MapReduce 编程思想
2.1、Map阶段
2.2、Reduce阶段
三、MapReduce处理数据流程
四、MapReduce Shuffle
五、MapReduce注意点
六、MapReduce的三次排序 Hadoop之MapReduce重点架构原理
一、MapReduce概…
文章目录
Hadoop之MapReduce重点架构原理
一、MapReduce概念
二、MapReduce 编程思想
2.1、Map阶段
2.2、Reduce阶段
三、MapReduce处理数据流程
四、MapReduce Shuffle
五、MapReduce注意点
六、MapReduce的三次排序 Hadoop之MapReduce重点架构原理
一、MapReduce概念
MapReduce是Hadoop生态中的计算框架用于大规模数据集的并行计算。 二、MapReduce 编程思想
2.1、Map阶段
在Map阶段中输入数据被分割成若干个独立的块并由多个Mapper任务并行处理每个Mapper任务都会执行用户定义的map函数将输入数据转换成一系列键-值对的形式Key-Value Pairs这些键-值对被中间存储以供Reduce阶段使用。
Map阶段主要是对数据进行映射变换读取一条数据可以返回一条或者多条K,V格式数据。 2.2、Reduce阶段
在Reduce阶段中所有具有相同键的键-值对会被分配到同一个Reducer任务上Reducer任务会执行用户定义的reduce函数对相同键的值进行聚合、汇总或其他操作生成最终的输出结果Reduce阶段也可以由多个Reduce Task并行执行。
Reduce阶段主要对相同key的数据进行聚合最终对相同key的数据生成一个结果最终写出到磁盘文件中。 三、MapReduce处理数据流程 首先MapReduce会将处理的数据集划分成多个splitsplit划分是逻辑上进行划分而非物理上的切分每个split默认与Block块大小相同每个split由1个map task进行处理。 map task以行为单位读取split中的数据将数据转换成KV格式数据根据Key计算出本条数据应该写出的分区号最终在内部得到(K,V,P)格式数据写入到当前map task 所在的物理节点磁盘便于后续reduce task的处理。 为了避免每条数据都产生一次IOMapReduce 引入了“环形缓冲区”内存数据结构默认大小100M。先将处理好的每条数据写入到“环形缓冲区”当环形缓冲区使用达到80%时会将数据溢写到磁盘文件。根据split大小不同可能会发生多次溢写磁盘过程。 每次溢写磁盘时会对数据进行二次排序按照数据K,V,P中的P分区进行排序并在每个P分区中按照K进行排序这样能保证相同的分区数据放在一起并能保证每个分区内的数据按照key有序。 最终多次溢写的磁盘文件数据会根据归并排序算法合并成一个完整的磁盘文件此刻该磁盘文件特点是分区有序且分区内部数据按照key有序。 Reduce端每个Reduce task会从每个map task所在的节点上拉取落地的磁盘文件对应的分区数据对于每个Reduce task来说从各个节点上拉取到多个分区数据后每个分区内的数据按照key分组有序但是总体来看这些分区文件中key数据不是全局有序状态分区数据内部有序外部无序。 每个Reduce task需要再通过一次归并排序进行数据merge将每个分区内的数据变成分区内按照key有序状态然后通过Reduce task处理将结果写出到HDFS磁盘。 四、MapReduce Shuffle 分区Partitioning根据键值对的键将中间键值对划分到不同的分区。每个分区对应一个Reduce任务这样可以确保相同键的键值对被发送到同一个Reduce任务上进行处理。 排序Sorting对每个分区内的中间键值对按键进行排序快排。通过排序相同键的键值对会相邻存放以便后续的合并操作更高效。 合并Merging对多次溢写的结果按照分区进行归并排序合并溢写文件每个maptask最终形成一个磁盘一些文件减少后续Reduce阶段的输入数据量。 Combiner局部合并器Combiner是一个可选的优化步骤在Map任务输出结果后、Reduce输入前执行。其作用是对Map任务的输出进行局部合并将具有相同键的键值对合并为一个以减少需要传输到Reduce节点的数据量降低网络开销并提高整体性能。Combiner实际上是一种轻量级的Reduce操作用于减少数据在网络传输过程中的负担。需要注意的是Combiner的执行并不是强制的而是由开发人员根据具体情况决定是否使用。 拷贝Copying将各分区内的数据复制到各自对应的Reduce任务节点上会先向内存缓冲区中存放数据内存不够再溢写磁盘当所有数据复制完毕后Reduce Task统一对内存和磁盘数据进行归并排序并交由Redcue方法并行处理。 五、MapReduce注意点 MapReduce Job 中Map Task并行度由split切片决定。 Split切片默认与一个block大小相等block是物理切分split是逻辑切分也就是说split大小是通过offset范围来决定每个split大小而非真正的文件切分。 读取数据源时如果数据源头包括多个文件会针对每个文件单独进行split切片而不会考虑数据整体。 六、MapReduce的三次排序 第一次排序发生在Map阶段的磁盘溢写时当MapReduce的环形缓冲区达到溢写阈值时在数据刷写到磁盘之前会对数据按照key的字典序进行快速排序以确保每个分区内的数据有序。 第二次排序发生在多个溢写磁盘小文件合并的过程中经过多次溢写后Map端会生成多个磁盘文件这些文件会被合并成一个分区有序且内部数据有序的输出文件从而确保输出文件整体有序。 第三次排序发生在Reduce端Reduce任务在获取来自多个Map任务输出文件后进行合并操作并通过归并排序生成每个Reduce Task处理的分区文件整体有序。 博客主页https://lansonli.blog.csdn.net欢迎点赞 收藏 ⭐留言 如有错误敬请指正本文由 Lansonli 原创首发于 CSDN博客停下休息的时候不要忘了别人还在奔跑希望大家抓紧时间学习全力奔赴更美好的生活✨