赞
踩
hadoop101 | hadoop102 | hadoop103 |
---|---|---|
zookeeper | zookeeper | zookeeper |
安装zookeeper前需要确保下面的环境配置成功,具体可以参考大数据之Hadoop部署。
注意:确保在执行这些步骤之前,确保环境准备
完成。 bigdata
用户在所有服务器上都有执行权限,SSH免密码登录已经配置好,以便可以无障碍地在服务器之间进行操作。
安装Zookeeper:
bigdata
用户登录。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/
配置服务器编号:
zkData
目录:mkdir -p /opt/module/zookeeper/zkData
zkData
目录下创建一个名为myid
的文件,并写入与server
相应的服务器编号:# hadoop101
echo "1" > myid
# hadoop102
echo "2" > myid
# hadoop103
echo "3" > myid
启动Zookeeper服务:
每台
服务器上启动Zookeeper:[bigdata@Hadoop101 zookeeper]$ bin/zkServer.sh start
[bigdata@hadoop102 zookeeper]$ bin/zkServer.sh start
[bigdata@hadoop103 zookeeper]$ bin/zkServer.sh start
[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 | 递归删除指定路径下的所有节点。 | - |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。