×

hdfs

hdfs工作流程?hdfs的主服务器名称

admin admin 发表于2022-06-04 16:03:32 浏览108 评论0

抢沙发发表评论

hdfs工作流程


1. hdfs基本工作流程

1. hdfs初始化目录结构

hdfs namenode -format 只是初始化了namenode的工作目录
而datanode的工作目录是在datanode启动后自己初始化的

namenode在format初始化的时候会形成两个标识:
blockPoolId:
clusterId:

新的datanode加入时,会获取这两个标识作为自己工作目录中的标识

一旦namenode重新format后,namenode的身份标识已变,而datanode如果依然
持有原来的id,就不会被namenode识别

2. hdfs的工作机制

  • hdfs集群分为两大角色:NameNode,DataNode (Secondary NameNode)

  • NameNode负责管理整个文件的元数据(命名空间信息,块信息) 相当于Master

  • DataNode负责管理用户的文件数据块 相当于Salve

  • 文件会按照固定的大小(block=128M)切成若干块后分布式存储在若干个datanode节点上

  • 每一个文件块有多个副本(默认是三个),存在不同的datanode上

  • DataNode会定期向NameNode汇报自身所保存的文件block信息,而namenode则会负责保持文件副本数量

  • hdfs的内部工作机制会对客户的保持透明,客户端请求方法hdfs都是通过向namenode申请来进行访问

  • SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并

  • 3. hdfs写入数据流程

    1.客户端要向hdfs写入数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按照顺序将文件block逐个传给相应datanode,并由接收到block的datanode负责向其他datanode复制block副本-hdfs

    请点击输入图片描述

    4. 写入数据步骤详细解析

  • 客户端向namenode通信,请求上传文件,namenode检查目标文件是否已经存在,父目录是否存在

  • namenode返回给客户端,告知是否可以上传

  • 客户端请求第一个block该传输到那些datanode服务器上

  • namenode返回3个datanode服务器abc

  • 客户端请求3台datanode的一台a上传数据(本质上是一个rpc调用,建立pipeline),A收到请求后会继续调用b,然后b调用c,将整个pipeline建立完成,逐级返回客户端。

  • 客户端开始忘a上传第一个block(先从磁盘读取数据放入本地内存缓存),以packet为单位,a收到一个packet将会传给b,b传给c,a每传一个packet会放入一个应答队列等待应答

  • 宕一个block传输完之后,客户端再次请求namenode上传第二个block的服务器


hdfs的主服务器名称


hdfs的主服务器名称:由一个NameNode和若干个DataNode组成的。 

其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。

对于集群来说,取决于集群中所有DataNode节点的硬盘大小之和。但是需要注意考虑集群的备份数量,假设备份数量为3,集群总容量为3TB,则实际可以存储1TB的文件。

名字节点和数据节点:

这些块被存储在一组数据节点中。名字节点用来操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。它同时确定块与数据节点的映射。数据节点负责来自文件系统客户的读写请求。数据节点同时还要执行块的创建,删除,和来自名字节点的块复制指令。-hdfs


hdfs主要功能


(1)、Client其主要的职责如下

(a)、在上传数据的时候对数据进行分块,在进行数据的下载的时候对数据进行合并

(b)、与NameNode进行通信在进行数据上传的时候获取数据上传时的数据节点,在数据下载的时候获取存储数据的节点

(c)、与DataNode进行通信进行数据的上传和下载

(2)、NameNode主要的职责如下

(a)、负责数据块映射信息的管理,在上传数据的时候给Client返回可以上传的数据节点,在需要获取数据的时候返回数据所在的节点,其本身并不存储数据。

(b)、副本数据的管理策略。

(c)、管理HDFS的名称空间

(3)、DataNode的主要的职责如下

(a)、负责数据的存储以及数据的读写。

(4)、SecondaryNameNode主要职责

(a)、是NM的一个备用。

(b)、减去NM的负担,对NM中的日志以及镜像文件进行合并在把合并之后的数据发回到NM。
HDFS的写过程及内部原理


1. 使用HDFS提供的客户端开发库,向远程的Namenode发起RPC请求;

2. Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常;

3. 当客户端开始写入文件的时候,开发库会将文件切分成多个packets(信息包),并在内部以“data queue“的形式管理这些packets,并向Namenode申请新的blocks,获取用来存储replicas(复制品)的合适的datanodes列表,列表的大小根据在Namenode中对replication的设置而定。

4. 开始以pipeline(管道)的形式将packet写入所有的replicas中。开发库把packet以流的方式写入第一个datanode,该datanode把该packet存储之后,再将其传递给在此pipeline(管道)中的下一个datanode,直到最后一个datanode,这种写数据的方式呈流水线的形式。

5. 最后一个datanode成功存储之后会返回一个ack packet,在pipeline里传递至客户端,在客户端的开发库内部维护着“ack queue“,成功收到datanode返回的ack packet后会从“ack queue“移除相应的packet。

6. 如果传输过程中,有某个datanode出现了故障,那么当前的pipeline会被关闭,出现故障的datanode会从当前的pipeline中移除,剩余的block会继续剩下的datanode中继续以pipeline的形式传输,同时Namenode会分配一个新的datanode,保持replicas设定的数量。
-hdfs