Zookeeper简介
Zookeeper是一个分布式的(多台机器同时干一件事情),开源的分布式应用程序协调服务,是Google公司Chubby产品,是Hadoop和Base重要的组件,.它是一个分布式应用程序提供一致性的服务的软件,提供的功能包括:配置服务,域名服务,分布式同步,组服务等
Zookeeper目标封装了大量的负责关键的技术(服务),将简单的接口(API)暴露,高效的使用Aookeeper,稳定性非常高
在大数据生态圈,Zookeeper(冬雨管理员)是一个非常重要的基础技术, Hadoop(大象)、Hive(蜜蜂)、Pig(猪)
Zookeeper工作机制
Zookeeper从设计模式的角度:是一个基于观察者设计模式(一个人干活,有人在盯着他干活),一个分布式服务管理框架
负责存储和管理数据:
- 接收观察者进行注册
- Zookeeper可以将负责注册好的服务通知给客户端
- 从服务器集群中进行主节点和从节点的管理模式(Master,Salve)
Zookeeper =文件系统+通知机制
- 商家营业务需要入驻
- 获取到当前正在营业的所有饭店和餐馆列表
- 服务节点下线
- 服务节点下线的时间通知
- 重新去获取最新的服务列表,并注册监听
Zookeeper特点
分布式和集群区别?
在事件的角度来看无论分布式或者是集群,都是很多服务在一起工作,分布式的每台服务器的工作不同,但是结果一致,集群的工作一致,做的是同一件事物
Zookeeper特点:
1.是一个leader和多个follower来组成的集群(例如:在狮群中,一头雄狮和N头母狮)。
2.集群中只要有半数以上的节点存活, Zookeeper就能正常工作(5台服务器挂掉2台,没问题; 4台服务器挂掉2台,就停止)。
3.全局数据一致性,每台服务器都保存一份相同的数据副本,无论Client连接哪台Server,数据都是一致的。
4.数据更新原子性,一次数据要么成功,要么失败(不成功便成仁)。
5.实时性,在一定时间范围内,Client能读取到最新数据。
6.更新的请求按照顺序执行,会按照发送过来的顺序,逐一执行(发来123 ,就执行123 ,而不是321或者别的)。
Zookeeper数据结构
1.Zookeeper数据模型类型与Linux操作系统的文件结构,整体上可以看作是一个倒挂着的树。每一 个节点称之为是一个ZookeeperNode。
2.每一个ZNode是用来保存数据,默认情况下每一个节点的保存数据大小为1MB(元数据)
3.Zookeeper元数据:表示用来描述数据的数据。又称之为中介数据、中继数据,data about data。主要是用来描述数据的属性信息(这个数据文化件的:大小、创建实现、存放位置、历史访问记录、文件记录等)
Zookeeper应用场景
提供服务服务:
统一命名服务,在分布式的环境下,通常可以对应用程序或者服务器通过一个统一的命名来识别进行访问
统一配置管理(在统一集群管理基础上实现),在分布式的环境下,配置文件做同步更新操作,可以通过监听来完成
Zookeeper管理配置文件:将配置文件写入到Zookeeper的某个节点上(需要有一台服务器来维护这个配置文件),告知客户端去监听这一台服务器上的这个文件(/Config), 一旦该节点上的这个文件中的数据发生了改变,Zookeeper就可以通过通知来告诉所有的客户端,客户端即完成了同步(数据同步)
服务节点动态上下线,客户端能够实时的获取服务器的状态,服务器上下线的状态。服务器实现的运行状态可以被Zookeeper获取(心跳机制)
软负载均衡,Zookeeper会记录每一台服务器访问的次数,让访问最少的服务器去处理最新的请求,请求被均匀分发到集群中每一台服务器上(雨露均沾的效果)
在Linux虚拟机中安装Zookeeper
1.下载Zookeeper的安装包: Index of /dist/zookeeper
2.通过xftp软件将压缩包上传到linux中的opt目录下
3.解压该压缩包
tar -xzvf apache-zookeeper-3.8.0-bin.tar.gz
4.将该压缩包重命名为zookeeper
mv apache-zookeeper-3.8.0-bin zookeeper
5.进入到zookeeper的目录下,创建zkData和zkLog两个目录
cd /opt/zookeeper
mkdir zkData
mkdir zkLog
6.修改配置文件,进入/opt/zookeeper/conf这个路径,复制一份zoo_sample.cfg文件并命名为zoo.cfg。
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
7.编辑zoo.cfg的文件
vi zoo.cfg
按i或a进入编辑命令,修改配置文件,修改完后按esc,在英文状态下输入 :wq 保存退出
dataDir=/opt/zookeeper/zkData dataLogDir=/opt/zookeeper/zkLog
8.查看刚刚的配置
.
cat -n zoo.cfg
9.进入到zookeeper的bin目录下
cd /opt/zookeeper/bin
启动zookeeper
./zkServer.sh start
查看zookeeper的状态
./zkServer.sh status
10.启动zookeeper客户端
./zkCli.sh
退出zookeeper客户端
quit
11.终止zookeeper的服务
./zkServer.sh stop