专栏首页CSDN技术头条ZooKeeper故障节点替换过程详解

ZooKeeper故障节点替换过程详解

一、环境描述

我的生产环境ZooKeeper 版本3.4.6,5个节点组成的ZooKeeper集群。ZooKeeper集群为一套8个节点的Hadoop集群和HBase 集群提供高可用保障。

二、问题描述

因为某些特殊原因,需要替换掉myid为5(IP:10.10.10.30)的ZooKeeper节点,故障节点IP:10.10.10.30替换为10.10.10.37。10.10.10.37节点是现有环境的namenode节点,Hadoop用户、相关目录,授权、hosts文件已经满足ZooKeeper的部署要求。

三、ZooKeeper相关知识点

在ZooKeeper的设计中,集群中的任何一个节点的zoo.cfg文件内容是一样的,因此最好使用SVN把这个文件管理起来,保证每个机器都能使用一份相同的配置。

在配置文件中(zoo.cfg),可以按照这样的格式,每行写一个机器配置:server.id=host:port:port. 关于这个id,我们称之为Server ID,标识host机器在集群中的机器序号,在每个ZK机器上,我们需要在数据目录(数据目录就是dataDir参数指定的那个目录)下创建一个myid文件,myid中就是这个Server ID数字。

ZooKeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。ZooKeeper 节点数一般为奇数个,比如我的环境部署了5个节点的ZooKeeper服务,如果有两个节点的ZooKeeper异常是不会影响ZooKeeper集群对外提供服务的。

四、部署新节点ZooKeeper

1、配置参数如下(zoo.cfg)

2、关闭10.10.10.37主机

3、备份原有zoo.cfg文件,cp zoo.cfg zoo.cfg0420

4、本案例在现有10.10.10.37节点部署myid为5的ZooKeeper服务,从其它可用节点scp 软件包到10.10.10.37节点,修改配置文件主机IP,使用新主机的IP替换掉原有主机的IP

5、使用新的zoo.cfg文件,替换掉其他4个节点的zoo.cfg文件,使用scp远程传输直接覆盖

6、10.10.10.37节点创建myid 命令:echo “5” > /data/ZooKeeper/myid

五、修改Hadoop配置文件,然后替换所有Hadoop节点配置文件

1、修改hdfs-site.xml

2、修改yarn-site.xml

六、修改HBase配置文件(HBase-site.xml),然后替换所有HBase节点配置

七、重启相关服务

部署ZooKeeper节点比较简单,当初部署集群的时候怎么部署的,现在就重新部署一个节点就可以,注意修改zoo.cfg配置文件。其它依赖于ZooKeeper集群的相关服务比如Hadoop、HBase、Hive、flume等都需要修改配置文件,小技巧,记住修改的是xxx-site.xml文件关键字是site.xml文件。

接下来需要重启服务,启动顺序为ZooKeeper--->Hadoop--->HBase,关闭顺序为HBase--->Hadoop--->ZooKeepe。

具体命令如下:

1、重启zookeepe命令:./zkServer.sh restart

2、关闭HBase集群命令:./stop-HBase.sh

3、关闭Hadoop集群命令:

./stop-yarn.sh && ./stop-dfs.sh

./yarn-daemon.sh stop resourcemanager

4、启动Hadoop集群命令:

./start-yarn.sh && ./start-dfs.sh

./yarn-daemon.sh start resourcemanager

5、启动HBase集群命令:./start-HBase.sh

6、通过命令验证配置是否同步

可以看到所有相关系统的配置都已经同步到了新增的ZooKeeper-server中。

7、使用网页方式验证Hadoop集群和HBase状态,不同环境端口可能不一样

10.10.10.37:8088

10.10.10.37:50070

10.10.10.37:60010

八、遇到问题

1、直接启动新节点ZooKeeper报错信息

在部署好的ZooKeeper服务器直接启动会报上面的错误,更换了IP的主机无法直接加入ZooKeeper集群,需要先重启原有4台ZooKeeper集群才可以。

小结

  • 目前ZooKeeper不支持动态添加节点,添加节点需要重启所有ZooKeeper
  • ZooKeeper 添加、删除主要修改zoo.cfg文件,zoo.cfg文件需要备份保存好
  • Namenode 的主备高可用依赖ZooKeeper,所以需要修改hdfs-site.xml
  • Resouremanager的主备高可用依赖ZooKeeper,需要修改yarn-site.xml
  • HBase的主备高可用依赖ZooKeeper,需要修改HBase-site.xml
  • 如果有Hive、Flume也需要修改相关的配置
  • 因为生产环境刚上线,所以直接重启了集群服务,如果实时性要求比较高,没有维护窗口,可以单独重启相关服务,尽可能减少影响。

本文分享自微信公众号 - CSDN技术头条(CSDN_Tech),作者:康壮

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于HBase的大数据存储的应用场景分析

    本文结合两个实战场景就基于 HBase 的大数据存储做了简单的分析,并对 HBase 的原理做了简单的阐述。

    CSDN技术头条
  • HBase在滴滴出行的应用场景和最佳实践

    背景 对接业务类型 HBase是建立在Hadoop生态之上的Database,源生对离线任务支持友好,又因为LSM树是一个优秀的高吞吐数据库结构,所以同时也对接...

    CSDN技术头条
  • Apache Spark作为编译器:深入介绍新的Tungsten执行引擎

    《Spark 2.0技术预览:更容易、更快速、更智能》文中简单地介绍了Spark 2.0相关技术, 本文将深入介绍新的Tungsten执行引擎。Apache S...

    CSDN技术头条
  • 剑指Offer的学习笔记(C#篇)-- 旋转数组的最小数字

    1 . 参考二分查找法,我们用两个指针分别指向数组的第一个元素和最后一个元素。

    WeiMLing
  • ZooKeeper 数据模型

    ZNode(数据节点)是 ZooKeeper 中数据的最小单元,每个 ZNode 上都可以保存数据,同时还可以有若干子节点(这就像树结构一样,如下图所示)。可以...

    happyJared
  • 1.3 抽象数据类型的表示

    C语言入门到精通
  • Python+SQLite开发无界面版通信录管理系统

    本文重点在于演示Python对SQLite数据库的操作,以及命令行式菜单的工作原理和实现。 首先使用SQLite Database Browser创建SQLit...

    Python小屋屋主
  • Python 基础语法五-控制流

    在开始进行控制流之前,先要学习一下如何将程序保存到文件中。在前面的学习过程中所有的代码都是在命令行环境中运行的,输入一行代码 python 解释器输出一个结果。...

    keinYe
  • 牛客网-旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,...

    TrueDei
  • 剑指offer第9题:旋转数组的最小数字

    题目首先给我们一个排序的数组,然后将其分为两半,把后面的数组分为两半之后,对这两半进行旋转。然后让我们找到旋转数组的最小值,即未旋转之前的数组的第一个值。

    鹏-程-万-里

扫码关注云+社区

领取腾讯云代金券