HDFS 时序图

用户头像
ashuai1106
关注
发布于: 2020 年 07 月 29 日
HDFS时序图



请画出 DataNode 服务器节点宕机的时候,HDFS 的处理过程时序图。

HDFS架构图





HDFS采用的master/slave架构。一个HDFS集群通常由一个Active的NameNode和若干DataNode组成,为了避免NameNode单点问题,通常会做一个NameNode的standby作为备份。在整个hdfs涉及到许多的核心概念

  • NameNode: NameNode是一个中心服务器,负责管理文件系统的名字空间以及客户端的访问,比如文件的打卡、关闭、重命名文件或者目录。它负责确定数据块到具体的存储节点的映射。在其同意调度下进行数据块的创建、删除、复制。

  • DataNode: DataNode是HDFS的实际存储节点,负责管理它所在节点的存储;客户端的读写请求。并且定期上报心跳和块的存储位置。

  • Block: HDFS上文件,从其内部看,一个文件其实是被分成一个或者多个数据块存储的,这些数据块存储在一组DataNode上。

  • Edits: 在HDFS发起的创建、删除等操作其实是一个事物,事物在NameNode上以Edit对象存储在edits文件中,持久化在NameNode的本地磁盘上。

  • FSimage: FSimage是NameNode的元数据存储快照,持久化在NameNode的本地磁盘上。



Client:切分文件;访问或通过命令行管理HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。

NameNode:Master节点,只有一个,管理HDFS的名称空间和数据块映射信息;配置副本策略;处理客户端请求。

DataNode:Slave节点,存储实际的数据;执行数据块的读写;汇报存储信息给NameNode。



其中,HDFS的读写时序图如下:



服务节点宕机时候分读异常和写异常,流程处理如下



HDFS读取发生异常处理

       如果在读数据的时候,DFSInputStream和datanode的通讯发生异常,就会尝试正在读的block的排第二近的datanode,并且会记录哪个datanode发生错误,剩余的blocks读的时候就会直接跳过该datanode。DFSInputStream也会检查block数据校验和,如果发现一个坏的block,就会先报告到namenode节点,然后DFSInputStream在其他的datanode上读该block的镜像

HDFS读操作设计思考

       客户端直接连接datanode来检索数据并且namenode来负责为每一个block提供最优的datanode,namenode仅仅处理block location的请求,这些信息都加载在namenode的内存中,hdfs通过datanode集群可以承受大量客户端的并发访问。

HDFS文件写入失败

       如果在写的过程中某个datanode发生错误,会采取以下几步:

       1.pipeline被关闭

       2.为了防止防止丢包ack quene里的packet会同步到data quene

       3.把产生错误的datanode上当前在写但未完成的block删

       4.block剩下的部分被写到剩下的两个正常的datanode

       5.namenode找到另外的datanode去创建这个块的复

       这些操作对客户端来说是无感知的。



读写失败处理时序图如下:



https://blog.csdn.net/woshiwanxin102213/article/details/19990487?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight

用户头像

ashuai1106

关注

还未添加个人签名 2017.10.20 加入

还未添加个人简介

评论

发布
暂无评论
HDFS时序图