Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题,该问题在很长时间内没有解决,这使得Hadoop在相当长时间内仅适合离线存储和离线计算。
令人欣慰的是,这些问题在Hadoop 2.0中得到了非常完整的解决。Hadoop 2.0内核由三个分支组成,分别是HDFS、MapReduce和YARN,而Hadoop生态系统中的其他系统,比如HBase、Hive、Pig等,均是基于这三个系统开发的。截止本文发布,Hadoop 2.0的这三个子系统的单点故障均已经解决或者正在解决(Hadoop HA),本文将为大家介绍当前的进度和具体的解决方案。
在正式介绍单点故障解决方案之前,先简要回顾一下这三个系统(三个系统均采用简单的master/slaves架构,其中master是单点故障)。
(1) HDFS:仿照google GFS实现的分布式存储系统,由NameNode和DataNode两种服务组成,其中NameNode是存储了元数据信息(fsimage)和操作日志(edits),由于它是唯一的,其可用性直接决定了整个存储系统的可用性;
(2)YARN:Hadoop 2.0中新引入的资源管理系统,它的引入使得Hadoop不再局限于MapReduce一类计算,而是支持多样化的计算框架。它由两类服务组成,分别是ResourceManager和NodeManager,其中,ResourceManager作为整个系统的唯一组件,存在单点故障问题;
(3)MapReduce:目前存在两种MapReduce实现,分别是可独立运行的MapReduce,它由两类服务组成,分别是JobTracker和TaskTraker,其中JobTracker存在单点故障问题,另一个是MapReduce On YARN,在这种实现中,每个作业独立使用一个作业跟踪器(ApplicationMaster),彼此之间不再相互影响,不存在单点故障问题。本文提到的单点故障实际上是第一种实现中JobTracker的单点故障。
先说当前Hadoop单点故障的解决进度,截止本文发布时,HDFS单点故障已经解决,且提供了两套可行方案;MapReduce单点故障(JobTracker)由CDH4(CDH4同时打包了MRv1和MRv2,这里的单点故障指的是MRv1的单点问题)解决,且已经发布;YARN单点故障尚未解决,但方案已经提出,由于解决方案借鉴了HDFS HA和MapReduce HA的实现,因为将会很快得到解决。
总体上说,Hadoop中的HDFS、MapReduce和YARN的单点故障解决方案架构是完全一致的,分为手动模式和自动模式,其中手动模式是指由管理员通过命令进行主备切换,这通常在服务升级时有用,自动模式可降低运维成本,但存在潜在危险。这两种模式下的架构如下。
【手动模式】
【自动模式】
在Hadoop HA中,主要由以下几个组件构成:
(1)MasterHADaemon:与Master服务运行在同一个进程中,可接收外部RPC命令,以控制Master服务的启动和停止;
(2)SharedStorage:共享存储系统,active master将信息写入共享存储系统,而standby master则读取该信息以保持与active master的同步,从而减少切换时间。常用的共享存储系统有zookeeper(被YARN HA采用)、NFS(被HDFS HA采用)、HDFS(被MapReduce HA采用)和类bookeeper系统(被HDFS HA采用)。
(3)ZKFailoverController:基于Zookeeper实现的切换控制器,主要由两个核心组件构成:ActiveStandbyElector和HealthMonitor,其中,ActiveStandbyElector负责与zookeeper集群交互,通过尝试获取全局锁,以判断所管理的master进入active还是standby状态;HealthMonitor负责监控各个活动master的状态,以根据它们状态进行状态切换。。
(4)Zookeeper集群:核心功能通过维护一把全局锁控制整个集群有且仅有一个active master。当然,如果ShardStorge采用了zookeeper,则还会记录一些其他状态和运行时信息。
尤其需要注意的是,解决HA问题需考虑以下几个问题:
(1)脑裂(brain-split):脑裂是指在主备切换时,由于切换不彻底或其他原因,导致客户端和Slave误以为出现两个active master,最终使得整个集群处于混乱状态。解决脑裂问题,通常采用隔离(Fencing)机制,包括三个方面:
- 共享存储fencing:确保只有一个Master往共享存储中写数据。
- 客户端fencing:确保只有一个Master可以响应客户端的请求。
- Slave fencing:确保只有一个Master可以向Slave下发命令。
Hadoop公共库中对外提供了两种fenching实现,分别是sshfence和shellfence(缺省实现),其中sshfence是指通过ssh登陆目标Master节点上,使用命令fuser将进程杀死(通过tcp端口号定位进程pid,该方法比jps命令更准确),shellfence是指执行一个用户事先定义的shell命令(脚本)完成隔离。
(2)切换对外透明:为了保证整个切换是对外透明的,Hadoop应保证所有客户端和Slave能自动重定向到新的active master上,这通常是通过若干次尝试连接旧master不成功后,再重新尝试链接新master完成的,整个过程有一定延迟。在新版本的Hadoop RPC中,用户可自行设置RPC客户端尝试机制、尝试次数和尝试超时时间等参数。
为了印证以上通用方案,以MapReduce HA为例进行说明,在CDH4中,HA方案介绍可参考我的这篇文章:“CDH中JobTracker HA方案介绍”,架构图如下:
Hadoop 2.0 中 HDFS HA解决方案可阅读文章:“Hadoop 2.0 NameNode HA和Federation实践”,目前HDFS2中提供了两种HA方案,一种是基于NFS共享存储的方案,一种基于Paxos算法的方案Quorum Journal Manager(QJM),它的基本原理就是用2N+1台JournalNode存储EditLog,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功,数据不会丢失了。目前社区正尝试使用Bookeeper作为共享存储系统,具体可参考。HDFS-1623给出的HDFS HA架构图如下所示:
目前进度最慢的是YARN HA解决方案,该方案已经文档化,正在规范和开发中,具体可参考:https://issues.apache.org/jira/browse/YARN-149,总体上看,它的整体架构与MapReduce HA和YARN HA的类似,但共享存储系统采用的是Zookeeper。之所以采用Zookeeper这种轻量级“存储系统”(需要注意的是,zookeeper设计目的并不是存储,而是提供分布式协调服务,但它的确可以安全可靠的存储少量数据以解决分布式环境下多个服务之间的数据共享问题),是由于YARN的大部分信息可以通过NodeManager和ApplicationMaster的心跳信息进行动态重构,而ResourceManager本身只需记录少量信息到Zookeeper上即可。
总体上讲,HA解决的难度取决于Master自身记录信息的多少和信息可重构性,如果记录的信息非常庞大且不可动态重构,比如NameNode,则需要一个可靠性与性能均很高的共享存储系统,而如果Master保存有很多信息,但绝大多数可通过Slave动态重构,则HA解决方法则容易得多,典型代表是MapReduce和YARN。从另外一个角度看,由于计算框架对信息丢失不是非常敏感,比如一个已经完成的任务信息丢失,只需重算即可获取,使得计算框架的HA设计难度远低于存储类系统。
Hadoop HA配置方法:
(1)HDFS HA:Hadoop 2.0 NameNode HA和Federation实践
(2)MapReduce HA:Configuring JobTracker High Availability
原创文章,转载请注明: 转载自董的博客
本文链接地址: http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-ha/
作者:Dong,作者介绍:http://dongxicheng.org/about/
本博客的文章集合:http://dongxicheng.org/recommend/
相关推荐
在Hadoop 2.0中,为了解决单点故障问题,Hadoop社区引入了一系列的高可用性(HA)解决方案,以确保系统的关键组件能够持续运行,即使在某个节点失败时也能保持服务的稳定性。Hadoop 1.0的主要缺点在于MapReduce的...
涉及到了Hadoop2.0、Hbase、Sqoop、Flume、Hive、Zookeeper的具体环境搭建
Hadoop 2.0是Apache Hadoop的一个重大升级版本,它引入了YARN(Yet Another Resource Negotiator)作为其核心组件之一,以解决Hadoop 1.x版本中MapReduce框架存在的诸多限制,如扩展性差、资源利用率低以及对多种...
hadoop 2.0 详细安装手册。hadoop 2.0 详细安装手册。
Hadoop 2.0作为该框架的一个重要版本,引入了YARN(Yet Another Resource Negotiator)作为资源管理平台,提供了更好的资源管理和任务调度能力。本文档提供了Hadoop 2.0在Linux系统上安装部署的详细步骤和方法。 一...
【Hadoop 2.0 部署详解】 在大数据处理领域,Apache Hadoop 是一个不可或缺的开源框架,尤其在大规模数据存储和处理方面表现出强大的能力。Hadoop 2.0 引入了高可用性(HA)特性,极大地提高了系统的稳定性。本文将...
总之,Hadoop 2.0作为一个全面的大数据解决方案,为企业和个人提供了处理海量数据的强大工具。理解其核心组件、工作原理以及在实际中的应用,对于大数据专业人士来说至关重要。通过深入学习和实践,可以充分利用...
本文是详细的Hadoop2.0安装方法步骤
Hadoop 2.0通过引入YARN,不仅解决了原有MapReduce框架的局限性,还为Hadoop生态系统注入了新的活力。YARN的出现使得Hadoop能够更好地适应多样化和复杂化的大数据处理需求,成为了一个真正意义上的大数据处理平台。...
hadoop2.0版本安装手册,包含hadoop、hive、hbase、mahout、sqoop、spark、storm、整个体系的安装配置
【实战Hadoop 2.0】是一套深入学习Hadoop生态系统的PPT文档,涵盖了Hadoop分布式文件系统(HDFS)、资源调度器YARN、数据分析工具Spark、Ambari管理平台等多个关键组件。以下是这些核心知识点的详细解析: 1. **...
在Hadoop2.0上实现深度学习是一种应对大数据规模下机器学习需求的有效解决方案。Hadoop是一个开源的分布式计算框架,特别适合处理和存储海量数据。随着深度学习的发展,其在处理复杂模式识别和数据分析方面的能力日...
2. HDFS HA(High Availability):为了解决NameNode单点故障问题,Hadoop 2.0实现了NameNode高可用,通过热备机制确保服务不间断。 3. 更强的容错性和可扩展性:通过改进的数据节点心跳机制和快速失败检测,Hadoop...
6.1 Hadoop 2.0 大家族概述 Hadoop 2.0 是一个开源的分布式计算框架,是Hadoop生态系统的核心组成部分,它在Hadoop 1.0的基础上进行了重大改进,引入了YARN(Yet Another Resource Negotiator),使得系统更加灵活和...
Hadoop2.0引入了高可用模式来解决NameNode的单点故障问题。在HA模式下,有两个NameNode实例,一个处于Active状态,负责处理所有客户端请求;另一个处于Standby状态,作为热备份。通过Zookeeper进行主备切换的仲裁,...
实战Hadoop 2.0:从云计算到大数据(第二版)
【Hadoop 2.0 知识点详解】 Hadoop 2.0 是 Apache 开源项目的一个重要版本,它的设计目标...无论是数据存储、计算还是资源管理,Hadoop 2.0都提供了一套强大的解决方案,为互联网行业的海量数据分析奠定了坚实的基础。
为了克服这一问题,Hadoop2.0引入了HA机制,确保即使在NameNode发生故障的情况下也能保持集群服务的连续性。 #### 原理介绍 在Hadoop2.0 HA环境中,有两个或更多的NameNode实例运行在同一集群中,其中一个是活跃...
### 基于Hadoop2.0云平台的风力发电机...总之,基于Hadoop2.0云平台的风力发电机组故障诊断技术是一种非常有前景的技术方案,它不仅能够提高风力发电系统的运行效率和可靠性,还能为风能资源的可持续利用提供技术支持。
《云计算(第三版)》配套课程的PPT涵盖了云计算的多个关键领域,特别是对...总结,这门课程提供的PPT课件是一个全面的云计算学习资源,尤其对Hadoop 2.0的深入解析,有助于学习者构建坚实的云计算和大数据处理基础。