HDFS 的架构
NameNode :负责文件元数据信息的操作以及处理客户端的请求。
DataNode:负责存储实际的数据块,执行数据块的读/写操作。
SecondaryNameNode:保存 namenode 中对 HDFS metadata 的信息的备份,并减少 namenode 重启的时间。
HDFS读写数据流的流程
文件写入
1、客户端对 DistributedFileSystem 对象调用create() 。
2、DistributedFileSystem 请求 NameNode,NameNode返回是否可以上传。
3、DistributedFileSystem 向客户端返回 FSDataOutputStream对象( FSDataOutputStream对象封装了一个DFSOutputStream对象,该对象负责处理namenode和datanode之间的通信),客户端对 FSDataOutputStream对象写入数据。
4、DFSOutputStream将它分成一个个的数据包,并写入内部队列(数据队列),由 DataStreamer挑选出适合存储副本的一组datanode,并据此向namenode请求分配新的数据块来存储数据队列 —— 假设复本数为3,管线中就有3个节点(dn1、dn2、dn3),Da