一·下载zookeeper安装包解压到指定到指定文件夹
官网下载:Index of /dist/zookeeper (apache.org)
创建/home/hadoop/apps文件夹,将安装包也放里面,再进行解压
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
更名为zookeeper
mv apache-zookeeper-3.7.0-bin zookeeper
二.集群模式
新建data和logs目录(data目录用来存放数据库快照,logs目录用来存放日志文件
mkdir -p /home/hadoop/apps/zookeeper/data
mkdir -p /home/hadoop/apps/zookeeper/logs
找到zookeeper目录下的 conf 配置文件夹
cd /home/hadoop/apps/zookeeper/conf/
ll
total 16
-rw-r--r--. 1 root root 535 May 4 2023 configuration.xsl
-rw-r--r--. 1 root root 2712 May 4 2023 log4j.properties
-rw-r--r--. 1 root root 922 May 4 2023 zoo_sample.cfg
-rw-r--r--. 1 root root 152 Jan 15 13:05 zoo.cfg.dynamic.next
重命名 zoo_sample.cfg 为zoo.cfg
mv zoo_sample.cfg zoo.cfg
修改zoo.cfg文件
[root@master conf]# vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000 #Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,单位为毫秒
# The number of ticks that the initial
# synchronization phase can take
initLimit=10 #表示允许从服务器连接到leader并完成数据同步的时间,总的时间长度就是 initLimit * tickTime 秒
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5 #配置 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 syncLimit * tickTime 秒
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/apps/zookeeper/data #Zookeeper 保存数据的数据库快照的位置
dataLogDir=/home/apps/zookeeper/logs #事务日志日志路径,若没提供的话则用dataDir
# the port at which the clients will connect
clientPort=2181 #Zookeeper服务器监听的端口,以接受客户端的访问请求
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60 # 限制连接到ZK上的客户端数量,并且限制并发连接数量,值为0表示不做任何限制
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3 # 自动清理日志,该参数设置保留多少个快照文件和对应的事务日志文件,默认为3,如果小于3则自动调整为3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
# server.n n是一个数字,表示这个是第几号服务器,“=”后面可跟主机地址或者IP地址,2888为集群中从服务器(follower)连接到主服务器(leader)的端口,为主服务器(leader)使用;3888为进行选举(leader)的时使用的端口
server.1=192.168.1.142:2888:3888
server.2=192.168.1.143:2888:3888
server.3=192.168.1.144:2888:3888
添加代码:
server.1=192.168.1.142:2888:3888
server.2=192.168.1.143:2888:3888
server.3=192.168.1.144:2888:3888
在data目录下面新建一个myid文件,将刚才添加代码里面server.n的n写入myid文件里面,只写入数字。该数字对应server.后的数字。
先在另外两台服务器上面创建目录
slave1:
mkdir -p /home/hadoop/apps/zookeeper
slave2:
mkdir -p /home/hadoop/apps/zookeeper
用scp命令进行文件传送:先设置SSH免密登录
scp -r /home/hadoop/apps/zookeeper root@slave1:/home/apps/
scp -r /home/hadoop/apps/zookeeper root@slave2:/home/apps/
修改myid
传输完成之后在slave1和slave2上面更改myid文件,将他里面的数字改为slave1与slave2对应的IP地址(上面更改的zoo.cfg文件里面添加的服务器主机名或者IP是一 一对应的)。
首先启动master主服务器上面的zookeeper,其次slave1和slave2
cd /home/hadoop/apps/zookeeper/bin
./zkServer.sh
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
在master上面查看是否运行成功
master:
[root@master bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/apps/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
启动成功(Master不一定是leader,这是随机分配的)
遇到的问题:
1)在Linux中启动zookper启动报错
已经进入了zookeeper的安装目录bin下了,执行zkServer.sh start 没有这个命令?
有这个命令,但启动不了
解决方案有两种
1、到zookeeper的安装目录bin下,将命令换成 ./zkServer.sh start ;
2、配置环境变量:vim /etc/profile ,添加:
export ZOO_HOME=/home/hadoop/apps/zookeeper
export PATH=$ZOO_HOME/bin:$PATH
根据自己的文件路径进行设置
然后 source /etc/profile ;
再执行 zkServer.sh start 就可以了。
原文连接:http://t.csdn.cn/5GLRZ