第一节:HADOOP HA概述
1.1 背景
在Hadoop 2.0.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个群集都有一个NameNode,如果该机器或进程不可用,整个群集将不可用,直到NameNode重新启动或在单独的计算机上启动为止。这在两个主要方面影响了HDFS集群的总体可用性:
-
在计划外事件(例如机器崩溃)的情况下,直到操作员重新启动NameNode后,群集才可用。
-
计划的维护事件(如NameNode计算机上的软件或硬件升级)将导致群集停机时间窗口。
HDFS高可用性功能通过提供在具有热备用的主动/被动配置中的同一群集中运行两个(以及3.0.0多于两个)冗余NameNode的选项来解决上述问题。这允许在计算机崩溃的情况下快速故障转移到新的NameNode,或者为计划维护目的而进行正常的管理员启动的故障转移。
1.2 HA(High Available)概念
-
hadoop-HA集群运作机制介绍
所谓HA,即高可用(7*24小时不中断服务)(secondarynamenode只是保证了“可靠性”)实现高可用最关键的是消除单点故障,hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA。
-
HDFS的HA机制详解
通过双namenode消除单点故障,双namenode协调工作的要点:
-
元数据管理方式需要改变
-
需要一个状态管理功能模块
-
第二节 HA集群配置
2.1 基础配置
-
创建7台机器,设置静态ip分别如下:
机器名 ip CentOs6.4_min_java_hadoop_ha1 192.168.18.171 CentOs6.4_min_java_hadoop_ha2 192.168.18.172 CentOs6.4_min_java_hadoop_ha3 192.168.18.173 CentOs6.4_min_java_hadoop_ha4 192.168.18.174 CentOs6.4_min_java_hadoop_ha5 192.168.18.175 CentOs6.4_min_java_hadoop_ha6 192.168.18.176 CentOs6.4_min_java_hadoop_ha7 192.168.18.177 -
设置每台机器的hostname
vi /etc/sysconfig/network #编辑network文件,修改内容如下
NETWORKING=yes
HOSTNAME=ha1
#分别在7台机器上执行上述命令,使得各台机器的hostname对应关系如下:
| 机器名 | hostname |
| ----------------------------- | -------- |
| CentOs6.4_min_java_hadoop_ha1 | ha1 |
| CentOs6.4_min_java_hadoop_ha2 | ha2 |
| CentOs6.4_min_java_hadoop_ha3 | ha3 |
| CentOs6.4_min_java_hadoop_ha4 | ha4 |
| CentOs6.4_min_java_hadoop_ha5 | ha5 |
| CentOs6.4_min_java_hadoop_ha6 | ha6 |
| CentOs6.4_min_java_hadoop_ha7 | ha7 |
-
修改各个机器的主机名和ip的映射(修改每台机器的hosts文件)
vi /etc/hosts #为hosts文件添加如下内容
192.168.18.171 ha1
192.168.18.172 ha2
192.168.18.173 ha3
192.168.18.174 ha4
192.168.18.175 ha5
192.168.18.176 ha6
192.168.18.177 ha7
-
为每台机器创建一个名为hadoop的用户
useradd hadoop #添加hadoop用户
passwd hadoop #给hadoop用户 设置密码
-
为每台机器的hadoop用户配置sudo权限
vi /etc/sudoers #使用root用户编辑 添加如下内容:
hadoopALL=(ALL) ALL
-
关闭每台机器的防火墙
#查看防火墙状态
serviceitables status
#关闭防火墙
serviceiptables stop
#查看防火墙开机启动状态
chkconfigiptables --list
#关闭防火墙开机启动
chkconfigiptables off
-
每台机器安装JDK
#创建文件夹
mkdir /home/hadoop/develop_env
#解压
tar-zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/develop_env
vim/etc/profile #将java添加到环境变量中在文件最后添加
exportJAVA_HOME=/home/hadoop/develop_env/jdk1.7.0_65
exportPATH=PATH:JAVA_HOME/bin
#刷新配置
source/etc/profile
2.2 hadoop配置
-
集群规划
主机名 安装的软件 运行的进程 ha1 hadoop NameNode、DFSZKFailoverController(zkfc) ha2 hadoop