0


hadoop架构-----MapReduce机制(终于又明白了!)

1.MapReduce整体概览

2.MapReduce概述

  1. 定义:分布式运算程序的编程框架,是基于hadoop的数据分析和应用的核心框架。包括自己处理业务的相关代码+自身的默认代码
  2. 优点:易于编程 :用户只关心业务逻辑,实现框架的接口;良好的扩展性:可以动态增加服务器;高容错性:将任务转给其他节点;适合海量数据计算。
  3. 缺点:不擅长实时计算;不擅长流式计算;不擅长DAG有向无环图计算。

数据计算基于磁盘,效率较低,Spark计算基于内存

3.核心编程思想

将任务分布式送给不同的节点,最终conclude起来

  1. map:map task完全并行运行,互不相干
  2. reduce阶段的并发reduce task:也是互不相干,依赖于上一个阶段所有的maptask实例的输出
  3. 只能包含一个map和一个reduce阶段,如果特别复杂,那么只能多个MapReduce程序串行运行

4.MapReduce进程

  1. MrAppMaster:整个程序的过程调度及状态协调
  2. MapTask:map阶段的数据处理流程
  3. ReduceTask:负责reduce阶段数据处理流程

5.hadoop序列化

  • 什么是序列化:把内存中的对象转换成字节序列以便存储到磁盘和网络运输
  • 为什么要序列化: 对象只生存在内存里,断电就没有了;序列化可以存储"活的"对象,可以将"活的"对象发送到远程计算机.

6. 框架原理

InputFormat数据输入 :

1. MapTask并行度决定机制:

MapTask个数决定并行度。

数据块:block是HDFS物理上把数据分成一块一块(默认128M),数据块是HDFS存储数据单位。

数据切片:逻辑上对输入进行切分片,一个切片对应启动一个MapTask

**块大小和切片大小一致,本机处理数据不用跨节点 **

切片时不考虑数据集整体,而是逐个针对每一个文件单独切片

2.框架默认textinputformat切片机制:

key:整个文件的起始字节偏移量,longWritable类型

value:这行的内容,不包括任何终止符,text类型

对任务按文件规划切片(不管文件多小,都会是一个单独的切片,交给一个MapTask,如果有大量小文件,就会产生大量maptask)

3.CombineTextInputFormat切片机制

大量小文件的切片可以combine起来 ,同一个maptask做

  1. 判断虚拟内存存储的文件是否大于setMaxinputSlitSize,大于则单独形成一个切片
  2. 如果不大于则跟下一个虚拟存储文件进行合并,共同形成一个切片

MapReduce工作流程:

注:

  • 将文件分块处理0-128 128-200 分成两个maptask进行处理
  • Yarn ResourceManager:资源配置管理,计算maptask数量等
  • maptask需要在内存缓冲区写数据&索引,溢出再将数据写入磁盘(这里用到80%后反向)
  • 分区1/2确定该分区处理哪类数据哪些数据,并且在该分区内进行快排(区内有序)
  • combiner:合并部分数据
  • 将同一分区下的数据merge归并排序

注:

  • 每个reduceTask负责一种partition
  • 合并文件需要归并排序(区内有序,区间排序即可)

shuffle机制:

注:

  • combiner: 为可选流程 可将<a,1>和<a,1>合并成<a,2>减少reduce负荷
  • 内存缓冲区默认100M,但不能处理100M的meta数据,因为有index数据也需要进行写入
  • 每次溢出后会将各分区汇总归并排序,压缩,写入磁盘
  • **reduce:**对map来的数据再归并排序

排序:

MapTask和ReduceTask均会对数据**按照key进行排序 **

  1. MapTask:快排(缓冲区中的数据进行一次快速排序) + 归并(磁盘对所有文件进行归并排序)
  2. ReduceTask:归并(对内存和磁盘上所有的数据进行一次归并排序)
排序分类:
  1. 部分排序:输出的每个文件内部有序
  2. 全排序: 最终输出结果只有一个文件,且文件内部有序.(处理大型文件时效率极低)
  3. 二次排序:compareTo判断条件为两个即为二次排序
  4. 辅助排序

感谢观看,还需多多改进


本文转载自: https://blog.csdn.net/weixin_74257347/article/details/142316872
版权归原作者 牛奶咖啡.854 所有, 如有侵权,请联系我们删除。

“hadoop架构-----MapReduce机制(终于又明白了!)”的评论:

还没有评论