HDFS(Hadoop Distributed File System)
Hadoop分布式文件系统,为Hadoop这个分布式计算框架提供高性能、高可靠、高可扩展的存储服务。
1.1 HDFS系统架构
HDFS的系统架构是典型的主/从架构,包括一个NameNode节点(主节点)和多个DataNode节点(从节点),并提供应用程序访问接口。NameNode是整个文件系统的管理节点,它负责文件系统名字空间(Namespace)的管理与维护,同时负责客户端文件操作的控制以及具体存储任务的管理与分配。
DataNode提供真实文件数据的存储服务。
1.2 HA (High Availability)定义
HA的定义为系统对外正常提供服务时间的百分比:MTTF/(MTTF+MTTR)*100%
高可靠性更多的是对系统自身而言,它是系统可靠程度的一个指标,而HA则更多的是从系统对外的角度来说的,除了包含系统正常工作的能力,它还强调系统中止服务后迅速恢复的能力。
1.3 HDFS HA原因分析及应对措施
影响HDFS HA的因素可从可靠性和可维护性两方面进行分析。
可靠性:由于NameNode只有一个,且负责整个HDFS文件系统的管理和控制,容易造成单点故障(SPOF)。DataNode发生故障时,可以访问其他DataNode的副本,不会影响HDFS对外正常服务。
可维护性:当NameNode重新启动时,需要加载磁盘上的元数据文件。所以,NameNode的可维护性取决于元数据的可靠性以及NameNode服务恢复时间。
1.4 现有HDFS HA解决方案
主要是从使用者的角度出发,提高元数据的可靠性,减少NameNode服务恢复时间。
提高元数据的可靠性措施主要是对元数据进行备份。
减少NameNode服务恢复时间的措施主要有两种思路:
第一种基于NameNode重启恢复服务的方式,对NameNode自身的启动过程进行优化。
第二种则是启动一个NameNode的热备(Warm standby)节点,发生故障时接替使用。
第一种思路尽管进行了优化,但仍受文件系统规模的限制,第二种则突破了这种限制。
现有比较成熟的HA解决方案:
1、Hadoop的元数据备份方案
利用Hadoop 自身的Failover 措施,将元数据信息保存到多个目录。通常的做法是选择一个本地目录,一个远程目录(通过NFS进行共享),当NameNode 发生故障时,可以启动备用机器的NameNode ,加载远程目录的元数据信息,提供服务。
优点:
- Hadoop自带机制,成熟可靠,使用简单,无需开发。
- 元数据有多个备份,有效保证元数据的可靠性,并且内容保持最新状态。
缺点:
- 元数据需要同步写入多个备份目录,效率低于单个NameNode 。
- 没有做到热备,HDFS恢复服务时,需要重新启动NameNode ,恢复时间与文件系统规模成正比。
- NFS共享的可靠性问题,且多个目录中任何一个目录的保存因为异常而阻塞,将会导致整个HDFS的操作阻塞。
2、Hadoop的Secondary NameNode 方案
启动一个Secondary NameNode 节点,定期从NameNode节点上下载元数据信息(元数据镜像fsimage和元数据操作日志edits),然后将fsimage和edits合并,生成新的fsimage,在本地保存,并将其推送给NameNode,同时重置NameNode上的edits。
优点:
- Hadoop自带机制,成熟可靠,使用简单,无需开发。
- Secondary定期做Checkpoint,可保证各个Checkpoint阶段的元数据的可靠性,同时,进行fsimage和edits的合并,有效限制edits的大小,防止其无限增长。
缺点:
- 没有做到热备,HDFS恢复服务时,需要重新启动NameNode ,恢复时间与文件系统规模成正比。
- Secondary NameNode 保存的只是Checkpoint 时刻的元数据,不是最新数据 ,存在一致性问题。
3、Hadoop的Checkpoint Node 方案
Checkpoint Node 方案与Secondary NameNode 的原理基本相同,只是实现方式不同,该方案利用Hadoop的Checkpoint机制进行备份。
4、Haddop的Backup Node 方案
5、DRBD方案
6、Facebook 的Avatarnode 方案
1.5 方案优缺点比较
方案名称 | 切换时间 | 元数据一致性 | 是否做checkpoint | 使用复杂度 | 成熟度 | 相关资料 |
元数据备份 | 长 | 一致 | 否 | 低 | 高 | 较多 |
Secondary NameNode | 长 | 不一定 | 是 | 中 | 高 | 较多 |
Checkpoint Node | 长 | 不一定 | 是 | 中 | 高 | 较少 |
Backup Node | 中 | 一致 | 是 | 中 | 中 | 较少 |
DRBD | 长 | 一致 | 否 | 高 | 高 | 多 |
AvatarNode | 短 | 一致 | 是 | 高 | 高 | 少 |