Hadoop高可用模式 集群搭建与管理(一)

来源:互联网 发布:淘宝上怎么买弓弩 编辑:程序博客网 时间:2024/06/06 18:06

1   简介

一般来说,Hadoop 集群模式有如下4种。

1.1   单机模式:SingleNode Cluster

也称为伪分布式模式,即将Hadoop安装在一台机器上,通过进程来模拟各主机节点的协作和运行,其可靠性、稳定性都是非常差的,并且具备糟糕的性能效率,没有团队会在生产环境使用它。那么它是否就没有用呢?也不是的,通常使用这种模式进行开发和调试工作。

1.2   完全分布式模式:FullDistributed Cluster

将Hadoop部署在至少两台机子上,数据块副本的数量通常也设置为2以上。该模式的集群,无论规模多大,只拥有1台NameNode节点,且也是唯一Active的工作节点。NameNode(简称NN)相当于Hadoop文件系统的管家,对集群的所有文件访问和操作都经由NN统一协调管理。可想,当集群规模越来越庞大时,仅有一台NN,必定是不堪重负,那么它很容易就会挂掉,一旦挂掉,不仅集群立即瘫痪,还很容易造成数据丢失。另外,该模式通常ResourceManager(RM)也仅部署1台,ResourceManager是yarn的管家,主要管理任务的执行,例如MapReduce任务。与NN类似,当集群提交的作业过于繁重时,其同样面临超负载的问题。那么此模式是否也无用武之地呢?也不是的,视业务、资金等情况而定,因为该模式日后也可以安全升级成高可用模式。

1.3   高可用模式:HACluster

一般来说,分为NN的高可用和RM的高可用。在完全分布式的基础上,增加备用NN和RM节点。NN高可用,也就是集群里面会部署两台NN(最多也只能两台),以形成主备NN节点,达到高可用的目的。RM高可用与NN高可用类似,也是在集群里部署备用RM节点。不过此种模式下集群里面依然只有一台NN/RM处于Active工作状态,另一台则处于Standby的等待状态。当Active的NN/RM出现问题无法工作时,Standby的那台则立即无缝切入,继续保障集群正常运转。这种模式是很多企业都使用的,但是依然有缺陷。什么缺陷呢?虽然集群的可用性问题解决了,但是性能瓶颈依然存在——仅有一台NN/RM,由于无法横向扩展,其很可能会超负载运行。

1.4   高可用联邦模式:HA +Federation Cluster

解决了单纯HA模式的性能瓶颈。单纯的HA模式NN和RM之间虽然配置了HA,但是依旧仅有一台NN或RM同时运行,这可能会导致了NN或RM的负载过重,从而造成整个集群的性能瓶颈。而联邦模式将整个HA集群再划分为两个以上的集群,不同的集群之间通过Federation进行连接,不同集群间可以共享数据节点,也可以不共享,可以互相访问和操作数据,也可以不。这样便做到了HA集群的横向扩展,从而移除了单纯HA模式同时仅有1台NN/RM工作所带来的性能瓶颈。Federation模式,相当于在多个集群之上又构建了一个集群层次,从数据访问的角度看,也可以简单的将其理解为一台路由器,而每一个HA集群则是单独的网络,不同网络间通过Federation路由器进行沟通。此模式是目前Hadoop生态中最高的一种模式,适用于规模较大的企业。

22   目的

本示例要求搭建Hadoop2.7.3高可用模式集群,同时配置NameNode+HA、ResourceManager+HA,并使用Zookeeper来管理Hadoop集群。

官方文档:http://hadoop.apache.org/docs/r2.7.3/

2.1   NameNodeHA

在Hadoop2.X的Federation(联邦)中,可以存在多个集群,每个集群对应一个NameService,每个NameService下管理者一个HA(HighAvailability:高可用)集群,每个HA下目前最多包含有两个NameNode主节点的Hadoop集群。一个NameService下只能有一个NameNode处于Active状态,另一个处于StandBy状态,并可以进行切换(自动和手动)。Federation中的所有DataNode均可以为所有的NameService共用。

其中,ActiveNameNode与Standby NameNode结点通过JounalNode 共享状态,通过 ZKFC 选举Active ,监控状态,自动备援。如下图所示:


1、Active NameNode:

接受client 的 RPC 请求并处理,同时写自己的Editlog 和共享存储上的 Editlog,接收DataNode 的 Block report, block location updates 和 heartbeat;

2、Standby NameNode:

同样会接到来自 DataNode 的 Block report, block locationupdates 和 heartbeat,同时会从共享存储的Editlog 上读取并执行这些 log 操作,使得自己的NameNode 中的元数据(Namespcae information + Block locationsmap)都是和 Active NameNode 中的元数据是同步的。所以说 Standby 模式的 NameNode 是一个热备(Hot Standby NameNode),一旦切换成 Active 模式,马上就可以提供 NameNode 服务。

3、JounalNode:

用于ActiveNameNode , Standby NameNode 同步数据,本身由一组 JounnalNode 结点组成,该组结点基数个,支持 Paxos 协议,保证高可用。

4、ZKFC:

监控NameNode 进程,自动备援。

2.2   ResourceManager  HA

ResourceManagerHA 的架构模式同NameNode HA 的架构模式基本一致,同样是由一对 Active与Standby 结点构成,通过 RMStateStore 存储内部数据和主要应用的数据及标记。目前支持的可替代的 RMStateStore 实现有:基于内存的 MemoryRMStateStore、基于文件系统的 FileSystemRMStateStore、以及基于 zookeeper 的 ZKRMStateStore(本示例方案)。如下图所示:


其中:ZKFC成为 ResourceManager 进程的一个服务,非独立存在。



原创粉丝点击