Zookeeper安装与配置
Zookeeper安装与配置一、了解 Zookeeper二、下载 Zookeeper三、安装zookeeper 具有单机模式和集群模式1、单机模式2、集群模式一、了解 ZookeeperZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。Zookeeper维护一个类似文件系统的数据结构。需要在Hado
一、了解 Zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。Zookeeper维护一个类似文件系统的数据结构。
Zab协议有两种模式:
- 恢复模式(选主)
- 广播模式(同步)
当服务启动或者在领导者崩溃后,Zab就进入了恢复模式。当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。
需要在Hadoop集群上面搭建,可以选择搭建单机模式和集群模式
二、下载 Zookeeper
下载链接:http://mirrors.hust.edu.cn/apache/zookeeper/
注:选择与Hadoop兼容版本
三、安装
解压:tar -zxvf
[root@master dev]# tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz
解压之后将文件名更改为Zookeeper
[root@master dev]# mv apache-zookeeper-3.5.8-bin.tar.gz zookeeper
在home目录下创建apps文件夹将zookeeper文件夹放入
[root@master dev]# mkdir -p /home/apps
[root@master dev]# mv zookeeper /home/apps/
[root@master dev]# ll
total 8
drwxr-xr-x. 9 centos centos 4096 Dec 19 2017 sqoop
drwxr-xr-x. 8 root root 4096 Jan 15 11:17 zookeeper
zookeeper 具有单机模式和集群模式
单机模式较简单,是指只部署一个zk进程,客户端直接与该zk进程进行通信。
在开发测试环境下,通过来说没有较多的物理资源,因此我们常使用单机模式。当然在单台物理机上也可以部署集群模式,但这会增加单台物理机的资源消耗。故在开发环境中,我们一般使用单机模式。
但是要注意,生产环境下不可用单机模式,这是由于无论从系统可靠性还是读写性能,单机模式都不能满足生产的需求。
1、单机模式
新建data和logs目录(data目录用来存放数据库快照,logs目录用来存放日志文件)
[root@master dev]# mkdir -p /home/apps/zookeeper/data
[root@master dev]# mkdir -p /home/apps/zookeeper/logs
找到zookeeper目录下的 conf 配置文件夹
[root@master dev]# cd /home/apps/zookeeper/conf/
[root@master conf]# ll
total 16
-rw-r--r--. 1 root root 535 May 4 2020 configuration.xsl
-rw-r--r--. 1 root root 2712 May 4 2020 log4j.properties
-rw-r--r--. 1 root root 922 May 4 2020 zoo_sample.cfg
-rw-r--r--. 1 root root 152 Jan 15 13:05 zoo.cfg.dynamic.next
[root@master dev]#
重命名 zoo_sample.cfg 为zoo.cfg
[root@master conf]# mv zoo_sample.cfg zoo.cfg
用vi命令打开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
配置完之后就可以直接启动Zookeeper。
[root@master conf]# cd /home/apps/zookeeper/bin
[root@master bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@master bin]#
启动成功
可以使用 status 命令查看zookeeper状态
[root@master bin]# ./zkServer.sh status
2、集群模式
与单机模式同样的方法,先新建data和logs目录,更改 zoo_sample.cfg文件名为zoo.cfg
用vi命令打开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.121:2888:3888
server.2=192.168.1.122:2888:3888
server.3=192.168.1.123:2888:3888
添加代码:
server.1=192.168.1.121:2888:3888
server.2=192.168.1.122:2888:3888
server.3=192.168.1.123:2888:3888
在data目录下面新建一个myid文件,将刚才添加代码里面server.n的n写入myid文件里面,只写入数字。
[root@master bin]# vi /home/apps/zookeeper/data/myid
1
~
~
~
~
~
~
~
~
~
~
~
"myid" [New File]
将配置好了的zookeeper文件传给另外两台服务器
先在另外两台服务器上面创建目录
slave1:
[root@slave1 ~]# mkdir -p /home/apps/zookeeper
slave2:
[root@slave2 ~]# mkdir -p /home/apps/zookeeper
用scp命令进行文件传送
注:先设置SSL免密登录
[root@master ~]#scp -r /home/apps/zookeeper root@slave1:/home/apps/
[root@master ~]#scp -r /home/apps/zookeeper root@slave2:/home/apps/
传输完成之后在slave1和slave2上面更改myid文件,将他里面的数字改为slave1与slave2对应的IP地址(上面更改的zoo.cfg文件里面添加的服务器主机名或者IP是一 一对应的)。
slave1:
[root@slave1 ~]#vi /home/apps/zookeeper/data/myid
2
~
~
~
~
~
~
~
~
~
~
~
data/myid" 1L, 2C
slave2:
[root@slave2 ~]# vi /home/apps/zookeeper/data/myid
3
~
~
~
~
~
~
~
~
~
~
~
data/myid" 1L, 2C
关闭防火墙
关闭防火墙
关闭防火墙
重要的事说三遍,防火墙很重要,非常重要,如果没有关闭防火墙,很有可能导致启动不成功。
[root@slave2 ~]# systemctl stop firewalld
[root@slave2 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
首先启动master主服务器上面的zookeeper,其次slave1和slave2
master:
[root@master ~]# cd /home/apps/zookeeper/bin
[root@master bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
slave1:
[root@master ~]# cd /home/apps/zookeeper/bin
[root@master bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
slave2:
[root@master ~]# cd /home/apps/zookeeper/bin
[root@master bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/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
启动成功
结语:大数据Hadoop笔记 Zookeeper安装与配置.
更多推荐
所有评论(0)