hadoop中HDFS的写流程

我们先来看下面一张图

        当客户端需要上传数据到HDFS的时候

  1. 客户端先创建一个分布式文件系统对象,向NameNode管理节点数据目录的老大提交上传文件请求
  2. NameNode会先查看你是否有上传文件的权限如果通过之后再查看要上传的文件是否已经存在,然后响应给客户端是否可以上传文件
  3. 客户端请求第一个 Block上传到哪几个DataNode服务器上。

  4. NameNode会根据存储节点来选择:首先选择本地节点,其次是同个机架上的一个节点,最后是其他机架的另一个节点,返回给客户端可以存储的地点

  5. 客户端创建数据流,这个时候大家就要思考一个问题,如果客户端向每个节点一个一个写入数据,如果其中一个节点因为硬件等方面问题写入时间很久,这个写过程就要等待很久,那么可以先创建一个传输管道,先向本地节点建立文件传输管道,如A-B-C

  6. 建立之后给客户端响应说我们已经建立完毕

  7. 客户端以chunk 512B的数据和4B校验位作为一个单位也就是516B,封装在容量为64K的packet里面进行传输,每次传输以Packet为单位

  8. 最后数据传输成功啦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值