每日一读

namenode启动时间(每日一读NameNode读数据流程分析)(1)

大家好 , 今天为大家分享的是NameNode的读数据流程

每天学习一点 hadoop 知识 每天进步一点点

namenode启动时间(每日一读NameNode读数据流程分析)(2)

namenode启动时间(每日一读NameNode读数据流程分析)(3)

namenode启动时间(每日一读NameNode读数据流程分析)(4)

namenode启动时间(每日一读NameNode读数据流程分析)(5)

如上图 :

假如我们要从HDFS集群中读取数据 , 那么读数据具体实现流程是什么样的呢 ?

下面我会为大家讲解 HDFS 读取数据流程

首先 ,当我们HDFS 发出读取数据的请求时 , 客户端会向 DFS(分布式文件系统 ) 发出请求 , 然后DFS 在将 想要读取的数据的信息发送给NameNode , 由NameNode检查 HDFS中是否存在该文件 ,若不存在 ,返回失败信息 , 若存在 , 那么将 该文件的元数据信息返回给 DFS

其次 , DFS收到 NameNode返回的元数据信息 , 立即创建数据流 ,从最近的 DataNode 中读取数据块 , 请求读取数据

然后 , DateNode 开始将数据传输给客户端 , (客户端从磁盘里读取数据流 , 以数据包为单位作数据校验)

最后 , 客户端接收数据 , 先在本地缓存 , 然后再写入目标文件

元数据

当我们将文件上传到 HDFS上时 , 文件是以块的形式上传到HDFS中 , 这些数据块存储在不同的 节点上 , 而元数据就是记录存储数据块位置的文件

例如 : 假如我们 上传一部 1 GB 大小 的名为 假面骑士 的 电影 , 那么上传到 HDFS 后 , 客户端会先将 BLK_01 , Blk_02 两个块 , 01 的块储存在 节点 8

的/user/datas上 , 02 的块存储在 节点 9 的 /user/data 路径上 , 那么元数据 就是 记录 : 节点 8 : /user/datas

节点9 : /user/data / , 当然元数据存储的内容不止这些

还有 : 文件、目录自身的属性信息,例如文件名,目录名,修改信息 ,文件记录的信息的存储相关的信息,例如存储块信息,分块情况,副本个数等。记录HDFS的Datanode的信息,用于DataNode的管理 等等

数据校验

因为 存储在 HDFS 上 文件有可能损坏 , 所以 ,客户端将 HDFS上的文件下载后 会以数据包为单位进行数据校验 , 以保证数据的完整性

namenode启动时间(每日一读NameNode读数据流程分析)(6)

温馨提示

如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。

你与世界

只差一个

公众号

namenode启动时间(每日一读NameNode读数据流程分析)(7)

,