hadoop架构-----MapReduce机制(终于又明白了!)
1.MapReduce团体概览https://i-blog.csdnimg.cn/direct/a351f65d6b5245cc827e1f5a45d89be7.png
2.MapReduce概述
[*] 定义:分布式运算步伐的编程框架,是基于hadoop的数据分析和应用的核心框架。包括自己处置惩罚业务的相关代码+自身的默认代码
[*] 长处:易于编程 :用户只关心业务逻辑,实现框架的接口;精良的扩展性:可以动态增加服务器;高容错性:将任务转给其他节点;适合海量数据计算。
[*] 缺点:不擅长实时计算;不擅长流式计算;不擅长DAG有向无环图计算。
数据计算基于磁盘,服从较低,Spark计算基于内存
3.核心编程头脑
将任务分布式送给差异的节点,最终conclude起来
[*]map:map task完全并行运行,互不相干
[*]reduce阶段的并发reduce task:也是互不相干,依赖于上一个阶段所有的maptask实例的输出
[*]只能包罗一个map和一个reduce阶段,如果特别复杂,那么只能多个MapReduce步伐串行运行
https://i-blog.csdnimg.cn/direct/ef9200d3de404cd98f91a00e3c58c7fe.png
4.MapReduce历程
[*]MrAppMaster:整个步伐的过程调度及状态协调
[*]MapTask:map阶段的数据处置惩罚流程
[*]ReduceTask:负责reduce阶段数据处置惩罚流程
5.hadoop序列化
[*]什么是序列化:把内存中的对象转换成字节序列以便存储到磁盘和网络运输
[*]为什么要序列化: 对象只生存在内存里,断电就没有了;序列化可以存储"活的"对象,可以将"活的"对象发送到长途计算机.
https://i-blog.csdnimg.cn/direct/4dce88234004454a90e330a37ffb4b33.png
6. 框架原理
https://i-blog.csdnimg.cn/direct/40987704588942c68ba5b6af856667dd.png
InputFormat数据输入 :
1. MapTask并行度决定机制:
MapTask个数决定并行度。
数据块:block是HDFS物理上把数据分成一块一块(默认128M),数据块是HDFS存储数据单位。
数据切片:逻辑上对输入进行切分片,一个切片对应启动一个MapTask
块巨细和切片巨细同等,本机处置惩罚数据不消跨节点
切片时不考虑数据团体体,而是逐个针对每一个文件单独切片
2.框架默认textinputformat切片机制:
key:整个文件的起始字节偏移量,longWritable范例
value:这行的内容,不包括任何终止符,text范例
对任务按文件规划切片(不管文件多小,都会是一个单独的切片,交给一个MapTask,如果有大量小文件,就会产生大量maptask)
3.CombineTextInputFormat切片机制
大量小文件的切片可以combine起来 ,同一个maptask做
[*]判断假造内存存储的文件是否大于setMaxinputSlitSize,大于则单独形成一个切片
[*]如果不大于则跟下一个假造存储文件进行合并,共同形成一个切片
https://i-blog.csdnimg.cn/direct/6445e368de6f49b1ab4b4a577fa642d9.png
MapReduce工作流程:
https://i-blog.csdnimg.cn/direct/bebbc492966245488e3238f36cc88197.png
注:
[*]将文件分块处置惩罚0-128 128-200 分成两个maptask进行处置惩罚
[*]Yarn ResourceManager:资源配置管理,计算maptask数量等
[*]maptask需要在内存缓冲区写数据&索引,溢出再将数据写入磁盘(这里用到80%后反向)
[*]分区1/2确定该分区处置惩罚哪类数据哪些数据,并且在该分区内进行快排(区内有序)
[*]combiner:合并部分数据
[*]将同一分区下的数据merge归并排序
https://i-blog.csdnimg.cn/direct/3919329fae3848de95a07a325c45aed4.png
注:
[*]每个reduceTask负责一种partition
[*]合并文件需要归并排序(区内有序,区间排序即可)
shuffle机制:
https://i-blog.csdnimg.cn/direct/31d630157a2244a0b59f43a223146372.png
注:
[*]combiner: 为可选流程 可将<a,1>和<a,1>合并成<a,2>减少reduce负荷
[*]内存缓冲区默认100M,但不能处置惩罚100M的meta数据,因为有index数据也需要进行写入
[*]每次溢出后会将各分区汇总归并排序,压缩,写入磁盘
[*]reduce:对map来的数据再归并排序
排序:
MapTask和ReduceTask均会对数据按照key进行排序
[*]MapTask:快排(缓冲区中的数据进行一次快速排序) + 归并(磁盘对所有文件进行归并排序)
[*]ReduceTask:归并(对内存和磁盘上所有的数据进行一次归并排序)
排序分类:
[*]部分排序:输出的每个文件内部有序
[*]全排序: 最终输出结果只有一个文件,且文件内部有序.(处置惩罚大型文件时服从极低)
[*]二次排序:compareTo判断条件为两个即为二次排序
[*]辅助排序
感谢观看,还需多多改进
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]