本篇总结了Hadooop源码方面几个重要源码面试复述,大数据面试Hadoop必须掌握的源码解析。
NameNode启动源码解析
DateNode启动源码解析
HDFS上传文件源码解析
一、NameNode启动源码解析
1、启动9870端口服务
2、加载镜像文件和镜像日志
3、初始化NN的RPC服务端
4、NN启动资源检查
5、NN对心跳超时判断
6、安全模式
NameNode工作机制
NameNode启动流程源码
NameNode启动源码面试大致复述:
客户端初始化NN的时候,启动了一个9870的网页服务,加载了对应的镜像文件,启动RPC服务,对NN资源的检查,检查目录剩余大小是否低于100m,否则就会警告,对DN心跳超时检测,如果DN上报的信息间隔超过10分钟30s,DN就会挂掉,最后是安全模式,启动的所有block数据块没有达到99%,那么就会进入安全模式
二、DataNode启动源码解析:
1、初始化DataXceiverServer
2、初始化HTTP服务
3、初始化DN的RPC服务端
4、DN向NN注册
5、向NN发送心跳
DataNode工作机制:
DataNode启动流程:
DataNode启动源码面试大致复述:
客户端初始化DN的时候,启动了一个DataX服务,初始化了Http网页服务,初始化了DN的RPC服务,接收客户端对DN的访问,并向NN进行注册,同时发送心跳信息,默认3s一次
三、HDFS上传文件源码解析
1、create创建过程
1.1、DN向NN发送创建请求
1.2、NN处理DN的创建请求
1.3、DataStreamr启动流程
2、write上传过程
2.1、向DataStreamrd的队列写数据
2.2、建立管道之机架感知(块存储位置)
2.3、建立管道之Socket发送
2.4、建立管道之Socket接收
2.5、客户端接收DN写数据应答Response
Hdfs写数据流程:
Hdfs上传源码解析:
Hdfs上传文件源码面试大致复述:
客户端create创建一个NameNode的RPC客户端,发送给NN进行请求,NN进行判断文件路径是否存在,是否有权限,才进行添加,添加后,客户端创建DataStreamer,DataStreamer存储了一个队列dataQueue进行等待,同时DataStreamer又跟NN进行通讯获取可以往哪些节点进行写数据,获取后,才开始真正写数据然后创建一个流,先写chunk,再packet,packet往队列里写,看队列是否满,满就等待,写完之后,packet通知队列已经写完数据,写完之后DataStreamer开始发送数据,每发送完一个数据到DN后,把队列的数据移除,同时在应答队列ackQueue里保存一份发送的数据,DN启动对应的服务来接收对应的数据,接收后持久化到磁盘,同时把数据发送到下一个节点,下一个节点重述上述DN操作,全部节点接收数据后,最后一个节点开始回退应答给上一个节点,最后应答到DataStreamer后,会告诉应答队列删掉数据,如果DN没收齐数据,那么应答队列就会告诉DataStreamer重新发送丢失的数据,直到所有DN接收齐数据。