HDFS:写流程

写的不到位的地方,欢迎评论指出不足之处

1、客户端通过 HDFS Client 将文件进行上传

       ●   与 NameNode 连接创建文件元数据(文件名、创建时间、大小、权限、文件与block块映射关系)

2、NameNode 对文件的元数据进行验证

       ●   是否有权限

       ●   是否文件已存在等

3、验证通过后,NameNode 触发副本放置策略

4、返还指定数量的 DataNode 并按距离因素,进行排序

       ●   注: HDFS Client 上传文件的节点(DataNode),是由 NameNode 决定的

       ●   注: HDFS Client 上传文件的第一个 DataNode 节点,也就是本机(首先本地要有 DataNode)

5、 HDFS Client 收到信息后,将文件写入 DataNode

       ●   HDFS Client 和 DataNode 建立 TCP 连接 ( Pipeline传输 )

       ●   HDFS Client 将 Packet 放入发送队列 DataQueue 中,并向第一个 DataNode发送

       ●   第一个 DataNode 收到 Packet 后,本地保存并发送给第二个 DataNode

       ●   第二个 DataNode 收到 Packet 后,本地保存并发送给第三个 DataNode

       ●   当 Block 传输完成,DataNode 各自向 NameNode 汇报,同时 HDFS Client 继续传输下一个 block。所以, HDFS Client 的传输和 Block 的汇报也是并行的

       ●   这一个过程中,上游节点同时发送下一个 Packet

       ●   注

             ●   客户端一个块为64MB,再次切割成若干64KB的小包(Packet ),每次读取文件使用更小单位(chunk/二进制)

             ●   chunk 512b(512字节的数据) + chunknum 4b(4字节的校验和),来填充64KB的小包

             ●   NameNode 存储 DataNode 的 Block 信息,是在 DataNode 向 NameNode 汇报时才会追加存储的数据

       ●  另

             ●   生活中类似工厂的流水线

             ●   流水线在大数据中,属于变种的并行计算

             ●   HDFS 使用这种传输方式,副本数对于 HDFS Client 是透明的

             ●   流水线在大数据中,属于变种的并行计算

6、DataNode 挂掉后的处理

       ●   第三个 DataNode 挂了,无影响

       ●   第二个 DataNode 挂了,则第一个 DataNode 直接传送给第三个 DataNode

       ●   第一个 DataNode 挂了,客户端直接传送给第二个 DataNode

       ●   跳过挂掉的 DataNode,直接发送的小包(补差价的形式)是接收方下一组数据需要的内容

7、三个 DataNode (真实存活/正常运行)传送后,会向 NameNode 汇报情况,然后 NameNode 才会记录,而不是受命于客户端

       ●   3个 DataNode 向 NameNode 汇报的只有2个,副本总数不足时

       ●   此时 NameNode 会触发策略,让其中(真实存活的)DataNode 再复制出一块

       ●   最后一个块不足64MB时,有多少传送多少,就无所谓了


面试重点

1、当客户端与 NameNode 进行交互通过后,会触发副本放置策略 

2、返回的副本 DataNode 是按距离排序列表

3、Pipeline 是变种的并行计算

4、副本放置策略的具体内容(副本放置策略 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

家道消乏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值