栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop核心源码解析(轻量级)

Hadoop核心源码解析(轻量级)

读前需知

本文为作者学习Hadoop源码时的一些总结,可能会有理解错误的地方,学艺不精请谅解

HDFS上产源码解析 create创建过程

1.DN向NN发起创建请求,NN检查目录是否存在,是否可以覆盖,若满足,则addINode创建目录

2.NN处理DN的创建请求,创建输出流

3.启动线程DataStreamer,创建数据dataQueue队列后阻塞等待

write上传过程

1.向DataStreamer的队列里面写数据,写Chunk和CheckSum(512+4byte)写够127个生成packet后进入dataQueue队列并通知队列让其进行处理

2.队列获取第一个数据,建立管道(与NN通讯获取对应的块信息)即机架感知

3.建立管道,Socker请求发送packet,先发送,然后把数据在data队列移除,同时写入到ack队列

4.建立管道,Socker请求继续发送packet,把packet写入磁盘,然后发送到下一个节点(即为边写边发)

5.DN写完数据后应答Response,若是写成功就把ack队列首位移除掉,失败的话就把ack队列首位移到data队列首位(ack首位同样也会移除)

MapReduce源码解析 Job提交源码

1.创建提交Job的代理,判断是本地运行环境还是yarn集群运行环境

2.创建给集群提交数据的Stag路径,获取jobid,并创建Job路径,拷贝jar包到集群,计算切片,生成切片规划文件,向Stag路径写XML配置文件

3.提交Job,返回提交状态

MapTask源码解析

1.每次Map方法结束都会进入到环形缓冲区中对元数据KeyStart,ValueStrat序列化,这也是Key Value是自定义Bean类要继承Writable接口的原因

2.Map数据处理结束后再到环形缓冲区会排序并溢写(数据量小不到环形缓冲区混洗占比的情况下),不论有几个分区都会写到一个文件中(会有索引标识所属分区),溢写结束后会进行归并排序

3.归并排序结束后会生成index文件,文件中存储着数据的分区信息,即账本,自此MapTask基本上处理结束即将进入ReduceTask

ReduceTask源码解析 ReduceTask上来就分成了三个阶段,copy,sort,reduce(源码中分的)

1.初始化,获取MapTask个数,决定拉取几个几个分区的数据,提前准备好内存和磁盘

2.初始化结束进入run方法开始拉取数据,自此copy阶段完成,当前状态立即切换为sort状态,归并排序后sort阶段结束开始reduce阶段

3.进入到Reduce方法,按照Key开始写数据,若是key或Value为自定义Bean类,会调用此类的ToString方法决定格式

Yarn源码解析

1.准备工作(提交xml,切片信息,jar包)

2.yarn客户端向RM提交一个命令,让RM帮忙完成这个命令

3.RM完成命令即启动MRAppMaster,启动之前先初始化MRAppMaster(创建了一个任务调度器,此调度器不是Yarn的任务调度器是MRAppMaster的)

4.MRAppMaster把任务提交到Yarn的调度器队列中并执行(队列中由yarnChild执行)

5.yarnChild执行任务分MapTask和Reduce Task,MapTask分两阶段,Map阶段(map方法冲处理的事情)和Sort阶段(Map方法出去后环形缓冲区中排序),判断若是ReduceTask==0,也就是没有Reduce阶段,则不会有Sort阶段,资源会全部给Map阶段,若是会走sort,也就是有Reduce阶段,则Map占比66.7,Sort占比33.3,也就是如果mr程序map没有执行到66.7%就出了问题,则问题出在Map方法中,若是执行过了66.7然后出了问题,问题就出在Sort阶段环形缓冲区中即资源出了问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/300834.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号