读前需知
本文为作者学习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包到集群,