什么是zookeeper?为什么zookeeper在大数据领域如此重要?下面我们从最基础的开始了解。
zookeeper是一个分布式协调服务的开源框架。其主要作用是用来解决分布式集群中的数据一致性问题。zookeeper本质上是一个小文件系统。其数据结构类似于文件系统的目录树,zookeeper可以对这些节点进行有效的管理。通过节点管理,来达到监控和维护节点数据的目标。通过监控数据的变化,来达到管理集群的目的。常见的应用如:配置管理、名称服务、分布式消息队列、分布式锁、分布式协调服务等。
zookeeper特性
数据一致性:在zookeeper集群中,每个server都保存着一份相同的数据副本,client无论连接到哪一个server,展示的数据都是一致的,这是zookeeper一个非常重要的特性,也是其在大数据领域广泛应用的基础。
可靠性:如果客户端请求被任意一个server接受,那么该请求就会被整个集群接受。
顺序性:有全局有序和偏序两种。全局有序是指如果在一台server上,消息a在消息b先发布,那么在所有server上,消息a都在消息b先发布。而偏序是指消息a在消息b前被同一个server发布,那么消息a必定在消息b的前面。
数据更新的原子性:一次数据更新要么成功,要么失败,不存在中间状态。
实时性:zookeeper保证客户端在一定的时间间隔内获得服务器的响应,无论是成功还是失败。
zookeeper角色
leader:是集群正常工作的核心。事务性(写操作)请求的唯一处理者和调度者。集群内部的管理者和调度者。
follower:处理非事务性请求,参与集群leader选举,转发事务性请求给leader.
observer:处理非事务性请求,不参与leader选举,转发事务性请求给leader。如果集群的读请求很多,可以添加observer角色,提高集群的非事务处理能力。
zookeeper安装
zookeeper的安装分为单机版和集群版,单机版主要用来调试。下面我们演示在虚拟机中安装集群版。zookeeper集群通常由奇数个节点组成,这是为了保证集群leader的选举(基于paxos算法,此篇文章不做介绍)。本次演示使用3台机器如何安装zookeeper集群。
1.安装jdk,三台机器都要安装
- 下载地址https://www.oracle.com/technetwork/java/javase/downloads
- /index.htmljdk-8u211-linux-x64.rpm#安装rpm -ivh jdk-8u211-linux-
- x64.rpm#切换javaalternatives --config java
2.下载zookeeper安装包
- 下载地址:https://archive.apache.org/dist/zookeeper/安装包版本:zookeeper-3.4.5.tar.gz
3.配置主机名映射
- vim /etc/hosts192.168.80.10 node1192.168.80.11 node2192.168.80.12 node3
4.修改zookeeper配置文件
- tar -zxvf zookeeper-3.4.5.tar.gz -C /servers/cd /serversln -s
- zookeeper-3.4.5/ zookeepercd /servers/zookeeper/confcp zoo_sample.cfg
- zoo.cfgvim zoo.cfg#在zoo.cfg中添加如下配置信息
- tickTime=2000dataDir=/servers/zookeeper
- /dataclientPort=2181server.1=node1:2888:3888server.2=node2:2888:3888s
- erver.3=node3:2888:3888
5.设置myid文件
myid文件只包含一个数字,数值范围在1-255,myid文件的位置在数据目录下,由dataDir参数指定
- cd /servers/zookeeper/dataecho 1 > myid注意myid中的值必须是唯一的,在
- 这里我们三台机器分别设置为1,2,3
启动zookeeper
- ./zkServer.sh start
7.查看角色状态
- /servers/zookeeper/bin/zkServer.sh status
zookeeper集群环境已经搭建好了,下一篇文章我们看看如何使用zookeeper,zookeeper又有哪些有趣的特性。