文章目录
- 集群规划
- 环境准备
- 集群部署
- 参考资料
 

集群规划
- 确定使用Hadoop101、hadoop102和hadoop103三台服务器来构建Zookeeper集群。
| hadoop101 | hadoop102 | hadoop103 | 
|---|---|---|
| zookeeper | zookeeper | zookeeper | 
环境准备
安装zookeeper前需要确保下面的环境配置成功,具体可以参考大数据之Hadoop部署。
- 准备三台服务器, 确保都已经安装了CentOS 7.9操作系统
- 使得三台服务器之间可以互相ping通
- 修改主机名为 hadoop101, hadoop102, hadoop103
- 配置hosts文件, 增加主机名和 IP 地址的映射
- 创建用户并配置用户权限
- 关闭防火墙
- ssh 免密登录
- 安装 JDK,配置环境变量等
集群部署
注意:确保在执行这些步骤之前,确保环境准备完成。 bigdata用户在所有服务器上都有执行权限,SSH免密码登录已经配置好,以便可以无障碍地在服务器之间进行操作。
-  安装Zookeeper: - 在每台服务器上使用bigdata用户登录。
- 下载Zookeeper的安装包apache-zookeeper-3.5.7-bin.tar.gz到/opt/software/目录。# 切换到/opt/software目录 cd /opt/software # 下载安装包 wget https://mirrors.huaweicloud.com/apache/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
- 将安装包解压到hadoop101服务器的/opt/module/目录下:tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
- 创建软连接命名为zookeeper:ln -s apache-zookeeper-3.5.7-bin zookeeper
- 使用rsync命令将文件和软连接同步到hadoop102和hadoop103:# 同步到hadoop102 rsync -av /opt/module/apache-zookeeper-3.5.7-bin hadoop102:/opt/module/ rsync -av /opt/module/zookeeper hadoop102:/opt/module/ # 同步到hadoop103 rsync -av /opt/module/apache-zookeeper-3.5.7-bin hadoop103:/opt/module/ rsync -av /opt/module/zookeeper hadoop103:/opt/module/
 
- 在每台服务器上使用
-  配置zoo.cfg文件: -  在Hadoop101上编辑 zoo.cfg文件,设置数据存储路径和集群配置:cp zoo_sample.cfg zoo.cfg vim zoo.cfg
-  配置内容如下: - 修改数据存储路径为dataDir=/opt/module/zookeeper/zkData
- 增加集群配置信息server.1=hadoop101:2888:3888 server.2=hadoop102:2888:3888 server.3=hadoop103:2888:3888
 
- 修改数据存储路径为
-  配置文件解读 
 在Zookeeper的配置文件zoo.cfg中,server.A=B:C:D的配置参数是用来定义集群中各个服务器的角色和通信信息的。下面是对这些参数的详细解读:-  A: 这是一个数字,表示服务器在Zookeeper集群中的标识符。每个服务器都有一个唯一的标识符,用于区分不同的服务器。 
-  B: 这是服务器的地址,可以是IP地址或主机名。这个地址用于Zookeeper集群内部的通信。 
-  C: 这是服务器与集群中的Leader服务器交换信息时使用的端口。在Zookeeper中,所有的Follower和Observer节点都会通过这个端口与Leader节点通信,以获取最新的状态和数据。 
-  D: 这是用于Leader选举的端口。如果当前的Leader服务器失败,集群中的其他服务器会通过这个端口进行通信,以选举出一个新的Leader。这个端口仅在选举过程中使用。 
-  myid: 在Zookeeper集群模式下,每个服务器都需要有一个唯一的标识符,这个标识符存储在一个名为 myid的文件中。该文件位于dataDir目录下,其内容就是A的值。Zookeeper启动时会读取这个文件,以确定当前服务器在集群中的身份。
-  dataDir: 这是Zookeeper的数据目录,用于存储Zookeeper的数据和事务日志。 myid文件就存放在这个目录下。
 这些配置参数共同定义了Zookeeper集群的行为和通信方式,确保了集群的稳定性和可靠性。在配置Zookeeper集群时,需要根据实际的网络环境和需求来设置这些参数。 
-  
-  使用 scp命令将配置好的zoo.cfg文件同步到hadoop102和hadoop103:scp /opt/module/zookeeper/conf/zoo.cfg bigdata@hadoop102:/opt/module/zookeeper/conf/ scp /opt/module/zookeeper/conf/zoo.cfg bigdata@hadoop103:/opt/module/zookeeper/conf/
 
-  
-  配置服务器编号: - 在每台服务器的Zookeeper安装目录下创建zkData目录:mkdir -p /opt/module/zookeeper/zkData
- 在每个zkData目录下创建一个名为myid的文件,并写入与server相应的服务器编号:# hadoop101 echo "1" > myid # hadoop102 echo "2" > myid # hadoop103 echo "3" > myid
 
- 在每台服务器的Zookeeper安装目录下创建
-  启动Zookeeper服务: - 在每台服务器上启动Zookeeper:[bigdata@Hadoop101 zookeeper]$ bin/zkServer.sh start [bigdata@hadoop102 zookeeper]$ bin/zkServer.sh start [bigdata@hadoop103 zookeeper]$ bin/zkServer.sh start
- 检查每台服务器上的Zookeeper状态以确认是否成功启动:[bigdata@Hadoop101 zookeeper]$ bin/zkServer.sh status [bigdata@hadoop102 zookeeper]$ bin/zkServer.sh status [bigdata@hadoop103 zookeeper]$ bin/zkServer.sh status
 
- 在
-  创建集群操作脚本: -  在Hadoop101目录 /home/bigdata/bin上创建一个脚本zookeeper_manage.sh以简化集群的启动、停止和状态检查:vim zookeeper_manage.sh
-  脚本内容如下: #!/bin/bash # 定义log函数,用于打印不同级别的日志信息 function log() { local level="$1" local message="$2" case "$level" in ERROR) echo -e "\033[31m[ERROR] $message\033[0m" ;; WARN) echo -e "\033[33m[WARN] $message\033[0m" # 黄色 ;; INFO) echo -e "\033[32m[INFO] $message\033[0m" # 绿色 ;; *) echo "$message" ;; esac } # 定义主机数组 hosts=("hadoop101" "hadoop102" "hadoop103") # 根据脚本的第一个参数执行不同的操作 case $1 in start) for host in "${hosts[@]}" do log INFO "Starting zookeeper on $host" ssh "$host" "/opt/module/zookeeper/bin/zkServer.sh start" || log ERROR "Failed to start zookeeper on $host" done ;; stop) for host in "${hosts[@]}" do log INFO "Stopping zookeeper on $host" ssh "$host" "/opt/module/zookeeper/bin/zkServer.sh stop" || log ERROR "Failed to stop zookeeper on $host" done ;; status) for host in "${hosts[@]}" do log INFO "Checking zookeeper status on $host" ssh "$host" "/opt/module/zookeeper/bin/zkServer.sh status" # 检查ssh命令的退出状态,并在必要时记录错误 if [ $? -ne 0 ]; then log ERROR "Failed to check zookeeper status on $host" fi done ;; *) log ERROR "Invalid command: $1" ;; esac
-  使用脚本启动、停止或检查集群状态: ./zookeeper_manage.sh start ./zookeeper_manage.sh stop ./zookeeper_manage.sh status
 
-  
-  客户端命令行操作: -  在任一服务器上使用 bigdata用户启动Zookeeper客户端,并通过命令行与Zookeeper集群交互:bin/zkCli.sh
-  使用客户端命令,例如 ls、create、get、set、stat、delete等,来操作Zookeeper。命令 功能描述 参数选项及说明 help 显示所有可用的Zookeeper命令。 - ls path 列出指定路径下的子节点。 -w: 监听子节点的变化。 
 -s: 附加次级信息。create 创建一个新的节点。 -s: 创建含有序列的节点。 
 -e: 创建临时节点。get path 获取指定路径节点的值。 -w: 监听节点内容的变化。 
 -s: 附加次级信息。set 设置或更新指定节点的值。 - stat 查看指定节点的状态,包括版本号等。 - delete 删除指定的节点。 - deleteall 递归删除指定路径下的所有节点。 - 
 
-  
参考资料
大数据之Hadoop部署








![[Microsoft Office]Word设置页码从第二页开始为1](https://img-blog.csdnimg.cn/direct/e9827a32189a4faabe2f1dc2889159fd.png)










