hadoop3 HDFS生产设计文档

HDFS生产设计

该文档是基于Hadoop权威指南整理抽取的,更完整的细节可以阅读原书籍。

HDFS架构图

框架图参考文档:https://www.processon.com/view/5db807bbe4b0335f1e44d19b?fromnew=1
HDFS架构图

NameNode节点

NameNode节点为HDFS的管理节点,管理整个文件系统的命名空间,维护着文件系统数以及整棵树内的所有的文件和目录。这些信息以命名空间镜像文件和编辑日志文件这两个文件的形式永久保存在本地磁盘上。

NameNode节点容错机制:
如果NameNode节点损坏,文件系统所有文件将会丢失。因此NameNode的容错机制非常重要,hadoop提供了两种机制,这里重点讲解备用NameNode机制:
HDFS只会有一个NameNode在提供服务,备用NameNode无法同时提供服务,备用NameNode能定期合并命名空间镜像文件和编辑日志文件,并保存合并后的命名空间镜像文件的副本,在活动的NameNode节点发生故障的时候会自动从备用状态切换到活动状态。备用NameNode应当和活动NameNode部署在不同的物理机上,以提交容错性。但备用NameNode的数据同步会滞后于活动NameNode,因此在活动NameNode损坏是难免会有部分数据的丢失。

为解决以上问题hadoop引入了高可用的HA机制:
HA机制配置了活动-备用(active-standby)NameNode,当active NameNode失效时,standby NameNode就会激活接管它的任务并为客户端提供服务,实现这一目标的需要以下机制的保证:

  • NameNode节点之间需要通过高可用的共享存储实现编辑日志的共享,当备用NameNode被激活后,将通读共享编辑日志直至末尾,以实现与原有的活动NameNode的状态同步,并读取由原有活动NameNode写入的新条目;
  • DataNode需要向所有的NameNode节点发送数据块处理报告,因为数据块的映射信息是存储在NameNode的内存中,而非磁盘中;
  • 客户端需要特定的机制来处理NameNode的失效问题,避免由于网络问题导致出现两个活动的NameNode;
  • 备用NameNode为活动NameNode的命名空间设置周期性检查点;

对于第一点中的高可用共享存储实现编辑日志的共享,hadoop选用群体日志管理(QJM:quorum journal manager),QJM以一组日志节点(journal node)的形式运行,由活动NameNode写入数据,备用NameNode读取数据,从而实现每一次编辑所有日志节点数据都是一致的(至少要有三个journal节点使系统能够忍受任何一个节点的丢失)。hadoop集群的QJM配置参考文章:HBASE2.2.2+hadoop3.1.3分布式集群搭建

namenode内存配置(hadoop-env.sh文件中的HADOOP_NAMENODE_OPTS属性):
参考hadoop权威指南->hadoop配置->环境配置:
在这里插入图片描述
namenode数据备份:
dfs.namenode.name.dir可以指定多个目录(不同目录需要分配在不同的磁盘中),配置多个目录时namenode的元数据文件会同时冗余备份在所指定的目录中。这样即使当中的某一块磁盘发生故障,其余的磁盘都可以重新恢复元数据文件。

DataNode节点

DataNode节点为HDFS的工作节点,负责存储并检索数据块(收客户端或NameNode调度),并定期向客户端发送所有储存块的列表。

DataNode存储目录配置:
dfs.datanode.data.dir可以指定多个目录,其目的是使DataNode循环地在各个目录下写数据,因此为了提高性能,可以在每个本地磁盘指定一个存储目录,使数据块跨磁盘分布,针对不同数据块的读操作可以并发执行,提升读取性能。
小提示:DataNode磁盘挂载可以选用noatime选项挂载,读写文件时无需记录文件修改和访问时间,可以显著提升读写性能。

HDFS数据操作

HDFS数据写入流程

写入流程图参考文档:https://www.processon.com/view/5e85e00de4b03c4ce4e338f6?fromnew=1
在这里插入图片描述
写入流程:首先dn1收到从client端传过来的packet,dn1立即将packet传至下游dn2,随后对packet进行落盘操作,Ddn2的操作与dn1一致,dn3作为pipeline里的最后一个节点,在落盘数据之后,会向上游dn2发送ack,dn2在收到ack后继续向上游转发,dn1在收到dn2的ack后向client端转发,client收到dn1的ack即完成一次完整的pipeline数据写入流程。

HDFS数据读取流程

读取流程图参考文档:https://www.processon.com/view/5e880f3de4b07e41dc2a7b9e?fromnew=1
在这里插入图片描述

HDFS数据读取延迟

HDFS数据读取有一定的延迟,如果业务上对数据读取有实时性的要求,使用hbase+hadoop的解决方案,参考文档:HBASE生产设计文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值