CDH中的JobTracker HA方案介绍

大家都知道,Hadoop JobTracker存在单点故障,且一直没有完善的开源解决方案。在Hadoop中,由于JobTracker出现的故障的概率远远小于NameNode,因此JobTracker HA通常不用来解决JobTracker容错,而是JobTracker在线升级问题。

 

Cloudera在最近推出的4.2.0版本中,提供了一套比较完善的JobTracker HA解决方案。本文将介绍这一方案。

在正式介绍CDH解决方案之前,先简要介绍JobTracker HA的基本工作流程,可概括为以下几步:

(1) Active JobTracker通过日志记录作业运行信息;

(2) 发现Active JobTracker故障,切换到某一个Stanby JobTracker上;

(3) Stanby JobTracker通过日志恢复作业运行时信息;

(4)  以上切换过程对JobTracker的客户端(JobClient,TaskTracker和Web HTTP)透明。

对于当前几乎所有Hadoop版本,(1)和(3)已经解决,而(2)(4)则尚未解决。

Cloudera的JobTracker HA解决方案如下图所示,主要由以下几个模块组成:

(1)    JobTrackerHADaemon

运行在JobTracker端,用于控制JobTracker的启动与停止。

(2)    JobTrackerHAServiceProtocol

运行在JobTracker端,实际上是一个RPC Server,接收并处理来自MRHAAdmin(管理员)的JobTracker处理请求,比如将JobTracker转为Active状态或者Standy状态等。

(3)    MRHAAdmin

为管理员提供的工具包,管理员可通过其中的一些函数控制各个JobTracker的状态。

(4)    JobTrackerProxies

对原有RPC客户端的再次封装,使各个客户端在Active JobTracker出现故障时能够透明地将RPC请求发送至新的Active JobTracker上。

(5)    JobTrackerHAHttpRedirector

对来自Web端的HTTP请求进行重定向。当Active JobTracker出现故障时,将所有来自Active JobTracker的访问请求重新定向到新的Active JobTracker上。

CDH中的JobTracker HA方案介绍_第1张图片

当管理员想要对JobTracker进行升级切换时,只需采用一些命令先将当前Active JobTracker置为Stanby,将另外某个Stanby JobTracker置为Active,接着Hadoop内部逻辑如下:

CDH中的JobTracker HA方案介绍_第2张图片

以上只是介绍了人工触发切换模式下的JobTracker HA架构,接下来给出使用Zookeeper进行自动切换的JobTracker HA架构图:

CDH中的JobTracker HA方案介绍_第3张图片

整个架构几乎没有改变,只是由Zookeeper发现Active JobTracker出现故障后,通过一定的选举算法选出一个新的Active JobTraker,并启动该JobTracker。

CDH的JobTracker HA解决方案有一个明显不足是作业恢复粒度过大。我们知道,JobTracker HA有三个级别的作业恢复粒度,分别是:1)作业(JobTracker重启后自动重新提交之前正在运行的作业,但是所有任务,包括重启前已经运行完成的、正在运行的和尚未运行的任务,必须重新运行)、运行完成的任务(JobTracker重启后恢复各个作业已经运行完成的任务,但是之前正在运行和尚未运行的任务需要重新调度执行)和所有任务(JobTracker重启后恢复所有作业之前一模一样的状态,即所有运行完成的和正在运行的任务均保持之前状态,只需重新调度尚未运行的任务),这三个级别实现难度依次增高,但收益依次增大。对于CDH 4.2.0而言,它仅实现了作业级别的恢复粒度,属于一种最简单且收益最小的实现方式。

参考资料:

(1) CDH JobTracker HA介绍和安装方案:

https://ccp.cloudera.com/display/CDH4DOC/Configuring+High+Availability+for+the+JobTracker+(MRv1)

(2) CDH 4.2.0源代码下载:http://archive.cloudera.com/cdh4/cdh/4/

注意,CDH 4发行版中同时带有MRv1和MRv2(YARN),而只有MRv1中有JobTracker HA实现,但它依赖的库的源代码在MRv2中(MRv1中仅有jar包)。

(3) CDH 4.2.0 MRv2(YARN)源代码下载:

http://archive.cloudera.com/cdh4/cdh/4/hadoop-2.0.0-cdh4.2.0.tar.gz

(4) CDH 4.2.0 MRv1源代码下载:

http://archive.cloudera.com/cdh4/cdh/4/mr1-2.0.0-mr1-cdh4.2.0.tar.gz

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce/cdh4-jobtracker-ha/

作者:Dong,作者介绍:http://dongxicheng.org/about/

本博客的文章集合:

 

你可能感兴趣的:(rack)