签到成功

知道了

CNDBA社区CNDBA社区

Zookeeper 集群安装配置

2019-03-02 00:48 1941 0 原创 Zookeeper
作者: dave

1 安装Java 环境

ZooKeeper服务器是用Java编写创建,它运行在JVM。所以需要使用JDK 6或更高版本。

关于Java环境的安装配置可以参考之前的文章:http://www.cndba.cn/cndba/dave/article/3295

Linux 7.6 平台 Hadoop 3.1.1 集群搭建手册
https://www.cndba.cn/download/dave/6

2 安装ZooKeeper 框架

ZooKeeper可以安装成单机模式和集群模式。单机模式较简单,只部署一个zk进程,客户端直接与该zk进程进行通信。这种模式仅在开发环境下使用,因为其存在单点故障。生产环境一般选择集群模式。这两种模式基本没有差别,就配置参数多几个,另外就是主机的数量。 另外在选择选择zk节点的时候需要使用奇数。http://www.cndba.cn/cndba/dave/article/3295

这里的测试环境有5个salve节点,我们选择3个节点来部署ZooKeeper。http://www.cndba.cn/cndba/dave/article/3295

[cndba@hadoopmaster zookeeper]$ cat /etc/hosts
127.0.0.1   localhost 
192.168.20.80 hadoopmaster
192.168.20.81 hadoopslave1
192.168.20.82 hadoopslave2
192.168.20.83 hadoopslave3
192.168.20.84 hadoopslave4
192.168.20.85 hadoopslave5

[cndba@hadoopmaster zookeeper]$

集群模式部署与单机模式部署一样,先在单节点上安装好zk软件,然后修改配置文件,最后将软件和配置文件复制到其他节点即可。http://www.cndba.cn/cndba/dave/article/3295http://www.cndba.cn/cndba/dave/article/3295

2.1 下载ZooKeeper

可以直接从官网下载:
http://zookeeper.apache.org/

我们这里下载的是3.4.13的版本:
http://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

2.2 解压缩文件

[cndba@hadoopmaster ~]$ pwd
/home/cndba
[cndba@hadoopmaster ~]$ ll
total 380580
drwxr-xr-x. 13 cndba cndba       194 Jan 23 02:24 hadoop
-rw-r--r--.  1 cndba cndba 334559382 Jan 22 14:02 hadoop-3.1.1.tar.gz
drwxr-xr-x.  4 cndba cndba        30 Jan 23 21:57 NCDC
drwxr-xr-x   9 cndba cndba       318 Dec 19  2017 sqoop
-rw-r--r--   1 cndba cndba  17953604 Mar  1 14:38 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
-rw-r--r--   1 cndba cndba  37191810 Mar  1 23:12 zookeeper-3.4.13.tar.gz

[cndba@hadoopmaster ~]$ tar xzvf zookeeper-3.4.13.tar.gz 
zookeeper-3.4.13/
zookeeper-3.4.13/ivysettings.xml
zookeeper-3.4.13/dist-maven/
zookeeper-3.4.13/bin/
zookeeper-3.4.13/build.xml
zookeeper-3.4.13/zookeeper-3.4.13.jar.asc
zookeeper-3.4.13/zookeeper-3.4.13.jar.sha1
zookeeper-3.4.13/zookeeper-3.4.13.jar
zookeeper-3.4.13/docs/
zookeeper-3.4.13/ivy.xml
…

[cndba@hadoopmaster ~]$ mv zookeeper-3.4.13 zookeeper
[cndba@hadoopmaster ~]$ ll
total 380584
drwxr-xr-x. 13 cndba cndba       194 Jan 23 02:24 hadoop
-rw-r--r--.  1 cndba cndba 334559382 Jan 22 14:02 hadoop-3.1.1.tar.gz
drwxr-xr-x.  4 cndba cndba        30 Jan 23 21:57 NCDC
drwxr-xr-x   9 cndba cndba       318 Dec 19  2017 sqoop
-rw-r--r--   1 cndba cndba  17953604 Mar  1 14:38 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
drwxr-xr-x  10 cndba cndba      4096 Jul  1  2018 zookeeper
-rw-r--r--   1 cndba cndba  37191810 Mar  1 23:12 zookeeper-3.4.13.tar.gz
[cndba@hadoopmaster ~]$ 

