HDFS的高可用性

通过联合使用在多个文件系统中备份namenode的元数据和通过备用namenode创建监测点能防止数据丢失,但是依旧无法实现文件系统的高可用性。Namenode 依旧存在单点失效(SPOF)的问题。如果namenode失效了,那么所有的客户端——包括MapReduce作业——均无法读、写或列 (list)文件,因为namenode是唯一存储元数据与文件到数据块映射的地方。在这一情况下,Hadoop系统无法提供服务直到有新的namenode上线。

在这样的情况下,要想从一个失效的namenode恢复,系统管理员得启动一个拥有文件系统元数据副本的新的namenode,并配置datanode和客户端以便使用这个新的namenode。新的namenode直到满足以下情形才能响应服务:1)将命名空间的映像导入内存中;2)重做编辑日志;3)接收到足够多的来自datanode的数据块报告并退出安全模式。对于一个大型并拥有大量文件和数据块的集群,namenode的冷启动需要30分钟,甚至更长时间。

系统恢复时间太长,也会影响到日常维护。事实上,namenode失效的可能性非常低,所以在实际应用中计划系统失效时间就显得尤为重要。

Hadoop的2.x发行版本系列针对上述问题在HDFS中增加了对高可用性(HA)的支持。在这一实现中,配置了一对活动-备用(active-standby) namenode。当活动namenode失效,备用namenode就会接管它的任务并开始服务于来自客户端的请求,不会有任何明显中断。实现这一目标需要在架构上做如下修改。

namenode之间需要通过高可用的共享存储实现编辑日志的共享。(在早期的高可用实现版本中,需要一个NFS过滤器来辅助实现,但是在后期版本中将提供更多的选择,比如构建于ZooKeeper之上的BookKeeper这样的系统。)当备用namenode接管工作之后,它将通读共享编辑日志直至末尾,以实现与活动namenode的状态同步,并继续读取由活动namenode写入的新条目。

datanode需要同时向两个namenode发送数据块处理报告,因为数据块的映射信息存储在namenode的内存中,而非磁盘。

客户端需要使用特定的机制来处理namenode的失效问题,这一机制对用户是透明的。

在活动namenode失效之后,备用namenode能够快速(几十秒的时间)实现任务接管,因为最新的状态存储在内存中:包括最新的编辑日志条目和最新的数据块映射信息。实际观察到的失效时间略长一点(需要1分钟左右),这是因为系统需要保守确定活动namenode是否真的失效了。

在活动namenode失效且备用namenode也失效的情况下,当然这类情况发生的概率非常低,管理员依旧可以申明一个备用namenode并实现冷启动。这类情况并不会比非高可用(no-HA)的情况更差,并且从操作的角度讲这是一个进步,因为上述处理已是一个标准的处理过程并植入Hadoop中。

故障切换与规避

一个称为故障转移控制器(failover_controller)的系统中有一个新实体管理着将活动namenode转移为备用namenode的转换过程。故障转移控制器是可插拔的,但其最初的实现是基于ZooKeeper的并由此确保有且仅有一个活动namenode。每一个namenode运行着一个轻量级的故障转移控制器,其工作就是监视宿主namenode是否失效(通过一个简单的心跳机制实现)并在namenode失效时进行故障切换。

管理员也可以手动发起故障转移,例如在进行日常维护时。这称为“平稳的故障转移”,因为故障转移控制器可以组织两个namenode有序切换角色。

但在非平稳故障转移的情况下,无法确切知道失效namenode是否已经停止运行。例如,在网速非常慢或者网络被分割的情况下,同样也可能激发故障转移,但是先前的活动namenode依然运行着并且依旧是活动namenode。高可用实现做了更进一步的优化,以确保先前活动的namenode不会执行危害系统并导致系统崩溃的操作——该方法称为“规避”(fencing)。系统引入了一系列的规避机制,包括杀死namenode进程,收回访问共享存储目录的权限(通常使用供应商指定的NFS命令),通过远程管理命令以屏蔽相应网络端口。诉诸的最后手段是,先前活动namenode可以通过一个相当形象的称为STONITH(shoot the other node in the head)的技术进行规避,该方法主要通过一个特定的供电单元对相应主机进行断电操作。

客户端的故障切换通过客户端类库实现透明处理。最简单的实现是通过客户端的配置文件实现故障切换的控制。HDFS URI使用一个逻辑主机名,该主机名映射到一对namenode地址(在配置文件中设置),客户端类库会访问每一个namenode地址直至处理完成。

时间: 2024-08-06 20:10:19

HDFS的高可用性的相关文章

