【伊利丹】Hadoop2.0 NN HA实验记录

1.关于Hadoop2.2.0中HA的介绍

NameNode 简称: NN

DateNode 简称: DN

JournalNode  简称: JN

Zookeeper  简称: ZK

从上面的图里,我们可以知道HA的大致架构:

01.利用共享存储来在两个NN之间同步元数据信息。

在NN中有两个重要的文件:一个是fsimage,一个是edits,其中fsimage指的是元数据镜像文件,存在磁盘中用来保持文件系统的目录树,然而edits指的是元数据操作日志,针对目录树的修改操作,被写入共享存储系统中,例如DFS,JournalNode。同时元数据镜像文件在内存中保存一份最新的,然后Standby
NameNode定期的合并fsimage和edits。

02.DataNode同时向两个NN汇报块信息。

这是让Standby NN 保持集群最新状态的必要步骤。

03.用于监视和控制NN进程采用了FailoverControllerActive进程。

2.实验环境搭建和准备

01.前提是要有一个能手动切换主备NN的集群,如果没有,可以到http://blog.csdn.net/u010967382/article/details/20380387

中去学习如何搭建一个集群。

02.本次实验环境是Ubuntu12.04.4版本的虚拟机4台 :

分别取名为SY-0217 SY-0355 SY-0225 SY-0226 的一个Hadoop集群;

其中 SY-0217 SY-0355 为主备NameNode;

并且 SY-0355 SY-0225 SY-0226 为JouranlNode 。

03.下载Zookeeper并安装

下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.5/
并把它放到虚拟机的Desktop上。

这下在zookeeper-3.4.5是用于的测试。 最好采用zookeeper-3.4.6因为它做了大量的 bug 修复和功能增强

下载完成后用 解压命令解压: sudo tar -xzvf  Dsektop/zookeeper-3.4.5

同时把SY-0217 SY-0355 SY-0225 都安装好zookeeper-3.4.5 (最好是奇数个
原因是zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1。总之zookeeper的容忍度决定zookeeper的个数)

3.Zookeeper的配置文件的修改

01.进入zookeeper中的conf目录:

拷贝zoo_sample.cfg为并重新命名为zoo.cfg

编辑zoo.cfg文件把下面的添加进去

dataDir=/home/kkzhangtao/zookeeper-3.4.5/zookeeper
dataLogDir=/home/kkzhangtao/zookeeper-3.4.5/zookeeperlog
server.1=SY-0217:2888:3888
server.2=SY-0355:2888:3888
server.3=SY-0225:2888:3888

这文件里面的配置 解释如下:

dataDir指的是存储内存中数据库快照的位置;

dataLogDir指的是将管理机器的事务日志写到“dataLogDir”所指定的目录;

server.1=SY-0217:2888:3888指的是不同的Zookeeper服务器的自身标识,用户可以从中读取相关信息;其中那个的SY-0217指的是组成Zookeeper服务的机器主机名,2888是为用来进行leader选举的端口,3888是为组成Zookeeper服务的机器之间通信的端口。

02.创建zookeeper和zookeeperlog两个文件夹

在zookeeper的目录中,创建上述的两个文件夹。进入zookeeper文件夹,创建文件myid,里面填写1。这里写入的1,是在zoo.cfg文本中的server.1中的1。(这里的数字是为了区别不同的zookerper)当我们把所有的文件配置完成了,分别拷贝到各个节点上去,但是要把zookpeeper文件夹中的myid改为zoo.cfg配置文件中对应的数字。zookeeperlog文件夹,是为了指定zookeeper产生日志指定相应的路径。

03.修改环境变量

在本机的环境变量中添加  进入/etc/profile目录中去 用vi命令 把如下的添加进去

export ZOOKEEPER_HOME=/home/kkzhangtao/zookeeper-3.4.5
export PATH=$PATH:$ZOOKEEPER_HOME/bin

然后在终端 source /etc/profile (其他安装了zookeeper的机器都要进入如上的配置)

4.Hadoop的配置文件的修改  (这两个配置文件 请亲 仔细对照的修改和添加)

01.文件coer-site.xml

	<property>
		<name>fs.defaultFS</name>
  		<value>hdfs://hadoop-cluster</value>
		<description>这里的值指的是默认的HDFS路径。这里只有一个HDFS集群,在这里指定!该值来自于hdfs-site.xml中的配置</description>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/kkzhangtao/hadoop-2.2.0/yarn/yarn_data/tmp</value>
		<description>这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。这里的yarn_data/tmp目录与文件都是自己创建的。</description>
	</property>
	<property>
		<name>ha.zookeeper.quorum</name>
		<value>SY-0217:2181,SY-0355:2181,SY-0225:2181</value>
		<description>这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数</description>

	</property>

02.文件hdfs-site.xml

