Hadoop HA实战

Hadoop HA了解:

由于hadoop集群中所有数据信息存储在namenode上,因此namenode成为集群的核心,也是安全隐患,如果namenode因故障停止或者损坏,将导致集群的无法正常运行,或者说数据的丢失发生。因此对namenode的备份显得尤其重要,scondarynamenode机制虽然可以解决数据丢失的问题,但对于生产环境的稳定运行与连续运行要求,显然也满足不了,因此dfs、journal、zk等解决方案,成为选择,目前比较流行的是journal架构解决方案,如下图:

 
 

Journal解决方案原理:

1、  将edits文件利用journal实现数据一致性,即将文件存储在共享目录中,实现多台namenode数据共享,解决数据一致性的问题。Journal本身是一组有容错机制的存储方案,每次存储数据都可以存储在多台节点上,必需为奇数。

2、  统一命令空间,保障集群内只有一台主namenode提供服务,即状态为:active,同时准备一台namenoe作为等待状态,即状态为:standby状态,如果主namenode出现问题,可以实现随时将另一台standby的namenode切换为activenamenode,继续为集群提供服务

3、  两台namenode同时接受datanode的信息,一台出现问题,保障不影响集群的正常运行与数据完整

4、  隔离性

 

Hadoop HA配置:

1、集群规划:

bigdata01

bigdata02

nn1

nn2

2、在nn1节点上,编译core.site.xml和hdfs-site.xml,配置如下:

Core-site.xml:


图1

hdfs-site.xml,如图2图3:


图2


图3

 

3、接下来在$HADOOP_HOME/data目录里面创建jn目录,注意两个nn上都要创建,用来保存edits日志,如图4:


图4

3、将nn1的配置文件core-site.xml和hdfs-site.xml文件复制到nn2节点对应目录

4、在各个JournalNode节点上,输入以下命令启动journalnode服务:sbin/hadoop-daemon.sh start journalnode,如图5:

图5

5、在nn1上,对其进行格式化,并启动,如图6:


格式化语句:bin/hdfsnamenode -format

启动语句:sbin/hadoop-daemon.shstart namenode

5、  在nn2上,同步nn1的元数据信息:bin/hdfsnamenode –bootstrapStandby

6、  在nn2上启动namenoe: sbin/hadoop-daemon.sh start namenode,如图8:


图8

7、  从WEB 页面查看两台namenode的状态,如图9图10:


图9


图10

8、  将nn1状态改为:active,如图11:

图11

9、  从nn1节点上,启动所有datanode:sbin/hadoop-daemons.sh start datanode,如图12:


图12

10、             从nn1上使命令:hdfs dfs –mkdir /bigdata创建文件夹,在nn1(active)上可以查看到添加的目录,如下图13:


此时从nn2上可以观察到,datanode的变化与nn1是一致,但目录是看不到的,因为集群中只能有一个nn向外提供服务,如图14:


图14

使用命令:bin/hdfs  haadmin-failover --forcefence --forceactive  nn1  nn2,将nn2 切换为:active,就可以看到从nn1上建立的目录,如图15:


图15

注:在由nn1手工切换到nn2后,nn1需要重新打开namenode,重新打开后状态为:standby状态。

 

配置HA自动故障转移:

1、在core-site.xml中添加代码:

<property>

   <name>ha.zookeeper.quorum</name>

<value>bigdata01.ibeifeng.com:2181,bigdata02.ibeifeng.com:2181,bigdata03.ibeifeng.com:2181</value>

</property>

2、在hdfs-site.xml中添加代码:

<property>

   <name>dfs.ha.automatic-failover.enabled</name>

   <value>true</value>

      </property>

3、将修改 的文件复制到另外两台节点上

4、关闭所有HDFS 服务 sbin/stop-dfs.sh

5、启动各个节点的zkServer服务:bin/zkServer.sh start,查看是否进程,如图16:


图16

6、格式化zk集群,在bigdata01上执行bin/hdfs zkfc -formatZK,应该会在Zookeeper看到输出结果。

7、启动journalnode集群,在bigdata01、bigdata02、bigdata03上分别执行sbin/hadoop-daemon.sh start journalnode,启动jn服务,如图17:


图17

8、格式化namenode、启动namenode,注:先rm –rf data/dfs/data文件,要不datanode会启动报错

  在bigdata01上执行bin/hdfs namenode -format
  在bigdata01上执行sbin/hadoop-daemon.sh start namenode
  在bigdata02上执行bin/hdfs namenode -bootstrapStandby
  在bigdata02上执行sbin/hadoop-daemon.sh start namenode

9、启动datanode,在bigdata01上执行sbin/hadoop-daemons.sh start datanode

10、动ZKFC(哪个节点上有namenode,在哪个节点启动),在bigdata01、bigdata02上 启动zkfc,执行命令sbin/hadoop-daemon.sh start zkfc

11、启动resourcemanager  在bigdata01上执行 bin/start-yarn.sh start resourcemanager

 12、启动nodemanager在bigdata01上执行 sbin/start-yarn.sh start nodemanager

13、打开WEB页面观察bigdata01(active)图18和bigdata02(standby图19)状态,:


图18


图19

14、测试是否可以自动切换,在bigdata01执行jps,查看namenode进程号,然后kill 进程号,然后再观察bigdata02的状态是否切换到active,如果切换成功,则说明说明Hadoop HA配置成功,如下图20:


图20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值