大家都知道,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/
本博客的文章集合:http://dongxicheng.org/recommend/
相关推荐
- **HDFS HA (High Availability)**:提供了一个高可用性的 HDFS 集群解决方案,通过两个 NameNode 实现故障转移。 - **YARN (Yet Another Resource Negotiator)**:一个新的资源管理系统,旨在替代 MapReduce v1 的...
2. **MapReduce**:并行计算框架,处理HDFS上的数据,由JobTracker(在CDH4中被YARN取代)和TaskTracker组成。 3. **YARN**:资源管理系统,负责集群资源分配和监控,取代了JobTracker的功能。 4. **HBase**:基于...
1. **YARN(Yet Another Resource Negotiator)**:Hadoop 2.x引入了YARN,它将资源管理和任务调度从JobTracker中分离出来,形成了一个独立的Resource Manager。YARN使得集群资源得到了更有效的利用,支持多框架并存...
1. YARN(Yet Another Resource Negotiator):资源调度器,取代了原MapReduce中的JobTracker,负责集群资源的管理和任务调度,提高了系统资源利用率和整体性能。 2. HDFS HA(High Availability):引入了NameNode...
与之对比的是,Apache Hadoop 0.21及之前版本(包括Cloudera的CDH)并不提供任何HA能力,或者仅提供有限的HA功能,并且在架构上存在许多问题和限制。未来版本的Apache Hadoop至2012年为止,仍只有有限的HA能力,所以...
- **YARN(Yet Another Resource Negotiator)**:资源管理器,取代了旧版Hadoop中的JobTracker,负责集群资源的管理和调度,提高了系统的可扩展性和资源利用率。 - **HDFS HA(High Availability)**:通过...
在Hadoop 2.4中,最重要的改进之一是引入了YARN(Yet Another Resource Negotiator),这是一个资源管理系统,负责集群资源的调度和管理,将原本Hadoop 1.x中的JobTracker功能拆分为ResourceManager和...
对于大多数企业和组织来说,选择 Ambari 而不是其他解决方案(如 CDH 或 Apache 官方版本)是非常明智的选择,因为它不仅能提高工作效率,还能确保系统的稳定性和高性能。随着 Ambari 不断更新和完善,其未来的潜力...
(6)在所有节点操作把/usr/local/hadoop-0.20.2-cdh3u5 的所有者,所有者组改为 hadoop 并 su 成该用户 (7)在各个节点上配置秘钥,访问所有的节点 (8)在主节点操作: (1)格式化:hadoop nodename -format ...
NameNode管理元数据,JobTracker(在Hadoop 1.x中)负责任务调度,SecondaryNameNode协助NameNode合并编辑日志。 2. HDFS中的block默认保存3份,以确保数据冗余和容错性,所以正确答案是a) 3份。 3. 通常与...
Hadoop-HA(High Availability)提供了一个高可用性解决方案,允许在发生故障时快速切换到备用NameNode。Federation机制允许多个NameSpace共存,可以水平扩展NameNode,从而解决了单点故障问题。CDH(Cloudera's ...
市场上有许多基于Hadoop的商业发行版,如Cloudera公司的CDH(Cloudera Distribution Including Apache Hadoop),目前最新的版本为CDH4,它是基于Apache Hadoop 0.20.2版本进行演化的。 #### 二、Hadoop的核心组件 ...