一、客户端发出下载文件的请求
客户端执行hdfs dfs -get /movie/a.avi
命令请求 HDFS 下载文件到本地。
二、DFSClient 接收请求,创建 DistributedFileSystem 对象
DFSClient 接收下载文件的请求,并且创建 DistributedFileSystem 对象。
三、DistributedFileSystem 建立与 NameNode 的 RPC 通信,得到 NameNodeProxies
DistributedFileSystem 建立与 NameNode 的 RPC 通信,并且得到 NameNode 的代理对象 NameNodeProxies。
四、DistributedFileSystem 通过代理对象获取文件的元信息
DistributedFileSystem 通过代理对象去 HDFS 上查找文件的元信息。
五、在内存中查找文件的元信息
数据的元信息是优先存储在内存中的,所以 NameNode 会优先去内存中查找。
为了保证元信息的查找速率,通常我们会使用 NameNode 的联盟对内存容量进行扩展。