[cndba@hadoopmaster ~]$ cd zookeeper/
[cndba@hadoopmaster zookeeper]$ ls
bin        conf     dist-maven  ivysettings.xml  lib          NOTICE.txt  README_packaging.txt  src                   zookeeper-3.4.13.jar.asc  zookeeper-3.4.13.jar.sha1
build.xml  contrib  docs        ivy.xml          LICENSE.txt  README.md   recipes               zookeeper-3.4.13.jar  zookeeper-3.4.13.jar.md5
[cndba@hadoopmaster zookeeper]$ mkdir data
[cndba@hadoopmaster zookeeper]$ mkdir logs
[cndba@hadoopmaster zookeeper]$ ll
total 1628
drwxr-xr-x  2 cndba cndba     202 Mar  2 07:14 bin
-rw-r--r--  1 cndba cndba   91400 Jun 30  2018 build.xml
drwxr-xr-x  2 cndba cndba      77 Mar  2 07:14 conf
drwxr-xr-x 10 cndba cndba     130 Mar  2 07:14 contrib
drwxrwxr-x  2 cndba cndba       6 Mar  2 07:17 data
drwxr-xr-x  2 cndba cndba    4096 Mar  2 07:14 dist-maven
drwxr-xr-x  6 cndba cndba    4096 Mar  2 07:14 docs
-rw-r--r--  1 cndba cndba    1709 Jun 30  2018 ivysettings.xml
-rw-r--r--  1 cndba cndba    8502 Jun 30  2018 ivy.xml
drwxr-xr-x  4 cndba cndba     308 Mar  2 07:14 lib
-rw-r--r--  1 cndba cndba   11938 Jun 30  2018 LICENSE.txt
drwxrwxr-x  2 cndba cndba       6 Mar  2 07:47 logs
-rw-r--r--  1 cndba cndba    3132 Jun 30  2018 NOTICE.txt
-rw-r--r--  1 cndba cndba    1585 Jun 30  2018 README.md
-rw-r--r--  1 cndba cndba    1770 Jun 30  2018 README_packaging.txt
drwxr-xr-x  5 cndba cndba      47 Mar  2 07:14 recipes
drwxr-xr-x  8 cndba cndba     211 Jun 30  2018 src
-rw-r--r--  1 cndba cndba 1508639 Jun 30  2018 zookeeper-3.4.13.jar
-rw-r--r--  1 cndba cndba     833 Jul  1  2018 zookeeper-3.4.13.jar.asc
-rw-r--r--  1 cndba cndba      33 Jun 30  2018 zookeeper-3.4.13.jar.md5
-rw-r--r--  1 cndba cndba      41 Jun 30  2018 zookeeper-3.4.13.jar.sha1
[cndba@hadoopmaster zookeeper]$

2.3 修改配置文件

[cndba@hadoopmaster zookeeper]$ cd conf
[cndba@hadoopmaster conf]$ pwd
/home/cndba/zookeeper/conf
[cndba@hadoopmaster conf]$ ll
total 12
-rw-r--r-- 1 cndba cndba  535 Jun 30  2018 configuration.xsl
-rw-r--r-- 1 cndba cndba 2161 Jun 30  2018 log4j.properties
-rw-r--r-- 1 cndba cndba  922 Jun 30  2018 zoo_sample.cfg
[cndba@hadoopmaster conf]$ cp zoo_sample.cfg zoo.cfg 
[cndba@hadoopmaster conf]$

修改后的zoo.cfg配置文件如下:

[cndba@hadoopmaster conf]$ grep -v "^#" zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/cndba/zookeeper/data
dataLogDir=/home/cndba/zookeeper/logs
clientPort=2181

server.1=hadoopmaster:2888:3888
server.2=hadoopslave1:2888:3888
server.3=hadoopslave2:2888:3888
[cndba@hadoopmaster conf]$

配置参数说明如下:http://www.cndba.cn/cndba/dave/article/3295

  1. tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
  2. initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
  3. 当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
  4. syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
  5. dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
  6. clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
  7. server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。

2.4 创建ServerID 标识

 在节点配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,即$ZOOKEEPER_HOME/conf/zoo.cfg文件中配置的server.X,则myid文件中就输入这个数字X。这里master节点为 1。其他节点根据参数参数中的配置进行修改。http://www.cndba.cn/cndba/dave/article/3295

[cndba@hadoopmaster zookeeper]$ cd data/
[cndba@hadoopmaster data]$ pwd
/home/cndba/zookeeper/data
[cndba@hadoopmaster data]$ touch myid
[cndba@hadoopmaster data]$ echo "1" > myid
[cndba@hadoopmaster data]$ cat myid
1

2.5 修改环境变量

修改/etc/profile 文件添加如下内容:

http://www.cndba.cn/cndba/dave/article/3295
http://www.cndba.cn/cndba/dave/article/3295

#Set ZOOKEEPER_HOME ENVIRONMENT
export ZOOKEEPER_HOME=/home/cndba/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

2.6 从master节点分发文件到其他节点并修改ServerID标识

