CDH中的JobTracker HA方案介绍
作者: Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址:http://dongxicheng.org/mapreduce/cdh4-jobtracker-ha/ 大家都知道,Hadoop JobTracker存在单点故障,且一直没有完善的开源解决方案。在Hadoop中
作者:Dong | 新浪微博:西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://dongxicheng.org/mapreduce/cdh4-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上。
当管理员想要对JobTracker进行升级切换时,只需采用一些命令先将当前Active JobTracker置为Stanby,将另外某个Stanby JobTracker置为Active,接着Hadoop内部逻辑如下:
以上只是介绍了人工触发切换模式下的JobTracker HA架构,接下来给出使用Zookeeper进行自动切换的JobTracker HA架构图:
整个架构几乎没有改变,只是由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/
Copyright © 2013
This feed is for personal, non-commercial use only.
The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:
)