HDFS-day02-第四章HDFS的读写流程

本文详细介绍了HDFS中数据写入的流程,包括客户端与NameNode交互、副本存储节点的选择策略,以及数据传输的细节,如分块、校验和批量传输。此外,还讨论了网络拓扑中节点距离的计算方法以及机架感知在副本存储中的作用,以确保数据的可靠性和高效传输。在读取数据时,重点在于客户端如何根据距离和负载选择DataNode,并以串行方式读取数据块。
摘要由CSDN通过智能技术生成

1:HDFS写入数据的流程(如何在客户端把数据写入到HDFS集群)

        1:首先客户端向NameNode发送上传请求

        2:NameNode检查客户端所传递的用户以及权限问题,还有是否存在等问题,如果均满足,则响应客户端可以上传问题

        3:客户端请求上传地址,即上传第一个块的地址,返回指定的DataNode

这种副本存储节点的选择有如图上的三种节点,应该是负载均衡方面的考虑。

        4:NameNode返回节点,表示采用这几个节点存储数据

        5:客户端创建写数据流,客户端不是同时对应多个DataNode,因为如果其中任意一个数据没有传输完毕,客户端都需要等待,所以采用如图的建立通道的方式,进行依次传输。

        6:之后再依次应答。

        7:传输数据,不是一次性全传入,而是假如说一个时间段,传入10M数据,有一半时写入到DataNode,另一半直接继续往后传输。传出的最小单位时64k,取名packet。数据的格式内容是先生成512字节的chunk,然后再加上4字节的校验位,形成多个之后,然后共同再形成packet。其实还有一个ack队列,保证全部应答成功,防止部分未传输完毕。

        8:应答全部传输完毕之后,客户端向NameNode发送信号。

2:网络拓扑-节点距离计算

        这个主要是服务于解决刚刚NameNode如何选择合适节点接收客户端传输数据的问题。

         这个距离的计算就是数一共多少条线,找到两者的共同祖先。

3:机架感知(副本存储节点选择)

        这个也是选择合适节点接收数据。

        第一个节点一般都是选择本地,因为数据传的快。

        第二个节点一般是放到其他机架上,保证数据的可靠性。

        第三个节点一般和第二个放在同一机架不同节点,主要考虑传输效率问题。

4:HDFS的读数据流程

        1:客户端创建分布式文件对象,由它来访问NameNode,请求下载文件

        2:NamoNode判断用户存在与否以及所要下载的文件是否存在和用户是否由权限等问题,满足的话就访问允许元数据信息。

        3:客户端创建读数据的流,考虑与自己最近的节点以及该节点的负载问题

        4:客户端读取数据,是串行读的,并不是所有的块统一开始读取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

总会有天明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值