首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >大数据应用与服务之搭建Zookeeper分布式集群详细教程

大数据应用与服务之搭建Zookeeper分布式集群详细教程

作者头像
XPcode7
发布2025-10-23 14:56:05
发布2025-10-23 14:56:05
1300
举报

大数据应用与服务之搭建Zookeeper分布式集群详细教程

ZooKeeper 是一个由 Apache 开源的 分布式协调服务,专为分布式系统设计,用于解决分布式环境中的一致性问题、配置管理、服务发现、分布式锁、选主等常见需求。其核心设计目标是提供高可用、强一致性的分布式数据管理服务

搭建Zookeeper分布式集群安装过程

1.1Linux虚拟机克隆

1.克隆 克隆hadoop01节点,hadoop01——>管理——>克隆

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.登录 用户名:root 密码:123456

在这里插入图片描述
在这里插入图片描述

3.配置静态IP 同学们需要按照自己电脑的实际IP地址进行配置。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重启网络服务

在这里插入图片描述
在这里插入图片描述

测试运行

在这里插入图片描述
在这里插入图片描述

4.Xshell连接 静态IP地址配置成功之后,可以通过xshell连接克隆之后的虚拟机。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.修改主机名 1.修改主机名

在这里插入图片描述
在这里插入图片描述

2.配置主机名映射

在这里插入图片描述
在这里插入图片描述

6.关闭防火墙 查看防火墙状态

在这里插入图片描述
在这里插入图片描述

关闭防火墙

在这里插入图片描述
在这里插入图片描述
1.2Hadoop集群安装前准备

1.配置Hosts文件 hadoop01、hadoop02、hadoop03节点配置hosts文件(配置一样)

在这里插入图片描述
在这里插入图片描述

测试hadoop01节点访问hadoop03节点

在这里插入图片描述
在这里插入图片描述

2.时钟同步 Hadoop 集群对节点的时间同步要求比较高,要求各个节点的系统时间不能相差太多,否则会造成很多问题,比如,最常见的连接超时问题。所以需要集群节点的系统时间与互联网的时间保持同步,但是在实际生产环境中,集群中大部分节点是不能连接外网的,这时候可以在内网搭建一个自己的时钟服务器(比如NTP服务器),然后让Hadoop集群的各个节点与这个时钟服务器的时间保持同步。 可以选择hadoop1节点作为时钟服务器。 1.查看时间类型 在hadoop01节点上输入date命令,可以查看到当前系统时间如下所示。

在这里插入图片描述
在这里插入图片描述

从结果可以看出系统时间为HKT(即香港时间),可以把时间改为CST(CST表示中部标准时间,即上海时间)。

2.修改时间类型 使用shanghai时间来覆盖当前的系统默认时间,具体操作如下所示。

在这里插入图片描述
在这里插入图片描述

注意:上述操作在集群各个节点都要执行,保证当前系统时间标准为上海时间。

3.配置 NTP 服务器 我们选择hadoop01节点来配置 NTP 服务器,集群其他节点定时同步hadoop01节点时间即可。 (1)检查 NTP 服务是否已经安装。 输入rpm -qa | grep ntp命令查看NTP服务是否安装,操作结果如下所示。

代码语言:javascript
复制
[root@hadoop1 ~] rpm -qa | grep ntp
ntp-4.2.6p5-12.el6.centos.2.x86_64
ntpdate-4.2.6p5-12.el6.centos.2.x86_64

如果NTP服务已经安装,可以直接进行下一步,否则输入yum install -y ntp命令可以在线安装NTP服务。实际上就是安装两个软件, ntpdate-4.2.6p5-12.el6.centos.2.x86_64是用来和某台服务器进行同步的,ntp-4.2.6p5-12.el6.centos.2.x86_64 是用来提供时间同步服务的。

在这里插入图片描述
在这里插入图片描述

(2)修改配置文件ntp.conf 修改NTP服务配置,具体操作如下所示。

代码语言:javascript
复制
[root@hadoop01 ~]# vi /etc/ntp.conf
#启用 restrict限定该机器网段,192.168.229.131为当前节点的IP地址
restrict 192.168.0.111 mask 255.255.255.0 nomodify notrap
#注释掉 server 域名配置
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#添加如下两行配置,让本机和本地硬件时间同步
server 127.127.1.0
fudge 127.127.1.0 stratum 10

(3)启动NTP服务 执行chkconfig ntpd on命令,可以保证每次机器启动时,NTP服务都会自动启动,具体操作如下所示。

代码语言:javascript
复制
[root@hadoop01 ~] chkconfig ntpd on
在这里插入图片描述
在这里插入图片描述

(4)配置其他节点定时同步时间 Hadoop02和hadoop03节点通过Linux crontab 命令,可以定时同步hadoop01节点的系统时间,具体操作如下所示。

