上篇Hadoop之HDFS原理及文件上传下载源码分析(上)楼主主要介绍了hdfs原理及FileSystem的初始化源码解析, Client如何与NameNode建立RPC通信。本篇将继续介绍hdfs文件上传、下载源解析。
文件上传
先上文件上传的方法调用过程时序图:
其主要执行过程:
FileSystem初始化,Client拿到NameNodeRpcServer代理对象,建立与NameNode的RPC通信(楼主上篇已经介绍过了)
调用FileSystem的create()方法,由于实现类为DistributedFileSystem,所有是调用该类中的create()方法
DistributedFileSystem持有DFSClient的引用,继续调用DFSClient中的create()方法
DFSOutputStream提供的静态newStreamForCreate()方法中调用NameNodeRpcServer服务端的create()方法并创建DFSOutputStream输出流对象返回
通过hadoop提供的IOUtil工具类将输出流输出到本地