请介绍下hdfs写流程

提问者:帅平 问题分类:面试刷题
请介绍下hdfs写流程

 您阅读本篇文章共花了: 

1 个回答
自然萌鹿鹿
自然萌鹿鹿
1. Client客户端发送上传请求,通过RPC与NameNode建⽴通信,NameNode检查该⽤户是否有上传权限,以及上传的⽂件是否在HDFS对应的⽬录下重名,如果这两者有任意⼀个不满⾜,则直接报错,如果两者都满⾜,则返回给客户端⼀个可以上传的信息;
2. Client根据⽂件的⼤⼩进⾏切分,默认128M⼀块,切分完成之后给NameNode发送请求第⼀个block块上传到哪些服务器上;
3. NameNode收到请求之后,根据⽹络拓扑和机架感知以及副本机制进⾏⽂件分配,返回可⽤的DataNode的地址;
4. 客户端收到地址之后与服务器地址列表中的⼀个节点如A进⾏通信,本质上就是RPC调⽤,建⽴pipeline,A收到请求后会继续调⽤B,B在调⽤C,将整个pipeline建⽴完成,逐级返回Client;
5. Client开始向A上发送第⼀个block(先从磁盘读取数据然后放到本地内存缓存),以packet(数据包,64kb)为单位,A收到⼀个packet就会发送给B,然后B发送给C,A每传完⼀个packet就会放⼊⼀个应答队列等待应答;
6. 数据被分割成⼀个个的packet数据包在pipeline上依次传输,在pipeline反向传输中,逐个发送ack(命令正确应答),最终由pipeline中第⼀个DataNode节点A将pipelineack发送给Client;
7. 当⼀个block传输完成之后, Client再次请求NameNode上传第⼆个block,NameNode重新选择三台DataNode给Client。
发布于:1年前 (2023-02-16) IP属地:四川省
我来回答