大数据技术之Zookeeper

Zookeeper是什么?


Zookeeper  = 文件系统 + 通知机制

是一个 分布式协调服务 的开源框架,主要用来解决分布式集群中应用系统的一致性问题。【同时操作数据导致脏读】
是一个基于观察者模式设计的分布式服务管理框架

①负责存储管理大家都关心的数据
②接收观察者的注册,观察节点的数据状态的变化
③负责通知已经在Zookeeper上注册的那些观察者做出相应的反应

 

Zookeeper特点


①Zookeeper:一个领导者(Leader)、多个跟随者(Follower)组成的集群   one King more soldiers
半数机制:集群中只有半数以上节点存活,Zookeeper集群就能正常服务。 1/2Alive=Success
全局数据一致:每个Server保存一份相同的数据副本,Client连接到哪一个Server,数据都是一致的。
可靠性:如果消息被其中一台服务器接收,那么将被所有服务器接收。
顺序性:更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行
数据更新原子性:一次数据更新要么成功,要么失败,不存在中间状态
实时性:Zookeeper保证客户端在一定事件内间隔范围内获取服务器的更新信息,或者服务器失效的信息。

 

 

Zookeeper分布式环境如何搭建,步骤?


Ⅰ、解压安装】:

①在已经配置好的完全分布式的集群中随机选择一个节点,例如:【hadoop01】

②将下载好的Zookeeper的tar包通过sftp协议放在节点【hadoop01】的【/opt/software】目录下

③进入到【/opt/software】目录下,通过【tar -zxvf Zookeeper-x.x.x.tar.gz -C /opt/module】将tar包解压至【/opt/module下】

④进入【/opt/module/Zookeeper-x.x.x】目录下

 ⑤进入conf目录下,将zoo_sample.cfg改为zoo.cfg【非必须的操作

[用户名@主机名 conf]$ mv zoo_sample.cfg zoo.cfg

 ⑥在【/opt/module/zookeeper-x.x.x】目录下创建一个zkData目录

 ⑦在⑤中的【zoo.cfg】中配置zkData,【key:dataDir value:zkData目录的绝对路径

 

 Ⅱ、【配置服务器编号】:

①在【/opt/module/zookeeper-x.x.x/zkData】目录下创建一个myid的文件,文件内容为主机编号

例如:【Hadoop01】的myid文件中:1

【Hadoop02】的myid文件中:2

【Hadoop03】的myid文件中:3

Ⅲ、配置【zoo.cfg】文件

①在【zoo.cfg】文件中添加

#######################cluster##########################
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

②将zoo.cfg分发至集群中其他节点

 

Zookeeper的常用命令(增、删、改、查、观察者、其他命令)


创建

create -s | -e path [version]

-s:有序添加节点,自增
-e:添加临时节点,临时节点不能添加子节点,并且会话结束,临时节点会消失。
默认情况【不添加-s|-e】下,为创建永久节点

修改:修改节点的数据

set path data [version] 修改节点的数据

path:节点的路径
data:即将覆盖节点原有数据的新数据
[version]:每一次操作都会使得指定节点的【dataVersion】+1,即版本号+1

删除

delete path:删除空节点

rmr path:递归删除非空节点

path:节点的绝对路径

查询+Observer观察者

ls path [watch]:获取当前节点下的子节点列表

ls:list的简写
path:指定节点的绝对路径
watch:是观察者模式,添加有watch,则会监控该节点的状态变化

ls2 path [watch]:查看当前节点数据及更新次数,子节点数量,创建时间等数据

path:指定节点的绝对路径
watch:是观察者模式,添加有watch,则会监控该节点的状态变化

get path [watch]:获取节点的数据

path:指定节点的绝对路径
watch:是观察者模式,添加有watch,则会监控该节点的状态变化

stat path [watch]:查看节点状态

path:指定节点的绝对路径
watch:是观察者模式,添加有watch,则会监控该节点的状态变化

其他命令

help:显示所有操作命令

history:查看历史命令

redo + 命令序号:重新执行指定命令编号的历史命令。【需要先使用history查看命令的编号

 

附:

启动Zookeeper服务:[用户名@主机名 zookeeper-x.x.x]$ bin/zkServer.sh start

停止Zookeeper服务:bin/zkServer.sh stop

重启Zookeeper服务:bin/zkServer.sh restart

查看Zookeeper服务状态:bin/zkServer.sh status

启动Zookeeper客户端:[用户名@主机名 zookeeper-x.x.x]$ bin/zkCli.sh

……

 

Zookeeper集群的角色和作用,observer的使用场景以及如何配置?


集群的角色分别为:Leader领导者】、Follower跟随者】、Observer观察者

Leader:

事务【写操作】的唯一调度者和处理者,保证集群处理事务有条不紊
是集群内部各个Server的调度者
对【create】创建、【setData】修改、【delete】删除等有写操作的请求决定编号、执行操作,即一个事务。

