hadoop框架平台

一、Hadoop详细介绍

狭义上说Hadoop就是一个框架平台,广义上讲Hadoop代表大数据的一个技术生态 圈,包括很多其他软件框架

二、Hadoop重要组成部分

1.hdfs分布式文件系统

(1)HDFS重要概念
NameNode:储存文件的元数据,比如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode。
SecondaryNameNode: 监控hdfs状态,获取元数据的快照。
Datanode:储存文件块数据,以及块数据的校验
命名空间:通过目录树来定位文件,由Namenode负责。
元数据:目录结构及文件分块位置信息
读取特点:一次写入,多次读取,不支持文件的修改
(2)HDFS读写机制
在这里插入图片描述
读取数据流程
(1)客户端通过Distributezd FileSystem 向Namenode请求下载文件,Namenode通过查询元数据,找到文件所在的DataNode。
(2)就近挑选一台DataNode服务器,请求读取数据。
(3)DataNode开始传输数据给客户端(从本地磁盘读取数据输入流,以packet为单位来做校验)
(4)客户端以packet为单位接收,现在本地缓存,然后写入目标文件。
写入数据流程
(1)客户端通过DistributeFilesystem模块向NameNode发出申请上传文件,NameNode检查目标文件是够存在,上传路径是否合法.
(2)Namenode返回是否可以上传
(3)客户端请求第一个Block上传到哪几个DataNode服务器上。
(4)NameNode返回3个DataNode节点。
(5)客户端通过FSDataOutputStream模块请求datanode1上传数据,datanode1请求调用datanode2,datanode2请求调用datanode3,将这个通信管道建立完成。
(6)datanode逐级应答客户端。
(7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单 位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个确认队列 等待确认。
(8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行 3-7步)。
(3) 元数据管理机制
NameNode启动工作
(1)第一次启动NameNode格式化后,创建FSimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求。
(3)NameNode记录日志操作,更新滚动日志。
(4)NameNode在内存中对数据进行增删改
** Secondary NameNode工作**
(1)Secondary NameNode询问NameNode是否需要CheckPoint.直接带回NameNode是否执行检查点操作结果。
(2)Secondary NameNode请求执行CheckPoint。
(3)NameNode滚动正在写的Edits日志。
将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。
(4)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
(5)生成新的镜像文件fsimage.chckpoint。
(6)拷贝fsImage.chkpoint到NameNode。
(7)NameNode将fsimage.chkpoint重新命名成fsimage

2.MapReduce分布式计算框架

MapTask运行机制
(1)首先读取数据组件InputFormat,通过getSplits方法对输入目录中文件进行切分,切分后由RecordReader对象进行读取,以/n作为分隔符进行读取,返回<key,value>.
(2)进入用户自己继承的Mapper类中,执行用户重写的Map函数。
(3)Map逻辑后,将Map的每条结果通过context.write进行Colllect数据收集。在collect中会对数据在环形缓冲区进行分区。
(4)分区后一边溢写磁盘(如果有Combiner,则将相同的key的key/value加起来),一边排序。最终合并临时文件,并为这个文件提供索引,记录每个reducer偏移量。
ReduceTask工作机制
(1)Reduce进程启动一些数据copy线程,通过HTTP方式请求maptask获取属于自己的文件。
(2)Copy过来的数据会先放入内存缓冲区,merge数据,合并成一个大的数据后进行排序。
(3)对排序后的键值对调用reduce方法。
Shuffle机制

在这里插入图片描述

1)Collect阶段:将MapTask的结果输出到默认大小为100M的环形缓冲区,保存的是key/value序列化数据,Partition分区信息等。

2)Spill 阶段:当内存中的数据量达到一定的阀值的时候,就会将数据写入本地磁盘,在将数据写入磁盘之前需要对数据进行一次排序的操作,如果配置了combiner,还会将有相同分区号和key的数据进行排序。

3)Merge 阶段:把所有溢出的临时文件进行一次合并操作,以确保一个MapTask最终只产生一个中间数据文件。

4)Copy阶段: ReduceTask启动Fetcher线程到已经完成MapTask的节点上复制一份属于自己的数据,这些数据默认会保存在内存的缓冲区中,当内存的缓冲区达到一定的阀值的时候,就会将数据写到磁盘之上。

5)Merge阶段:在ReduceTask远程复制数据的同时,会在后台开启两个线程(一个是内存到磁盘的合并,一个是磁盘到磁盘的合并)对内存到本地的数据文件进行合并操作。

6)Sort阶段:在对数据进行合并的同时,会进行排序操作,由于MapTask 阶段已经对数据进行了局部的排序,ReduceTask只需保证Copy的数据的最终整体有效性即可

3.YARN资源调度框架

在这里插入图片描述

(1)Client调用job.waitForCompletition方法,提交MapReduce作业,申请一个作业ID。RM返回该job的资源提交路径和作业ID。Client提交jar包,切片信息和配置文件到指定的资源提交路径,向RM申请运行MrAppMaster。
(2)RM收到请求后,将该job添加到容量调度器。空闲的NM领取到该job。该NM创建Container,并产生MRAppmaster,下载Client提交资源到本地。
(3)MRAppMaster向RM申请运行多个MapTask,等待MapTask运行完毕,向RM申请容器,运行ReduceTask。
(4)程序运行完毕,MrAppMaster会向RM申请注销自己。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值