hdfs文件处理过程
hdfs文件处理过程
上传文件
过程:
- 创建分布式文件系统(distribute File System)
- FileSystem作为客户端请求NameNode,上传文件
- NameNode返回是否同意请求
- FileSystem请求datanode信息
- NameNode返回需要上传的datanode信息列表
- FileSystem请求datanode链接,datanode内部逐级请求建立通道
- 到最后一个datanode后依次返回应答成功结果
- FileSystem向datanode逐级,异步、无需等待传输bytebuffer数据
- 数据传输完成,FileSystem返回NameNode传输成功信息
如下图所示:
获取需要上传datanode列表:
上传文件过程第五步, NameNode返回需要上传的datanode信息列表。上传到哪些datanode里,hadoop提供了两个方案:
-
网络拓扑-节点距离计算:
节点与节点到相同祖先的距离 -
框架感知:
For the common case, when the replication factor is three, HDFS’s placement policy is to put one replica on one node in the local rack, another on a different node in the local rack, and the last on a different node in a different rack.(引用自:http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replication)
当副本数是3个时,hdfs策略是将一个副本放在本地节点上,第二个副本也是放在本地另一个节点上,第三个放在不同的机架节点上
文件下载
过程:
- 建立分布式文件系统FileSystem
- FileSystem向NameNode请求文件
- NameNode返回文件的元数据信息
- FileSystem分块与不同DataNode(就近的)建立连接,请求读取数据
- DataNode已packate为单位传输数据
如下图所示: