ZooKeeper架构图:

1、ZooKeeper的基本概念

Zookeeper是hadoop的分布式协调服务,分布式应用程序可以基于它实现同步服务(数据的事务性一致),配置服务和命名服务.
Zookeeper是一个有多个Server组成的集群.
1>一个leader,多个follower
2>每个server保存一份数据副本
3>全局数据一致
4>分布式读写
5>更新请求转发,有leader实施

2、ZooKeeper集群搭建的过程

ZK集群搭建的前提:ZK服务器集群规模不小于3个节点,要求各服务器之间系统时间保持一致(若是单个节点,则是伪分布).
①解压缩Zookeeper,并设置环境变量.

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=.:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

②修改Zookeeper的配置文件zoo.cfg,在配置文件中指定zk存放数据的目录以及节点对应的服务器编号(ID).

格式:

dataDir=/usr/local/zk/data/
 server.N=YYY:2888:3888

具体含义:

YYY这个节点对应的服务器编号为N

其中N为节点对应的服务器编号、YYY为节点、2888这个端口负责在zk集群中进行数据的传输、3888这个端口负责在zk集群中进行选举

(2181是客户端程序使用的端口)

如:

server.1=hadoop11:2888:3888
 server.2=hadoop22:2888:3888
 server.3=hadoop33:2888:3888

③创建zk存放数据的目录. mkdir /usr/local/zk/data

④在data目录下,创建文件myid,并在myid文件中绑定节点对应的服务器编号,即N。

zookeeper集群安装部署 zookeeper集群架构_数据


⑤启动,在三个节点上分别执行命令zkServer.sh start

⑥检验,在三个节点上分别执行命令zkServer.sh status.检验选举机制,同时查看对应的Java进程QuorumPeerMain.

集群搭建原则:在zk集群搭建的过程中,以zk的伪分布安装为主线,由内向外逐渐扩展zk集群.

3、为什么使用Zookeeper

1>大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
2>目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制
3>协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
4>ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用

4、Zookeeper的作用

1>zk可以用来保证数据在zk集群之间的数据的事务性一致
2>Hadoop2.0中,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等
3>HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.

5、如何理解Zookeeper中的事务性一致

如果当某一个客户端Client在zk上面做了一个数据的变更、或者是增加了一个数据、删除了一个数据等等.那么这个Server会把这个变化同步到其它服务器上面,同步之后所有的客户端Client都可以获得这个最新的变化.

6、如何理解Zookeeper的数据模型

zk中有一个类似Linux文件系统的目录结构,但是目录结构在Zookeeper中叫做节点,这些节点的特点:可以赋值、可以取值、可以添加、可以删除.Zk可以用来保持数据在集群之间的数据的一致性.

zookeeper集群安装部署 zookeeper集群架构_hadoop_02


代码查看:

zookeeper集群安装部署 zookeeper集群架构_hadoop_03

7、简述zk中常用的命令

ls / :查看zk的目录结构
 create :创建一个节点并给它赋值
 get :获取某一个节点的数值
 set :设置某一个节点的数值
 zkServer.sh start:开启zk集群的服务模式
 zkCli.sh:进入客户端模式

8、简述Zk节点的分类

当我们创建的这个节点依赖于当前链接的时候,即若链接中断,节点不存在,称为短暂类型
若节点不因为链接中断而丢失称为持久类型。