文章目录
HDFS问答
一、描述一下HDFS的数据写入流程
(1)客户端通过DFS问NN能不能上传文件,NN对文件进行一系列校验,校验通过就告诉客户端可以上传,校验不通过就报错
(2)NN响应之后,如果可以上传文件,此时客户端已经对文件进行了切块操作
(3)客户端问NN第一个数据块(Block)能不能开始上传,上传到哪儿(DN名单)
(4)NN根据机架感知策略给出DN名单dn1、dn2、dn3,表示客户端可以将数据块传到这些节点上
(5)客户端通过数据输出流(FSDataOutputStream)发出请求上传数据,DN根据网络拓扑原理确定先从dn1开始建立通道,然后dn1调用dn2,dn2调用dn3,把整个通道建立完成。
(6)dn1、dn2、dn3逐级应答客户端。
(7)客户端开始往dn1上传第一个数据块(先从客户端读取数据放到DN本地内存缓存),这时数据块以更小的数据包(Packet 64k)为单位开始传给dn1,dn1收到一个数据包就会传给dn2,dn2传给dn3;dn1每传一个数据包就会放入一个ack应答队列等待应答,应答通过,才开始写数据,应答不通过,等队列通畅再重新写,直到所有数据包上传完毕
(8)当一个Block传输完成之后,客户端再次请求Name