文章目录
- 集群规划
- 环境准备
- 集群部署
- 参考资料
集群规划
- 确定使用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部署