我刚刚给这个Hadoop tutorial读了一个状态,即Hadoop在JobTracker
:中有跟腱(单点故障)
JobTracker是Hadoop MapReduce服务的单点故障,这意味着如果JobTracker宕机,所有正在运行的作业都将暂停。
本文还指出NameNode
是一个SPOF:
Hadoop集群中的单点故障是NameNode。
单点故障很糟糕,mkay什么策略/技术/工具等。是否可以绕过这些SPOF,使Hadoop变得冗余、容错和有弹性(流行语警报!)
HDFS和Mapreduce是Hadoop的核心组件,在早期的Apache Hadoop版本中,Namenode和Jobtracker是SPOF(只能配置一个实例)。此问题已从Hadoop2.X中修复。
Jobtracker HA
作业跟踪器HA可以通过在两个节点上以Active - Standby
模式配置2个Jobtracker(JT)
实例来实现。如果一个JT出现故障,第二个Jobtracker将可以为请求提供服务。一次只有一个作业跟踪器(活动)可用于服务请求,第二个JT(备用)将以只读模式运行。Jobtracker HA需要zookeeper实例,Failure over(switching)可以配置为Manaul或Automcatic。自动故障切换需要另一个名为Failover Controller (FC)
的进程。在当前版本中,如果活动JT失败,所有正在运行的作业都将暂停,但新作业将自动提交给新JT。此功能在当前版本中不可用。
MR2
是使用YARN的第二代mapreduce,Resource Manager(RM)
是YARN中的主服务,RM也可以配置为活动-待机模式。RM故障不会影响正在运行的作业/应用程序。
名称节点HA
Namenode HA很重要。名称节点HA也可以在活动-待机模式下配置(最多2个名称节点实例)。Quorum based Journaling
是一种被广泛接受的方法,它在内部使用动物园管理员。一次只有一个名称节点处于活动状态。
Secondary Namenode(SNN)
不是Standby Namenode(SN)
,反之亦然,SNN在非HA配置中有不同的功能,Namenode HA设置不需要SNN,因为SN Namenode执行检查点(SNN的功能)
Processes Namenode HA
- 活动名称节点
- 备用名称节点
- 故障转移控制器:用于围栏以避免大脑分裂的情况
- Jounalnodes(至少需要3个实例):命名空间修改将被记录到日志节点,备用名称节点从中读取。为了避免大脑分裂的问题,一次只允许写一个namenode
Hadoop中内置了High availability
机制已有一段时间。"Secondary NameNode"、"Backup JobTracker"将作为各自对应节点的热备份。
过去的大部分"SPOF"都在最近的hadoop版本中被删除了。
以下文档对此进行了深入解释。
- Hortonworks HA文件
- Cloudera HA文档
希望能有所帮助。