Follower:

处理客户端非事务【读操作】请求,将写操作【事务】的请求转发给Leader处理。
参与集群Leader选举投票。

Observer:适用于访问量较大的集群

观察Zookeeper集群的状态变化,并同步状态,对于读操作【非事务】请求可以进行独立处理,将写操作【事务】请求转发给
Leader处理。
不参与任何形式的投票只提供读操作【非事务】服务,通常用于不影响集群事务处理能力的前提下提升集群的非事务处理能力。

 

Zookeeper节点类型有哪些?


持久:客户端和服务器断开连接后,创建的节点不会删除

短暂:客户端和服务器断开连接后,创建的节点自己删除

①持久化目录节点:【create 节点路径】

②持久化顺序编号目录节点:【create -s 节点路径】

③临时目录节点:【create -e 节点路径】

④临时顺序编号目录节点:【create -s -e 节点路径】

 

Stat 结构体相关参数?


创建节点的事务ID:czxid

节点的创建时间【时间戳,从1970开始的毫秒数】:ctime

最后一次更新操作的事务ID:mzxid

最后一次更新操作的时间【时间戳,从1970年开始的毫秒数】:mtime

最后一次更新的子节点ID:pZxid

子节点变化号(更新的次数):cversion

数据变化号:dataversion

是否为临时节点的标记:ephemeralOwer 

节点的数据长度:dataLength

子节点的数量:numChildren

 

 

请简述Zookeeper的选举机制


LOOKING可以投票,非LOOKING状态不能进行投票。

①Server1启动,发起一次选举,自投一票,票数不足半数以上,选举失败,Server1为观望状态:LOOKING

②Server2启动,第二次选举,Server1和Server2各自自投一票,并交换投票结果。

Server1的ID<Server2的ID,所以,Server1改投Server2,票数不足半数,选举失败,同为LOOKING

③Server3启动,第三次选举,Server3高于Server1和Server2,Server1和Server2改投Server3,Server3自投一票,

所以投票结果为:Server1:0,Server2:0,Server3:3。Server3票数过半,Server3为Leader,Server1、2为Follower

④Server4启动,第四次选举,Server1、2、3不是LOOKING,不会更改选票信息,Server3:3,Server4:1。

Server4少数服从多数,改投Server3,并成为Follower

⑤Server5启动,与Server4一样。

 

 

请简述Zookeeper监听原理是什么?


①首先有一个main()线程

②主线程下创建Zookeeper客户端,同时创建两个线程:Listener【监听】、Connect【网络连接通信】

③Connect将注册的【Watch】监听事件发送给【Zookeeper】。

④Zookeeper将注册的【Watch】添加到监听事件的列表中。

⑤Zookeeper监听到数据或路径的变化,就会给Listener线程发信息

⑥Listener线程内部调用process()方法

附:

常见的监听
(1)监听节点数据的变化
(2)监听子节点增减的变化

 

请简述Zookeeper数据的写流程?


①客户端向Zookeeper随机Server发送写操作【事务】请求,

②Server处理请求,如果该Server不是Leader,就会将来自客户端的写操作【事务】请求转发给Leader服务器

③Leader接收到来自客户端的写操作的请求,广播到各个Server,各个Server进行写操作,成功后,给Leader发送成功的信息。

④当Leader收到半数以上Server数据写成功的信息,说明写操作执行成功,Leader会告诉接收客户端请求的Server写操作执行成功。

⑤接收客户端请求的Server通知客户端写操作执行成功。

 

 

Zookeeper的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?


Zookeeper的部署方式:本地模式安装部署分布式安装部署

集群中的角色有:一个领导者【Leader】、多个跟随者【Follower】、观察者【Observer】

Zookeeper集群搭建指的是Zookeeper分布式模式安装,通常由2n+1台Servers组成,所以集群最少需要3台机器。

 

 

 

课后作业 1. 简述zookeeper在HBase中的作用 2. 如何获取链接zookeeper的客户端的信息 3. 简述如何用zookeeper实现一个普通的一对多fifo队列 4. 使用伪代码简述mapreduce的流程和中间结果 其中input和output都是fileinputformat和fileoutputformat 5. 编写程序实现倒排索引 首先准备数据:1.txt,文件内容如下: The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures. 文件2.txt的内容如下所示: In order to scale the name service horizontally, federation uses multiple independent Namenodes/Namespaces. The Namenodes are federated, that is, the Namenodes are independent and don’t require coordination with each other. The datanodes are used as common storage for blocks by all the Namenodes. Each datanode registers with all the Namenodes in the cluster. Datanodes send periodic heartbeats and block reports and handles commands from the Namenodes. 建立类似的文件,放入/test1文件夹下 要求处理结果为: The 1.txt n 2.txt n Apache 1.txt n 2.txt n 其中,n为某个单词在某个文件出现的次数,即,格式解释为:单词iterator<所在文件 出现次数>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值