理解HDFS高可用性架构

在Hadoop1.x版本的时候,Namenode存在着单点失效的问题.如果namenode失效了,那么所有的基于HDFS的客户端--包括MapReduce作业均无法读,写或列文件,因为namenode是唯一存储元数据与文件到数据块映射的地方.而从一个失效的namenode中恢复的步骤繁多,系统恢复时间太长,也会影响到日常的维护. Hadoop的2.x版本在HDFS中增加了对高可用性的支持来解决单点失效的问题. 这一实现中简单说就是配置了一对活动-备用namenode.当活动namenode失效的

HDFS知识点总结

学习完Hadoop权威指南有一段时间了,现在再回顾和总结一下HDFS的知识点. 1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网络中跨多台计算机存储的文件系统. HDFS不适合用在:要求低时间延迟数据访问的应用,存储大量的小文件,多用户写入,任意修改文件. 2.HDFS的概念 HDFS数据块:HDFS上的文件被划分为块大小的多个分块,作为独立的存

第三章 第二节 HDFS概念

Block(前文翻译的"块",以后还是使用原文的block) 磁盘的block大小,是可以读写的最小单位.单一磁盘文件系统处理这些block中的数据, 它通常是磁盘block大小的整数倍.文件系统的block大小通常是几kb,而磁盘block通常是 512b.这对于只是简单读写任意长度文件的文件系统使用者来说是透明的.尽管如此, 还是有一些工具来维护文件系统,如df和fsck,它是在文件系统的block级别操作的. HDFS同样有block的概念,但是它是一个更大的单元----默认12

用HAWQ轻松取代传统数据仓库(十四) —— 高可用性

一.HAWQ高可用简介 HAWQ作为一个传统数仓在Hadoop上的替代品,其高可用性至关重要.通常硬件容错.HAWQ HA.HDFS HA是保持系统高可用时需要考虑并实施的三个层次.另外实时监控和定期维护,也是保证集群所有组件健康的必不可少的工作.        总的来说,HAWQ容错高可用的实现方式包括: 硬件冗余 master镜像 双集群 1. 硬件级别的冗余(RAID和JBOD) 硬件组件的正常磨损或意外情况最终会导致损坏,因此有必要提供备用的冗余硬件,当一个组件发生损坏时,不中断服务.某

HDFS 体系结构详解

Hdfs体系结构:三个进程(namenode,datanode, secondary namenode) Hdfs(hadoopdistributed filesystem)是hadoop的核心子项目,是分布式存储,它是基于流数据模式的访问和处理超大文件.(分布式最大的好处就是其通透性,虽然分布存在不同的datanode上面,但是感觉在一台电脑的本地进行操作). Tips: Hdfs的高可用性主要取决于namenode,间接取决于元数据的可靠性和namenode的服务回复时间. 磁盘元数据文件,

hdfs知识点《转》

学习完Hadoop权威指南有一段时间了,现在再回顾和总结一下HDFS的知识点. 1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网络中跨多台计算机存储的文件系统. HDFS不适合用在:要求低时间延迟数据访问的应用,存储大量的小文件,多用户写入,任意修改文件. 2.HDFS的概念 HDFS数据块:HDFS上的文件被划分为块大小的多个分块,作为独立的存

HDFS知识总结

转自:https://www.cnblogs.com/caiyisen/p/7395843.html 学习完Hadoop权威指南有一段时间了,现在再回顾和总结一下HDFS的知识点. 1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网络中跨多台计算机存储的文件系统. HDFS不适合用在:要求低时间延迟数据访问的应用,存储大量的小文件,多用户写入,任意

Hadoop 学习 HDFS

1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网络中跨多台计算机存储的文件系统. HDFS不适合用在:要求低时间延迟数据访问的应用,存储大量的小文件,多用户写入,任意修改文件. 2.HDFS的概念 HDFS数据块:HDFS上的文件被划分为块大小的多个分块,作为独立的存储单元,称为数据块,默认大小是64MB. 使用数据块的好处是: 一个文件的大小可

解析Hadoop新一代MapReduce框架Yarn

背景 Yarn是一个分布式的资源管理系统,用以提高分布式的集群环境下的资源利用率,这些资源包括内存.IO.网络.磁盘等等.其产生的原因是为了解决原MapReduce框架的不足.最初MapReduce的committer们还可以周期性的在已有的代码上进行修改,可是随着代码的增加以及原MapReduce框架设计的不足,在原MapReduce框架上进行修改变得原来越困难,所以MapReduce的committer们决定从架构上重新设计MapReduce,使下一代的MapReduce(MRv2/Yarn