[cndba@hadoopmaster ~]$ pwd
/home/cndba
[cndba@hadoopmaster ~]$ ll
total 380584
drwxr-xr-x. 13 cndba cndba       194 Jan 23 02:24 hadoop
-rw-r--r--.  1 cndba cndba 334559382 Jan 22 14:02 hadoop-3.1.1.tar.gz
drwxr-xr-x.  4 cndba cndba        30 Jan 23 21:57 NCDC
drwxr-xr-x   9 cndba cndba       318 Dec 19  2017 sqoop
-rw-r--r--   1 cndba cndba  17953604 Mar  1 14:38 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
drwxr-xr-x  12 cndba cndba      4096 Mar  2 07:47 zookeeper
-rw-r--r--   1 cndba cndba  37191810 Mar  1 23:12 zookeeper-3.4.13.tar.gz
[cndba@hadoopmaster ~]$
[cndba@hadoopmaster ~]$ scp -r zookeeper hadoopslave1:`pwd`
[cndba@hadoopmaster ~]$ scp -r zookeeper hadoopslave2:`pwd`

2.7 启动ZK

在所有节点启动zk并查看状态:

[cndba@hadoopslave1 data]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/cndba/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[cndba@hadoopslave1 data]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/cndba/zookeeper/bin/../conf/zoo.cfg
Mode: leader
[cndba@hadoopslave1 data]$

cndba@hadoopslave2 ~]$ vi zookeeper/data/myid 
[cndba@hadoopslave2 ~]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/cndba/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[cndba@hadoopslave2 ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/cndba/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[cndba@hadoopslave2 ~]$

[cndba@hadoopmaster ~]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/cndba/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[cndba@hadoopmaster ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/cndba/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[cndba@hadoopmaster ~]$

2.8 Zookeeper 集群连接

Zookeeper集群搭建完之后,可以通过命令行CLI连接zk。连接之后可以进行相应的客户端操作。http://www.cndba.cn/cndba/dave/article/3295

[cndba@hadoopmaster ~]$ zkCli.sh -server 192.168.20.81:2181
Connecting to 192.168.20.81:2181
2019-03-02 08:39:11,094 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
2019-03-02 08:39:11,098 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=hadoopmaster
2019-03-02 08:39:11,098 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_181
2019-03-02 08:39:11,102 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2019-03-02 08:39:11,102 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre
2019-03-02 08:39:11,102 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/home/cndba/zookeeper/bin/../build/classes:/home/cndba/zookeeper/bin/../build/lib/*.jar:/home/cndba/zookeeper/bin/../lib/slf4j-log4j12-1.7.25.jar:/home/cndba/zookeeper/bin/../lib/slf4j-api-1.7.25.jar:/home/cndba/zookeeper/bin/../lib/netty-3.10.6.Final.jar:/home/cndba/zookeeper/bin/../lib/log4j-1.2.17.jar:/home/cndba/zookeeper/bin/../lib/jline-0.9.94.jar:/home/cndba/zookeeper/bin/../lib/audience-annotations-0.5.0.jar:/home/cndba/zookeeper/bin/../zookeeper-3.4.13.jar:/home/cndba/zookeeper/bin/../src/java/lib/*.jar:/home/cndba/zookeeper/bin/../conf:.::/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/lib:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/lib
2019-03-02 08:39:11,102 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2019-03-02 08:39:11,102 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2019-03-02 08:39:11,102 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2019-03-02 08:39:11,102 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2019-03-02 08:39:11,102 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2019-03-02 08:39:11,103 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.0-957.el7.x86_64
2019-03-02 08:39:11,103 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=cndba
2019-03-02 08:39:11,103 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/home/cndba
2019-03-02 08:39:11,103 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/home/cndba
2019-03-02 08:39:11,104 [myid:] - INFO  [main:ZooKeeper@442] - Initiating client connection, connectString=192.168.20.81:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4b85612c
Welcome to ZooKeeper!
2019-03-02 08:39:11,132 [myid:] - INFO  [main-SendThread(hadoopslave1:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server hadoopslave1/192.168.20.81:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2019-03-02 08:39:11,218 [myid:] - INFO  [main-SendThread(hadoopslave1:2181):ClientCnxn$SendThread@879] - Socket connection established to hadoopslave1/192.168.20.81:2181, initiating session
[zk: 192.168.20.81:2181(CONNECTING) 0] 2019-03-02 08:39:11,249 [myid:] - INFO  [main-SendThread(hadoopslave1:2181):ClientCnxn$SendThread@1303] - Session establishment complete on server hadoopslave1/192.168.20.81:2181, sessionid = 0x20011e3dcbb0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: 192.168.20.81:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 192.168.20.81:2181(CONNECTED) 1] get /

cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: 192.168.20.81:2181(CONNECTED) 2] quit
Quitting...
2019-03-02 08:40:11,799 [myid:] - INFO  [main:ZooKeeper@693] - Session: 0x20011e3dcbb0000 closed
2019-03-02 08:40:11,802 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@522] - EventThread shut down for session: 0x20011e3dcbb0000
[cndba@hadoopmaster ~]$

关于zk CLI的内容还有很多,我们这里先了解一下,另篇博客在单独进行说明。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2262
    原创
  • 3
    翻译
  • 578
    转载
  • 192
    评论
  • 访问:8066069次
  • 积分:4349
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