zookeeper有三种运行方式:单机、伪集群、集群,这里只介绍集群安装和运行
1、首先先搭建好虚拟机多台,这里设置两台
2、在官网上找到zookeeper的安装文件
主页:http://zookeeper.apache.org/ 点击Download,下载某个版本,解压到/opt目录。
tar xzvf zookeeper-3.4.6.tar.gz
将conf目录下的zoo_sample.cfg改为zoo.cfg
这个配置文件中各个配置项的意义。
tickTime=2000
dataDir=D:/devtools/zookeeper-3.2.2/build
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔tickTime 时间就会发送一个心跳。
dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
其中zoo1、zoo2、zoo3分别为集群中机器的IP。
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒。
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒。
“server.id=host:port:port. ”指示了不同的 ZooKeeper 服务器的自身标识,作为集群的一部分的机器应该知道 ensemble 中的其它机器。用户可以从“ server.id=host:port:port. ”中读取相关的信息。 在服务器的 data( dataDir 参数所指定的目录)目录下创建一个文件名为 myid 的文件,这个文件中仅含有一行的内容,指定的是自身的 id 值。比如,服务器“ 1 ”应该在 myid 文件中写入“ 1 ”。这个 id 值必须是 ensemble 中唯一的,且大小在 1 到 255 之间。这一行配置中,第一个端口( port )是从( follower )机器连接到主( leader )机器的端口,第二个端口是用来进行 leader 选举的端口。在这个例子中,每台机器使用三个端口,分别是: clientPort ,2181 ; port , 2888 ; port , 3888 。
ZooKeeper 要求 JAVA 的环境才能运行,并且需要 JAVA6 以上的版本,可以从 SUN 官网上下载,并对JAVA 环境变量进行设置。
除此之外,为了今后操作的方便,我们需要对 ZooKeeper 的环境变量进行配置,方法如下,在 /etc/profile 文件中加入如下的内容:
#Set ZooKeeper Enviroment
export ZOOKEEPER_HOME=/root/hadoop-0.20.2/zookeeper-3.3.1
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
export JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
3、 开启zookeeper服务:
zkServer.sh start
开启后查看当前zookeeper的状态
zkServer.sh status
集群状态下可能发现服务未启动,提示
Error contacting service. It is probably not running.
此时需要做的就是检查如下选项:
1. 是否安装了Java环境, 并配置了环境变量. (如果Java8不成功就换成Java6)
2. 是否禁用防火墙,包括ipv6的防火墙
3. 是否禁用了ipv6协议
4. zoo.cfg中配置的dataDir和dataLogDir所在的路径是否存在
5. dataDir下的myid文件是否存在且内容是否正确
6. 如果zoo.cfg中配置的server.x=hostname:2888:3888这种形式, 即使hostname在/etc/hosts中做了正确映射且通过hostname互相ping也是通的, 但启动zookeeper就是失败, 那么把hostname换成ip地址, 如: server.x=192.168.1.1:2888:3888
禁用防火墙后重启zookeeper,查询状态,返回如下
[root@localhost init.d]# zkServer.sh status
JMX enabled by default
Using config: /app/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
1、首先先搭建好虚拟机多台,这里设置两台
2、在官网上找到zookeeper的安装文件
主页:http://zookeeper.apache.org/ 点击Download,下载某个版本,解压到/opt目录。
tar xzvf zookeeper-3.4.6.tar.gz
将conf目录下的zoo_sample.cfg改为zoo.cfg
这个配置文件中各个配置项的意义。
tickTime=2000
dataDir=D:/devtools/zookeeper-3.2.2/build
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔tickTime 时间就会发送一个心跳。
dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
其中zoo1、zoo2、zoo3分别为集群中机器的IP。
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒。
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒。
“server.id=host:port:port. ”指示了不同的 ZooKeeper 服务器的自身标识,作为集群的一部分的机器应该知道 ensemble 中的其它机器。用户可以从“ server.id=host:port:port. ”中读取相关的信息。 在服务器的 data( dataDir 参数所指定的目录)目录下创建一个文件名为 myid 的文件,这个文件中仅含有一行的内容,指定的是自身的 id 值。比如,服务器“ 1 ”应该在 myid 文件中写入“ 1 ”。这个 id 值必须是 ensemble 中唯一的,且大小在 1 到 255 之间。这一行配置中,第一个端口( port )是从( follower )机器连接到主( leader )机器的端口,第二个端口是用来进行 leader 选举的端口。在这个例子中,每台机器使用三个端口,分别是: clientPort ,2181 ; port , 2888 ; port , 3888 。
ZooKeeper 要求 JAVA 的环境才能运行,并且需要 JAVA6 以上的版本,可以从 SUN 官网上下载,并对JAVA 环境变量进行设置。
除此之外,为了今后操作的方便,我们需要对 ZooKeeper 的环境变量进行配置,方法如下,在 /etc/profile 文件中加入如下的内容:
#Set ZooKeeper Enviroment
export ZOOKEEPER_HOME=/root/hadoop-0.20.2/zookeeper-3.3.1
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
export JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
3、 开启zookeeper服务:
zkServer.sh start
开启后查看当前zookeeper的状态
zkServer.sh status
集群状态下可能发现服务未启动,提示
Error contacting service. It is probably not running.
此时需要做的就是检查如下选项:
1. 是否安装了Java环境, 并配置了环境变量. (如果Java8不成功就换成Java6)
2. 是否禁用防火墙,包括ipv6的防火墙
3. 是否禁用了ipv6协议
4. zoo.cfg中配置的dataDir和dataLogDir所在的路径是否存在
5. dataDir下的myid文件是否存在且内容是否正确
6. 如果zoo.cfg中配置的server.x=hostname:2888:3888这种形式, 即使hostname在/etc/hosts中做了正确映射且通过hostname互相ping也是通的, 但启动zookeeper就是失败, 那么把hostname换成ip地址, 如: server.x=192.168.1.1:2888:3888
禁用防火墙后重启zookeeper,查询状态,返回如下
[root@localhost init.d]# zkServer.sh status
JMX enabled by default
Using config: /app/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower