一、引言
(一)项目背景
随着大数据时代的来临,分布式文件系统因其极高的可靠性和性能以及可扩展性越来越受到人们的青睐。对于如今各社交网络、电子商务平台和音乐平台等娱乐平台融入人们的日常生活,而其日渐增长的注册用户以及庞大的数据量便需要依靠分布式文件系统来进行处理。作为大数据平台Hadoop平台的存储核心,HDFS逐渐成为了一个用来进行数据处理的标准,但整个集群只有一个Namenode,若这一个Namenode损坏,则整个Hadoop集群将不可以使用,此时Hadoop的高可用性显得尤为重要。在Hadoop HA中使用Standby Namenode作为Active Namenode的备用节点。在Active Namenode对于数据进行处理时,Standby Manage需要有与主Namenode相同的配置并进行同步备份。
(二)项目目的
随着数据量快速的增长,以HDFS为代表的分布式文件系统采用元数据和文件数据分离管理的模式被命名为元数据节点[1],例如HDFS中的NameNode。在只有一个Namenode的Hadoop集群中,如果这一个Namenode发生故障,则集群无法使用,只有通过重启集群才可以恢复。所以单Namenode的架构集群存在一些潜在问题[2],需要引入Hadoop HA。在同一集群中运行“主/备”两个Namenode进程就是典型的高可用集群。两个Namenode有着相同的配置,在任何时候,一个处于活动状态,一个处于待机状态,而着二者保持着相同的数据状态,可以在节点宕机或者时集群收到攻击时,将所有数据快速转移到另一个Namenode中。而最重要的就是始终保持只有一个Namenode处于活动中[3],否则两节点之间会发生冲突,导致数据丢失,在主/备切换时,由于切换不彻底,导致Slave和客户端误认为有两个活动的Namenode,使整个集群处于混乱之中。
二、Hadoop HA高可用平台的原理
(一)Hadoop HA概念
Hadoop1.x是密集型,在处理数据集方面有着重要作用,但它不是交互式数据分析的理想选择[4],并且会受到机器学习和内存集数据分析的约束,而Hadoop中的mapreduce同时处理资源调度和业务逻辑运算,耦合性较大。在Hadoop2.x中,增加了YARN,这样mapreduce可以只负责运算让YARN负责资源的调度[5]。同时它还引入了Hadoop高可用性功能,该功能为Hadoop框架引入了一个额外的NameNode(及Standby NameNode),该架构被配置为自动故障转移,如图2-1所示。
正在上传…重新上传取消
图2-1 Hadoop HA概念图
(二)HDFS高可用
Hadoop高可用分为HDFS高可用和YARN高可用。在一个HA集群之中会有两个Namenode,这两个Namenode一个处于Active的状态,另一个处于Standby的状态,外加一个Quorum Journal Manager日志管理器负责进行数据同步,处于活动之中的Namenode负责所有数据快的操作,而备份的Namenode则保持数据的同步性,这样在一个Namenode宕机之后,处于准备的Namenode可以在保证数据不丢失的情况下进行自动切换,如图2-2所示。
正在上传…重新上传取消
图2-2 HDFS HA概念图
(三)YARN高可用
Hadoop YARN是一种新的Hadoop资源管理器,可以给上层应用提供统一的资源调度和管理,它给集群在利用率、数据共享等方面带来了巨大的好处。YARN高可用大大减小了ResourceManager的资源消耗,并且让监测每一个子任务状态的程序分布式化,更加的安全。在新的YARN中,ApplicationMaster变成了一个可变更的部分,用户可以根据不同的编程模型自己写出APPMS,也因此更多类型的编程模型可以在Hadoop集群中运行,而YARN ResourceManager的状态信息可以直接写到ZooKeeper上,如图2-3所示。
正在上传…重新上传取消
图2-3 YARN HA概念图
(四)分布式协调服务ZooKeeper
ZooKeeper架构:ZooKeeper集群时一个基于主从复制的高可用集群,每一个服务器承担着Leader或者Follower的角色。一个ZooKeeper集群中同一时刻只可以有一个工作的Leader,它会发起并维护各个Follower之间所有的心跳;而一个ZooKeeper集群中可以有多个Follwer,它们都会响应Leader的心跳。Follower可以直接处理并返回客户端的请求,同时会将请求转发给Leader处理,如图2-4所示。
正在上传…重新上传取消
图2-4 ZooKeeper集群图
(五)HA集群规划
选取三台主机当做ZooKeeper集群,分别为master,slave1,slave2;按照高可用设计目标,需要有两个NameNode(一个用来工作一个作为备份)和两个ResourceManager(一个用来工作一个用来备份),3个JournalNode节点,如表2-5所示。
表2-5: HA集群规划图
IP地址 |
主机名 |
服务进程 |
192.168.149.135 |
Master |
NameNode(Active) ResourceManager(active) DataNode NodeManager JournalNode ZooKeeper |
192.168.149.136 |
Slave1 |
NameNode(Standby) ResourceManager(Standby) DataNode NodeManager JournalNode ZooKeeper |
192.168.149.137 |
Slave2 |
DataNode NodeManager JournalNode ZooKeeper |
三、安装部署
(一)前期准备
1. 虚拟机配置
3台虚拟机具有相同配置:内存2GB;处理器1一个;硬盘40GB;镜像CentOS-6.5-x86_64-bin-DVD1.iso;网络适配器NAT,如图3-1所示。
正在上传…重新上传取消
图3-1 虚拟机配置图
2. 服务安装包版本