hdfs读之总结<四>

一、hdfs读取流程图

假设block副本个数3个

image.png

客户端发起请求到namenode节点,要求namenode告诉客户端读取的block位置在哪些datanode上,第一次读取的datanode一般是网络路径最近的一个,如果读取失败,客户端会通过ClientProtocol协议上报给namenode,该datanode节点的block数据损坏了,然后继续读取datanode2一直到读取成功或者读完所有datanode。

一、hdfs读取流总结

  1. hdfs读过程涉及到很多rpc通讯,其中DFSClient与NameNode通信协议是ClientProtocol,NameNode和DataNode通信协议是DatanodeProtocol
    ,NameNode与secondaryNameNode通信协议是NamenodeProtocol。
  2. hdfs通讯有自带的RPC和Socket通讯,其中client和namenode,datanode和namenode是通过rpc通信而client和datanode之间是通过socket通信。
  3. hdfs有远程scoket读取和本地读取两种方式,如果设dfs.client.read.shortcircuit = true,如果client和block在一个节点上,就会直接读取,无需通过TCP远程读取,提高读取效率。
  4. hdfs存储的单位是block,一个条大数据可以跨多个block存储,但是读取时候是一packet包读取的,每个packet能够传输多个chunk,一个block会被切分多个chunk。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容