对hdfs底层的写入进行分析
一 流程图
1. 流程图
2. 过程解析
create 阶段:
1.1 在hdfs系统上创建文件,过程会经历大量的判断;
1.2 创建DataQueue数据队列来接收本地的数据,启动DataStreamer线程监控和处理队列中的数据。
write阶段:
2.1 向DataStreamer中的DataQueue队列中写数据,有则唤醒,满则等待
2.2 建立数据通信管道以及创建输出流
2.2.1 从nameNode获取block需要存储的DataNode节点列表信息(通过机架感知策略)
2.2.2 创建输出流,通过socket发送数据,DataNode节点启动线程,接收socket数据,写入文件,数据传输是依次的,不是由客户端传到其他所有DataNode节点
2.3 在DataStreamer中创建一个处理反馈应答信息的线程ResponseProcessor,主要用来监听数据是否发送成功
二 总结
参考文章: