1、客户端发送请求,调用DistributedFileSystem API的open方法发送请求到Namenode,获得block的位置信息,因为真正的block是存在Datanode节点上的,而namenode里存放了block位置信息的元数据。
2、Namenode返回所有block的位置信息,并将这些信息返回给客户端。
3、客户端拿到block的位置信息后调用FSDataInputStream API的read方法并行的读取block信息,流程是并发的,block默认有3个副本,所以每一个block只需要从一个副本读取就可以。
4、datanode返回给客户端。
NameNode
是主节点,储存文件的元数据如文件名,文件目录结构,文件 属性(生成 时间,副本数,文件权限),以及每个文件的块列表和块所在DataNode等。
DataNode
在本地文件系统储存文件块数据,以及块数据的效验。
SecondaryNameNode
用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
namenode,datanode以及secondarynamenode三个人去打架,namenode指挥datanode跟namenode汇报战况然后secondarynamenode辅namenode