您的位置:首页 > 大数据 > Hadoop

HDFS 的工作机制:写操作

2017-12-06 19:23 381 查看

HDFS 的工作机制:写操作/读操作

(1)职责:NameNode 负责管理整个文件系统元数据;DataNode 负责管理具体文件数据 ;块存储;Secondary NameNode 协助 NameNode 进行元数据的备份。

注意:

(一)NameNode管理的元数据包括:

1.与文件相关:所有文件的目录树(命名空间);整个集群中的配置文件。

2.DataNode信息池: HDFS 中任何给定文件的块列表及其位置。

(二)Namenode的职责:

1.响应客户端的所有请求 hdfs://namenode:9000

2.维护者:hdfs整个系统的元数据

3.管理者:DataNodes所有的存储节点

(三)集群中的所有的节点都可以作为client,即Namenode shell

(2)工作机制:HDFS 的内部工作机制对客户端保持透明,客户端请求访问 HDFS 都是通过向NameNode 申请来进行。

HDFS的工作机制之写数据流程详解:



hdfs客户端会将上传/allen.txt的文件按照128大小分块

(1)HDFS shell客户端发起文件上传请求通过 RPC与NameNode建立连接通讯,请求上传文件/allen.txt,

(2)NameNode会首先检查文件系统的目录树,是否存在该目录及该文件

(3)NameNode响应client可以上传

(4)请求上传文件allen.txt中的blk_xx 3 (3指得是备份的datanode节点数量)

(5)NameNode检测元数据中的datanodes信息池(目前活跃状态的并且可用节点),返回3台可用的dns的ip地址。

(6)返回client3台dns的ip。

简单说明默认存储策略:Hadoop 在设计时考虑到数据的安全与高效,,数据文件默认在 HDFS 上存放三份,当然可以自定义数量,

首先,选择本机架网络拓扑最近的节点,

然后,随机选择本机架上的某节点,

最后,随机选择其他机架上的某节点,

(7) client 请求3台DataNode中的一台dn1上传数据(本质上是一个 RPC 调用,建立 pipeline(管道)),dn1收到请求会继续调用dn2,然后 dn2 调用dn3,将整个pipeline 建立完成后逐级响应返回client;

(8)响应client可以上传

(9)client将bkl_xx1以package 64k的形式在pipeline中不断的传输数据到dn1,接着传输到dn2、dn3(dn2,dn3数据是与dn1数据同步拷贝备份的过程)

(10)dn1将nlk_xx1数据保存在指定的分片存储位置,dn2、dn3亦如此,

(11)在pipeline 反方向上,逐个发送 ack(命令正确应答),最终由 pipeline中第一个 DataNode 节点 dn1将 pipeline ack 发送给 client;

(12)当地一个块传输完毕时,其他块类似,重复操作(4)的过程,此时的namenode会记录之前传输的ip,保证所有的块信息不会存储在同一节点上,防止宕时,数据的不完整性。

(13)当上传数据的所有块都保存成功时,client将信息告诉namenode,namenode将数据同步到元数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdfs 数据