Hadoop2分布式及NN和RM实现HA的实验

目录结构

  • 引言
  • 实验环境
  • 实验过程
  • 演示demo

[一]、 引言

在Hadoop2.x初期的时候写过一篇 hadoop 2.2.0 集群模式安装配置和测试,记录了分布式搭建的最基本的搭建步骤和运行演示,那篇文章中没有对HA的配置做实验,本文会详细介绍 Hadoop2的分布式、NameNode配置HA以及ResourceManage配置HA的实验过程。

[二]、 实验环境

1、各节点及角色分配

本文以5个集群节点为基础做实验环境,具体的角色分配如下:

hostname NameNode DataNode JournalNode Zookeeper ZKFC ResourceManager
nn1.hadoop √(Active)
nn2.hadoop √(Standby)
dn1.hadoop
dn2.hadoop
dn3.hadoop

2、系统及软件版本

  • CentOS  6.3 64位
  • Java 1.7.0_75
  • Hadoop 2.6.0
  • zookeeper 3.4.6

3、安装JDK 所有节点需要操作

Oracle官方下载 64为 jdk :jdk-7u3-linux-x64.rpm  执行安装命令:

rpm -ivh jdk-7u3-linux-x64.rpm

默认的安装路径:/usr/java/jdk1.7.0_75

4、配置hosts所有节点需要操作

5、确认SSHD已经安装并启动所有节点需要操作

6、配置时钟同步

第一种方法 :(所有节点都要操作)都从公共NTP服务器同步,执行如下:

第二种方法:选一个节点搭建一个NTP服务,其他节点从该NTP服务器同步

7、创建专有用户所有节点需要操作

比如创建 hadoop用户,密码也初始化为hadoop, 下面有关hadoop部署配置都是以这个用户操作的

为hadoop 用户修改环境变量 vi ~/.bash_profile :

8、SSH免密码登陆

配置所有的NameNode节点 可以免密码登录到其余所有节点,只需要单向免密登录即可,当然你要配置为双向也无妨。有关SSH无密码登录的详细介绍可以参见:Linux(Centos)配置OpenSSH无密码登陆

[三]、 实验过程

1、hadoop2的编译

在实验环境中任节点机器上 下载hadoop 2.6.0的源码,安装配置好Java 和Maven 然后执行 mvn package -Pdist,native -DskipTests -Dtar  进行源码编译,具体可参考:

2、zookeeper安装配置

下载最新稳定版本(3.4.6)部署在ZK的各个节点,修改环境变量vi ~/.bash_profile :

修改配置文件:

修改成如下:

配置文件中的相关目录路径需要先创建好且hadoop用户具有读写权限,不同zk节点配置不同的myid:

  • 在zk1.hadoop 节点中 执行:echo 1 > /bigdata/hadoop/zookeeper/zkdata/myid
  • 在zk2.hadoop 节点中 执行:echo 2 > /bigdata/hadoop/zookeeper/zkdata/myid
  • 在zk3.hadoop 节点中 执行:echo 3 > /bigdata/hadoop/zookeeper/zkdata/myid

myid中的数值需要和 zoo.cfg中的配置一致。

3、hadoop 安装配置所有节点需要修改

3.1、配置环境变量vi ~/.bash_profile :

3.2、修改 $HADOOP_HOME/etc/hadoop/core-site.xml

3.3、修改 $HADOOP_HOME/etc/hadoop/hfds-site.xml

3.4、修改 $HADOOP_HOME/etc/hadoop/yarn-site.xml

PS: yarn-site.xml中的HA相关配置格式和hdfs-site.xml中的HA配置类似。

3.5、修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml

3.6、修改 $HADOOP_HOME/etc/hadoop/salves

4、启动步骤和详细过程

4.1、启动ZK
在所有的ZK节点执行命令: zkServer.sh start

可借助命令 zkServer.sh status  查看各个ZK的从属关系

4.2、格式化ZK仅第一次需要做
任意ZK节点上执行:hdfs zkfc -formatZK

4.3、启动ZKFC

ZKFC(zookeeperFailoverController)是用来监控NN状态,协助实现主备NN切换的,所以仅仅在主备NN节点上启动就行。

4.4、启动JournalNode 用于主备NN之间同步元数据信息的共享存储系统在每个JN节点上启动

4.5、格式化并启动主NN
格式化:hdfs namenode -format
注意:只有第一次启动系统时需格式化,请勿重复格式化!

在主NN节点执行命令启动NN: hadoop-daemon.sh start namenode

可以对比查看启动前后NN节点的进程:

4.6、在备NN上同步主NN的元数据信息
hdfs namenode -bootstrapStandby

4.7、启动备NN

在备NN上执行命令:hadoop-daemon.sh start namenode

4.8、设置和确认主NN

本文配置的是自动切换,ZK已经自动选择一个节点作为主NN了,所以这一步可以省略,查看节点状态:

如果是配置手动切换NN的,这一步是不可缺少的,因为系统还不知道谁是主NN,两个节点的NN都是Standby状态。手动激活主NN的命令:hdfs haadmin -transitionToActive nn1

4.9、在主NN上启动Datanode

启动所有datanode命令:hadoop-daemons.sh start datanode

注意:hadoop-daemons.sh 和 hadoop-daemon.sh 命令的差异

4.10、启动YARN

方法一:一次性启动ResourceManager和NodeManager命令:start-yarn.sh

方法二:分别启动ResourceManager和NodeManager:

  • yarn-daemon.sh start resourcemanager
  • yarn-daemon.sh start nodemanager(如果有多个datanode,需使用yarn-daemons.sh)

ResourceManager 也配置了HA,根据命令查看节点状态:

yarn rmadmin –getServiceState serviceid

4.11 启动MR JobHistory Server

在dn1.hadoop上运行MRJS :mr-jobhistory-daemon.sh start historyserver

4.12、验证NameNode 和ResourceManager 的HA是否生效

把当前主节点中的相关进程kill掉 查看各节点状态切换情况。

4.13、验证NN HA的透明性
注意验证 hdfs dfs -ls /  和  hdfs dfs -ls hdfs://mycluster/ 的访问效果是一致的:

[五]、 运行wrodcount demo

这个demo的演示可参考:hadoop 2.2.0 集群模式安装配置和测试 中的 wordcount演示步骤,这里不再重复描述了。
参考引用:

—————–  EOF @Michael Sun —————–

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/bigdata/hadoop/hadoop2-cluster-ha-setup/

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">