HDFS文件写入过程
HDFS写入过程中各组件发生了什么事?
HDFS有什么组件:
- 
Client 
- 
NameNode(NN) 
- 
DataNode(DN) 
名词解释:
- 
block: HDFS的存储单元,默认128M 
- 
pipeline:Client和DataNode之间用来传输数据建立的管道 
- 
packet:属于pipeline管道传递的单位(64K) 
上传过程:

1.Client 向 NN 发起上传请求,例如上传a.txt文件,a.txt分成3个block(Client 发起)
2.NN检测Client的上传权限和文件是否存在等(NN内部处理)
3.NN检查无误,发送可以上传通知到client(NN发起)
4.client开始上传a.txt文件,申请block1的上传(client发起))
5.根据集群中dn的容量、block信息和机架感知,选出可以上传存储的3个主机(根据3个副本来决定)(NN内部)
6.NN向client返回选出的DN列表(NN发起)
7.client向DN建立pipeline(管道),由client到DN-A,DN-A到DN-B,DN-B到DN-C(client发起,管道打通3个DN)
8.client开始向DN传递数据,每次传递的单位是packet(64K)
9.DN将每次接受到packet进行缓存,继续传递到下一个DN
10.DN接收block1数据完毕后向上发送应答ack到client,表示上传完毕
11.client 重复步骤4,直到所有的block块上传完毕,整个文件的上传就完成了
PS : HDFS文件写入和文件读取的最大区别在于写入的pipeline(管道)是一条类似串联的管道,而文件读取是可以多条管道同时读取,有一个并发的概念
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号