<property>
		<name>dfs.nameservices</name>
 		<value>hadoop-cluster</value>
		<description>指定命名空间名称,可随意起名</description>
	</property>
	<property>
		<name>dfs.ha.namenodes.hadoop-cluster</name>
		<value>nn1,nn2</value>
		<description>在命名空间下指定NameNode逻辑名</description>
	</property>

	<property>
		<name>dfs.namenode.rpc-address.hadoop-cluster.nn1</name>
		<value>SY-0217:8020</value>
		<description>为“命名空间名.NameNode逻辑名”配置rpc地址</description>
	</property>

	<property>
		<name>dfs.namenode.rpc-address.hadoop-cluster.nn2</name>
  		<value>SY-0355:8020</value>
	        <description>为“命名空间名.NameNode逻辑名”配置rpc地址</description>
	</property>
	<property>
		<name>dfs.namenode.http-address.hadoop-cluster.nn1</name>
		<value>SY-0217:50070</value>
  		<description>为“命名空间名.NameNode逻辑名”配置http地址</description>
	</property>

	<property>
  		<name>dfs.namenode.http-address.hadoop-cluster.nn2</name>
  		<value>SY-0355:50070</value>
  		<description>为“命名空间名.NameNode逻辑名”配置http地址</description>
	</property>

	<property>
		<name>dfs.namenode.servicerpc-address.hadoop-cluster.n1</name>
		<value>SY-0217:53310</value>
	</property>
	<property>
		<name>dfs.namenode.servicerpc-address.hadoop-cluster.n2</name>
		<value>SY-0355:53310</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:///home/kkzhangtao/hadoop-2.2.0/hdfs/name</value>
		<description>配置NameNode元数据存放的路径;</description>
	</property>

	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:///home/kkzhangtao/hadoop-2.2.0/hdfs/data</value>
		<description>配置datanode元数据存放的路径;</description>
	</property>

	<property>
  		<name>dfs.namenode.shared.edits.dir</name>
 		 <value>qjournal://SY-0355:8485;SY-0225:8485;SY-0226:8485/journalnode</value>
		<description>
 		配置JournalNode,包含三部分:
		1.qjournal是协议,无需修改;
		2.然后就是三台部署JournalNode的主机host/ip:端口,三台机器之间用分号分隔;
		3.最后的hadoop-journal是journalnode的命名空间,可以随意取名。
  		</description>
	 </property>
	 <property>
  		<name>dfs.journalnode.edits.dir</name>
  		<value>/home/kkzhangtao/hadoop-2.2.0/hdfs/journal/</value>
  		<description>journalnode的本地数据存放目录,指定一个路径就够。</description>
	 </property>
	<property>
		<name>dfs.ha.automatic-failover.enabled.hadoop-cluster</name>
  		<value>true</value>
  		<description> 是否自动切换。</description>

	</property>

	<property>
		<name>dfs.client.failover.proxy.provider.hadoop-cluster</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
		<description> 指定hadoop-cluster出故障时,哪个实现类负责执行故障切换</description>
	</property>

	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>sshfence</value>
		<description> 一旦需要NameNode切换,使用ssh方式进行操作</description>
	</property>
	<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/home/kkzhangtao/.ssh/id_rsa</value>
		<description> 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置</description>
	</property>

	<property>
		<name>dfs.ha.fencing.ssh.connect-timeout</name>
		<value>1000<</value>
		<description>ssh连接超时的最大时间</description>
	</property>

	<property>
		<name>dfs.namenode.handler.count</name>
		<value>8</value>
		<description>为处理datanode节点的进程调用开户的服务线程数量,可以修改</description>

	</property>

03.文件mapred-site.xml 和yarn-site.xml  不用修改 (保持和原来一样)

04.复制到其他各个节点去

采用如下命令:在hadoop_home目录下

