目录
1、hdfs读取文件原理
1.1、读取流程图解
1.2、架构层面读取流程详解
- client向namenode节点发送rpc请求,获取block元数据信息,比如block存放位置;
- namenode会使情况返回文件的部分或者全部block列表,对于每个block,namenode都会返回该block副本的datanode地址;
- 客户端获取到返回的datanode地址,根据集群拓扑结构获取datanode与客户端的距离,然后进行排序,排序规则(网络拖布结构距离近的client靠前;心跳机制中超时汇报的datanode状态为STALE,这样的靠后);
- Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是 DataNode,那么将从本地直接获取数据;底层上本质是建立 Socket Stream(FSDataInputStream