zookeeper安装
zookeeper集群在部署的时候,节点数量必须是不少于3个的奇数个。
# zookeeper伪分布
zookeeper伪分布式(3个节点)
解压缩zookeeper-3.4.13.tar.gz
执行命令cp conf/zoo_sample.cfg conf/zoo1.cfg
修改文件conf/zoo1.cfg 修改内容如下
dataDir=/opt/zookeeper/zoo1/data
clientPort=2181
server.1=hadoop-1:2888:3888
server.2=hadoop-1:2889:3889
server.3=hadoop-1:2890:3890
执行命令cp conf/zoo1.cfg conf/zoo2.cfg
修改文件conf/zoo2.cfg 修改内容如下
dataDir=/opt/zookeeper/zoo2/data
clientPort=2182
server.1=hadoop-1:2888:3888
server.2=hadoop-1:2889:3889
server.3=hadoop-1:2890:3890
执行命令cp conf/zoo1.cfg conf/zoo3.cfg
修改文件conf/zoo2.cfg 修改内容如下
dataDir=/opt/zookeeper/zoo3/data
clientPort=2183
server.1=hadoop-1:2888:3888
server.2=hadoop-1:2889:3889
server.3=hadoop-1:2890:3890
执行命令,产生存储数据的目录
mkdir -p /opt/zookeeper/zoo1/data
mkdir -p /opt/zookeeper/zoo2/data
mkdir -p /opt/zookeeper/zoo3/data
产生标记文件
echo '1'>/opt/zookeeper/zoo1/data/myid
echo '2'>/opt/zookeeper/zoo2/data/myid
echo '3'>/opt/zookeeper/zoo3/data/myid
启动三个节点
bin/zkServer.sh start conf/zoo1.cfg
bin/zkServer.sh start conf/zoo2.cfg
bin/zkServer.sh start conf/zoo3.cfg
执行zk的操作使用bin/zkCli.sh
# zookeeper集群搭建
部署zookeeper集群(hadoop-1\hadoop-2\hadoop-3)
在hadoop-1上解压缩zookeeper-3.4.13.tar.gz
执行命令`cp conf/zoo_sample.cfg conf/zoo.cfg`
修改文件conf/zoo.cfg 修改内容如下
`dataDir=/opt/zookeeper/data`
`clientPort=2181`
server.1=hadoop-1:2888:3888
server.2=hadoop-2:2888:3888
server.3=hadoop-3:2888:3888
执行命令,产生存储数据的目录
`mkdir -p /opt/zookeeper/data`
产生标记文件
`echo '1'>/opt/zookeeper/data/myid`
把hadoop-1上的zookeeper复制到其他节点
```shell
scp -rq zookeeper hadoop@hadoop-2:/opt
scp -rq zookeeper hadoop@hadoop-3:/opt
```
在hadop-2上执行 echo '2'>/opt/zookeeper/data/myid
在hadop-3上执行 echo '3'>/opt/zookeeper/data/myid
在三个节点分别执行bin/zkServer.sh start
检查 (1)执行jps查看 (2)执行bin/zkServer.sh status
# 查看状态错误
当您看到以下错误:
```shell
[root@hadoop01 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Error contacting service. It is probably not running.
```
因为是集群环境,有三台服务器都部署了zookeeper。可能是防火墙没有关闭。也有可能是没启动,启动了的情况下查看状态错误,执行 `systemctl status firewalld.service` 命令查看当前服务器的防火墙状态。
注:当前Linux环境是 CentOS7,所以可以通过如下命令控制防火墙,如果是其他Linux系统,那么下面的命令很可能不成功,就需要换成对应系统的命令。
```shell
[root@hadoop01 data]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 五 2022-07-22 14:25:29 CST; 1h 28min ago
Docs: man:firewalld(1)
Main PID: 689 (firewalld)
CGroup: /system.slice/firewalld.service
└─689 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
7月 22 14:25:28 hadoop01 systemd[1]: Starting firewalld - dynamic firewall daemon...
7月 22 14:25:29 hadoop01 systemd[1]: Started firewalld - dynamic firewall daemon.
7月 22 14:25:29 hadoop01 firewalld[689]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure co...t now.
Hint: Some lines were ellipsized, use -l to show in full.
```
可以看到第四行是Active: active (running)
那么执行 `systemctl stop firewalld.service `命令关闭防火墙。
```language
[root@hadoop01 data]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 五 2022-07-22 15:54:31 CST; 1s ago
Docs: man:firewalld(1)
Process: 689 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 689 (code=exited, status=0/SUCCESS)
7月 22 14:25:28 hadoop01 systemd[1]: Starting firewalld - dynamic firewall daemon...
7月 22 14:25:29 hadoop01 systemd[1]: Started firewalld - dynamic firewall daemon.
7月 22 14:25:29 hadoop01 firewalld[689]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure co...t now.
7月 22 15:54:30 hadoop01 systemd[1]: Stopping firewalld - dynamic firewall daemon...
7月 22 15:54:31 hadoop01 systemd[1]: Stopped firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.
```
您也使用`systemctl disable firewalld.service`取消开机启动
```language
[root@hadoop01 data]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
```