scp etc/hadoop/*  [email protected]:/home/kkzhangtao/hadoop-2.2.0/etc/hadoop

scp
etc/hadoop/*  [email protected]:/home/kkzhangtao/hadoop-2.2.0/etc/hadoop

scp
etc/hadoop/*  [email protected]:/home/kkzhangtao/hadoop-2.2.0/etc/hadoop

5.Hadoop主备节点(自动切换)的测试

01.zookeeper的初始化

进入hadoop_home目录下 采用 :bin/hdfs zkfc -formatZK

02.启动zkfc

进入hadoop_home目录下
采用 :sbin/hadoop-daemon.sh start zkfc

03.启动namnode

进入hadoop_home目录下 采用 :sbin/hadoop-daemon.sh
start namenode

都启动好了通过jps
可以看到各个几点的进程 如图

在两个namenode都启动之后,会发现,其中一个namenode会自动切换成active状态,不需要手工切换。

通过访问页面可以得到结果:(192.168.0.162:50070)(192.168.0.163:50070)

04.在SY-0217上面
Kill Namenode(10051) 进程 让SY-0355自动切换为Active

 
  

6.结语

上面就是主备NameNode自动切换的配置和测试结果 ,都亲自实现多次并且成功自动切换。

谢谢

【伊利丹】Hadoop2.0 NN HA实验记录

时间: 2024-09-30 18:15:38

【伊利丹】Hadoop2.0 NN HA实验记录的相关文章

【甘道夫】Hadoop2.2.0 NN HA详细配置+Client透明性试验【完整版】

引言: 前面转载过一篇团队兄弟[伊利丹]写的NN HA实验记录,我也基于他的环境实验了NN HA对于Client的透明性. 本篇文章记录的是亲自配置NN HA的详细全过程,以及全面测试HA对客户端访问透明性的全过程,希望对大家有帮助. 实验环境: Hadoop2.2.0的4节点集群,ZK节点3个(ZK节点数最好为奇数个),hosts文件和各节点角色分配如下: hosts: 192.168.66.91 master 192.168.66.92 slave1 192.168.66.93 slave2

【甘道夫】NN HA 对于 Client 透明的实验

之前转载过一篇[伊利丹]写的NN HA实验记录,该博客描述了主备NN透明切换的过程,也就是说,当主NN挂掉后,自动将备NN切换为主NN了,Hadoop集群正常运行. 今天我继续做了一个实验,目的是实现NN的切换不会对Client端程序造成影响,即NN切换对Client透明. 首先,很重要的一点: 要保证core-site.xml中的 <property> <name>fs.defaultFS</name> <value>hdfs://hadoop-clust

Cloudera Hadoop 5&amp; Hadoop高阶管理及调优课程(CDH5,Hadoop2.0,HA,安全,管理,调优)

1.课程环境 本课程涉及的技术产品及相关版本: 技术 版本 Linux CentOS 6.5 Java 1.7 Hadoop2.0 2.6.0 Hadoop1.0 1.2.1 Zookeeper 3.4.6 CDH Hadoop 5.3.0 Vmware 10 Hive 0.13.1 HBase 0.98.6 Impala 2.1.0 Oozie 4.0.0 Hue 3.7.0 2.内容简介 本教程针对有一定Hadoop基础的学员,深入讲解如下方面的内容: 1.Hadoop2.0高阶运维,包括H

Hadoop2.0 QJM方式的HA的配置

本文在<Hadoop2.0的安装和基本配置>(见 http://www.linuxidc.com/Linux/2014-05/101173.htm )一文的基础上继续介绍hadoop2.0 QJM(Quorum Journal Manager)方式的HA的配置(hadoop2.0架构,具体版本是hadoop2.2.0).本文只介绍HA的主备的手工切换,自动切换在下一篇文章继续介绍(见 http://www.linuxidc.com/Linux/2014-05/101176.htm). ----

CentOS7+Hadoop2.7.2(HA高可用+Federation联邦)+Hive1.2.1+Spark2.1.0 完全分布式集群安装

1       VM网络配置... 3 2       CentOS配置... 5 2.1             下载地址... 5 2.2             激活网卡... 5 2.3             SecureCRT. 5 2.4             修改主机名... 6 2.5             yum代理上网... 7 2.6             安装ifconfig. 8 2.7             wget安装与代理... 8 2.8       

Ubuntu 14.10 下ZooKeeper+Hadoop2.6.0+HBase1.0.0 的HA机群高可用配置

1 硬件环境 Ubuntu 14.10 64位 2 软件环境 openjdk-7-jdk hadoop 2.6.0 zookeeper-3.4.6 hbase-1.0.0 3 机群规划 3.1 zookeeper配置-机器结点 192.168.1.100 1421-0000192.168.1.106 1421-0003192.168.1.107 1421-0004192.168.1.108 1421-0005192.168.1.109 1421-0006 3.2 hadoop配置-机器结点 19

_00018 Hadoop-2.2.0 + Hbase-0.96.2 + Hive-0.13.1 分布式环境整合,Hadoop-2.X使用HA方式

博文作者:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # Hadoo

搭建hadoop2.6.0 HDFS HA及YARN HA

最终结果:[[email protected] ~]$ jps12723 ResourceManager12995 Jps12513 NameNode12605 DFSZKFailoverController [[email protected] ~]$ jps12137 ResourceManager12233 Jps12009 DFSZKFailoverController11930 NameNode [[email protected] ~]$ jps12196 DataNode12322

大话Hadoop1.0、Hadoop2.0与Yarn平台

2016年12月14日21:37:29 Author:张明阳 博文链接:http://blog.csdn.net/a2011480169/article/details/53647012 近来这几天一直在忙于Hbase的实验,也没有太静下心来沉淀自己,今天打算写一篇关于Hadoop1.0.Hadoop2.0与Yarn的博文,从整体上把握三者之间的联系,博客内容如有问题,欢迎留言指正!OK,进入本文正题-- 在开始接触Hadoop的时候,也许大家对于Hadoop是下面的一个概念:Hadoop由两部