HDFS 高可用 使用Quorum Journal Manage

2018-06-06  本文已影响0人  pcqlegend

目的:

本指南提供了HDFS HA 特征,以及通过 QJM如何配置和管理 一个HA的HDF 集群的一个概览。本指南嘉定读者已经有了一个对HDFS 集群中 基本组件和节点类型的基本理解。具体的可以参考 HDFS 架构指南。

注意:使用QJM 或者传统的共享存储。

本指南讨论了如何配置以及使用HDFS HA 通过使用QJM在Active 和Standbyt NameNodes 之间 共享edti logs 。通过NFS配置和使用HA的晴参考另一篇指南。

背景

在Hadoop 2.0.0 之前,在HDFS集群中,NameNode是一个单点故障(SPOF)。每个集群只有一个NomeNode, 如果这个机器或者进程不可用,整个集群都会不可用。除非这个机器重启或者在一个其他机器上重启。
这会在以下两种方式下影响HDFS 集群的整体可用性。

架构

一个典型的HA的集群,两个分开的NameNode.在任何时刻,有且仅有一个NameNode 是Active状态,并且另一个是Standby状态.Active的节点负责集群内所有client的操作,而Standby 节点则简单扮演一个slave ,保持足够的同步状态用来在必要的时候提供快速的故障恢复。
为了使得StandBy 节点能能够和Active节点保持状态的同步,两个节点通过一组 独立的 JournalNodes(JNs) 通讯。当Active节点上的任何namespace的变更发生,它就会向JNs中的大多数记录一条这个变更的日志。Standby 节点可以读JNs上的edits 日志,并且持续的监控edits long的变化。一旦监测到edits,它就会将edits 应用到自己的namespace中。在故障恢复的时候, Standby 在提升自己成为Active状态之前,需要保证她已经读到了所有来自Journal 节点的edits。这就保证了在故障切换发生前namespace的状态已经完全同步了。
为了提供一个快速的故障切换,Standby节点必须有集群中所有block的位置的实时信息,这很必要。为了达到这个功能,DataNode 需要配置两个NameNode的位置,并且发送block的位置信息和心跳给两个NameNode.
对于一个HA的集群正确操作来说,一个时刻只有一个节点处于Active状态是至关重要的。否则的话,namespace的状态将会在两者之间快速变化,这将会导致数据丢失和其他不正确的结果。为了保证这个属性以及防止 所谓的脑裂的场景,Journal节点在一个时刻只会允许一个NameNode节点写入。在故障切换的时候,即将成为Active的NameNode将会负责写入JournalNode角色,这将会有效的组织其他的NameNode 继续成为Active状态,使得新的Active节点能够安全的处理故障切换。

硬件资源

为了部署一个HA的集群,你需要如下的准备

上一篇下一篇

猜你喜欢

热点阅读