代码语言:javascript
复制
[root@hadoop02 ~]# crontab -e
#表示每个10分钟进行一次时钟同步
0-59/10 * * * * /usr/sbin/ntpdate hadoop01
[root@hadoop03 ~]# crontab –e
#表示每个10分钟进行一次时钟同步
0-59/10 * * * * /usr/sbin/ntpdate hadoop01

备注:hadoop02和hadoop03节点也需要使用yum install -y ntp命令安装NTP服务,才能使用ntpdate时间同步命令。

3.集群SSH免密登录 (1)各个节点SSH免密登录 SSH(Secure Shell)是可以在应用程序中提供安全通信的一个协议,通过SSH可以安全地进行网络数据传输,它的主要原理就是利用非对称加密体系,对所有待传输的数据进行加密,保证数据在传输时不被恶意破坏、泄露或者篡改。

但是Hadoop集群使用SSH不是用来进行数据传输的,而是在Hadoop集群启动和停止的时候,主节点需要通过SSH协议启动或停止从节点上面的进程。如果不配置SSH免密登录,对Hadoop集群的正常使用没有任何影响,但是在启动和停止Hadoop集群的时候,需要输入每个从节点的密码。可以想象一下,当集群规模比较大的时候,比如达到成百上千节点的规模,如果每次都要分别输入集群节点的密码,这种方法肯定是不可取的,所以要对Hadoop集群进行SSH免密登录的配置。

SSH免密登录的功能跟用户密切相关,为哪个用户配置了SSH,那个用户就具有SSH免密登录的功能,没有配置的用户则不具备该功能,这里选择为hadoop用户配置SSH免密登录。 首先在控制台,使用su命令切换到hadoop用户的根目录,然后使用ssh-keygen -t rsa命令(ssh-keygen是秘钥生成器,-t 是一个参数,rsa 是一种加密算法)生成秘钥对(即公钥文件id_rsa.pub和私钥文件id_rsa)。

1)配置hadoop01节点免密登录

在这里插入图片描述
在这里插入图片描述

2)将公钥文件id_rsa.pub 中的内容拷贝到相同目录下的authorized_keys文件中。

在这里插入图片描述
在这里插入图片描述

3)切换到hadoop用户的根目录,然后为.ssh目录及文件赋予相应的权限。

在这里插入图片描述
在这里插入图片描述

4)使用ssh命令登录hadoop01,第一次登录需要输入yes进行确认,第二次以后登录则不需要,此时表明设置成功。

在这里插入图片描述
在这里插入图片描述

5)配置hadoop02和hadoop03 ssh免密登录 hadoop02和hadoop03节点按照hadoop01节点一样配置SSH免密登录即可。

(2)配置集群SSH免密登录 为了实现集群节点之间SSH免密登录,我们还需要将hadoop02和hadoop03的公钥id_ras.pub复制到hadoop01中的authorized_keys文件中,具体操作命令如下所示:

代码语言:javascript
复制
[hadoop@hadoop02 ~]$cat ~/.ssh/id_rsa.pub | ssh hadoop@hadoop01 'cat >> ~/.ssh/authorized_keys'
[hadoop@hadoop03 ~]$cat ~/.ssh/id_rsa.pub | ssh hadoop@hadoop01 'cat >> ~/.ssh/authorized_keys'

然后将hadoop01中的authorized_keys文件分发到hadoop02和hadoop03节点,具体操作如下所示:

代码语言:javascript
复制
[hadoop@hadoop01 .ssh]$scp -r authorized_keys hadoop@hadoop02:~/.ssh/
[hadoop@hadoop01 .ssh]$scp -r authorized_keys hadoop@hadoop03:~/.ssh/

然后hadoop01节点就可以免密登录hadoop02和hadoop03节点。

在这里插入图片描述
在这里插入图片描述

4.集群脚本开发 创建tools目录,并准备脚本与配置文件

在这里插入图片描述
在这里插入图片描述

给脚本授予可执行权限

在这里插入图片描述
在这里插入图片描述

配置脚本环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试运行集群脚本

在这里插入图片描述
在这里插入图片描述
1.3搭建zookeeper分布式集群

