HDFS写数据过程

1、客户端向namenode请求上传文件,namenode在元数据中查找是否满足上传条件(路径是否存在,文件是否存在等)
2、元数据系统返回信息告知客户端,可以上传文件
3、RPC请求上传第一个block(0-128M),请求返回datanode
4、元数据系统向客户端返回若干个datanode(因为一块block有好几个副本),
    选择datanode考虑因素为datanode的空间和客户端到datanode网络跳转的级数(是否一个机架(路由器)),
    比如 如果有三个datanode,选取第一个datanode的时候如果空间和距离相近,那就随机选择一台,
    第二台选择远的,选择第二台机架(安全),第三台和第一台一样。
5、客户端请求第一台datanode建立block传输通道,并告之还要请求第二台第三台,第一台向第二台发出请求建立通道,
    第二台向第三台请求建立通道,第三台机器启动本地流,向第二台机器做出相应,第二台向第一台应答,
    第一台向客户端做出应答,客户端已一个一个小数据包(packet 64k),向第一台机器发送
    第一台在向本地写数据之前要做验证,在客户端文件到第一台之间会有缓冲,缓冲一边向第一台写数据,一边向第二台发送
6、只要第一台上传成功客户端就认为成功了,及时第二台第三台失败,namenode 最后会异步对 数据进行复制
7、如果第一台就上传失败,namenode会重新匹配datanode 会连接三次
8、第二个block和上面的步骤一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值