Hadoop--04---HDFS_02----读写流程

Posted 高高for 循环

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop--04---HDFS_02----读写流程相关的知识,希望对你有一定的参考价值。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


HDFS 写数据

1. 写数据流程流程


(1)客户端通过Distributed FileSystem 模块向NameNode 请求上传文件,NameNode 检查目标文件是否已存在,父目录是否存在,是否有写的权限。
(2)NameNode 返回是否可以上传。
(3)客户端请求第一个 Block 上传到哪几个DataNode 服务器上。
(4)NameNode 返回3 个DataNode 节点,分别为dn1、dn2、dn3。
(5)客户端通过FSDataOutputStream 模块请求dn1 上传数据,dn1 收到请求会继续调用
dn2,然后dn2 调用dn3,将这个通信管道建立完成。
(6)dn1、dn2、dn3 逐级应答客户端。
(7)客户端开始往dn1 上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),
以Packet 为单位,dn1 收到一个Packet 就会传给dn2,dn2 传给dn3;dn1 每传一个packet
会放入一个应答队列等待应答。
(8)当一个Block 传输完成之后,客户端再次请求NameNode 上传第二个Block 的服务
器。(重复执行3-7 步)。

2. 网络拓扑-节点距离计算




3. 机架感知(副本存储节点选择)


HDFS 读数据

1. 读数据流程流程

(1)客户端通过DistributedFileSystem 向NameNode 请求下载文件,NameNode检查是否有读的的权限,所读文件是否存在.
(2)NameNode 通过查询元数据,找到文件块所在的DataNode 地址。
(3)挑选一台DataNode(就近原则,负载均衡原则)然后随机选择一台服务器,请求读取数据。
(4)DataNode 开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet 为单位来做校验)。
(5)客户端以Packet 为单位接收,先在本地缓存,然后写入目标文件。

以上是关于Hadoop--04---HDFS_02----读写流程的主要内容,如果未能解决你的问题,请参考以下文章

读数据压缩入门笔记02_二进制和熵

读SQL进阶教程笔记02_三值逻辑和NULL

读Java实战(第二版)笔记02_行为参数化Lambda表达式

读Java性能权威指南(第2版)笔记02_ Java SE API技巧上

读C#代码整洁之道笔记02_类对象和数据结构及编写整洁函数

51单片机AT24C02写读流水灯实例+Proteus仿真