Zookeeper 是一个分布式应用程序协调服务,大多数的分布式应用都需要 Zookeeper 的支持。Zookeeper 安装部署主要有两种模式:一种是单节点模式,另一种是分布式集群模式。因为在生产环境中使用的都是分布式集群,所以本小节直接讲解Zookeeper分布式集群部署模式。 1.下载并解压zookeeper 到官网(地址:http://Zookeeper.apache.org/releases.html# download)下载Zookeeper稳定版本的zookeeper-3.4.6.tar.gz安装包,然后上传至hadoop01 节点的/home/hadoop/app目录下并解压,具体操作如下所示。

代码语言:javascript
复制
#解压Zookeeper
[hadoop@hadoop01 app]$ tar -zxvf zookeeper-3.4.6.tar.gz
#创建Zookeeper软连接
[hadoop@hadoop01 app]$ ln -s zookeeper-3.4.6 zookeeper

2.修改zoo.cfg配置文件 在运行 Zookeeper 服务之前,需要新建一个配置文件。这个配置文件习惯上命名为zoo.cfg,并保存在conf子目录中,其核心内容如下所示。

代码语言:javascript
复制
[hadoop@hadoop01 app]$ cd zookeeper
[hadoop@hadoop01 zookeeper]$ cd conf/
[hadoop@hadoop01 conf]$ ls
configuration.xsl  log4j.properties  zoo.cfg  zoo_sample.cfg
[hadoop@hadoop01 conf]$ vi zoo.cfg
#数据目录需要提前创建
dataDir=/home/hadoop/data/zookeeper/zkdata
#日志目录需要提前创建
dataLogDir=/home/hadoop/data/zookeeper/zkdatalog
#访问端口号
clientPort=2181
#server.每个节点服务编号=服务器ip地址:集群通信端口:选举端口
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

3.同步zookeeper安装目录 使用scp命令将hadoop01节点的Zookeeper安装目录,整体同步到集群的hadoop02和hadoop03节点,具体操作如下所示。

代码语言:javascript
复制
[hadoop@hadoop01 app]$scp -r zookeeper-3.4.6  hadoop@hadoop02:/home/hadoop/app/
[hadoop@hadoop01 app]$scp -r zookeeper-3.4.6  hadoop@hadoop03:/home/hadoop/app/

然后分别在hadoop02和hadoop03节点上创建Zookeeper软连接,具体操作如下所示。

代码语言:javascript
复制
[hadoop@hadoop02 app]$ln -s zookeeper-3.4.6 zookeeper
[hadoop@hadoop03 app]$ ln -s zookeeper-3.4.6 zookeeper

4.创建数据和日志目录 在集群各个节点创建Zookeeper数据目录和日志目录,需要跟zoo.cfg配置文件保持一致,具体操作如下所示。

代码语言:javascript
复制
#创建Zookeeper数据目录
[hadoop@hadoop01 app]$mkdir -p /home/hadoop/data/zookeeper/zkdata
[hadoop@hadoop02 app]$mkdir -p /home/hadoop/data/zookeeper/zkdata
[hadoop@hadoop03 app]$mkdir -p /home/hadoop/data/zookeeper/zkdata
#创建Zookeeper日志目录
[hadoop@hadoop01 app] mkdir -p /home/hadoop/data/zookeeper/zkdatalog
[hadoop@hadoop02 app] mkdir -p /home/hadoop/data/zookeeper/zkdatalog
[hadoop@hadoop03 app] mkdir -p /home/hadoop/data/zookeeper/zkdatalog

5.创建各节点服务编号 分别在Zookeeper集群各个节点,进入/home/hadoop/data/zookeeper/zkdata目录,创建文件myid,然后分别输入服务编号,具体操作如下所示:

代码语言:javascript
复制
#hadoop01节点
[hadoop@hadoop01 zkdata]$ touch myid
[hadoop@hadoop01 zkdata]$ echo 1> myid
#hadoop02节点
[hadoop@hadoop02 zkdata]$ touch myid
[hadoop@hadoop02 zkdata]$ echo 2> myid
#hadoop03节点
[hadoop@hadoop03 zkdata]$ touch myid
[hadoop@hadoop03 zkdata]$ echo 3> myid

注意:每个节点服务编号的值是一个整形数字且不能重复。

6.启动Zookeeper集群服务 在集群各个节点分别进入Zookeeper安装目录,然后使用如下命令启动Zookeeper服务。

代码语言:javascript
复制
[hadoop@hadoop01 zookeeper]$ bin/zkServer.sh start
[hadoop@hadoop02 zookeeper]$ bin/zkServer.sh start
[hadoop@hadoop03 zookeeper]$ bin/zkServer.sh start

Zookeeper集群启动一会之后,通过如下命令查看Zookeeper集群状态。

代码语言:javascript
复制
[hadoop@hadoop01 zookeeper]$ bin/zkServer.sh status
[hadoop@hadoop02 zookeeper]$ bin/zkServer.sh status
[hadoop@hadoop03 zookeeper]$ bin/zkServer.sh status

如果在Zookeeper集群中,其中一个节点为leader领导者,另外两个节点是follower跟随者,说明Zookeeper集群安装部署成功。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大数据应用与服务之搭建Zookeeper分布式集群详细教程
    • 搭建Zookeeper分布式集群安装过程
      • 1.1Linux虚拟机克隆
      • 1.2Hadoop集群安装前准备
      • 1.3搭建zookeeper分布式集群
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档