zookeeper的部署和使用

本文介绍ZooKeeper的部署及配置,并探讨其在Katta集群中的作用,包括节点间的消息传递、状态监控和一致性保障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1 zookeeper 的部署和使用

1.1.1系统描述

ZooKeeper是一个高可用、高可靠的协同工作系统,分布式程序可以用ZooKeeper保存并更新关键共享状态。

Katta使用zookeeper保证主节点和搜索节点的有效性,指派索引文件给搜索节点,察觉搜索节点的失效等。

1.1.2 安装和配置

安装zookeeper也很简单,下载zookeeper-3.1.1.tar.gz,解压到/home/hezhiming/zookeeper-3.1.1。zookeeper要部署到各台机器的相同目录下,且具有相同的配置文件。

Zookeeper 的配置文件主要有以下两个:

1、/zookeeper -3.1.1/conf/zoo.cfg:

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

dataDir=/home/nutch/zookeeper-3.1.1/zookeeper-data

# the port at which the clients will connect

clientPort=3355

# 2888,3888 are election port

server.1=devcluster01:2555:3555

server.2=devcluster05:2555:3555

server.3=devcluster06:2555:3555

注明:2555端口号是zookeeper服务之间通信的端口,而3555是zookeeper与其他应用程序通信的端口。

2、myid(在zoo.cfg 配置的dataDir目录下,此处为/home/nutch/zookeeper-3.1.1/zookeeper-data)

注意: Myid中的值与server的编号相同:

devcluster01上的myid:

1

devcluster05上的myid:

2

devcluster06上的myid:

3

1.1.3 启动zookeeper

到每台zookeeper server的目录下,执行:

启动 ./bin/zkServer.sh start

关闭 ./bin/zkServer.sh start

1.1.4zookeeper的使用

zookeeper启动之后,不需要执行命令,只需查看批准的状况,命令如下:

1、ruok - The server will respond with imok if it is running. Otherwise it will not respond at all.

2、kill - When issued from the local machine, the server will shut down.

3、dump - Lists the outstanding sessions and ephemeral nodes. This only works on the leader.

4、stat - Lists statistics about performance and connected clients.

例如:

 $echo ruok | nc 127.0.0.1 3355

Imok$ 

2.1 Katta和zookeeper的关系

2.4.1 什么是zookeeper?

zookeeper是针对分布式应用的分布式协作服务,它的目的就是为了减轻分布式应用从头开发协作服务的负担。

它的基本功能是命名服务(naming),配置管理(configuration management),同步(synchronization)和组服务 (group services)。在此基础上可以实现分布式系统的一致性,组管理,Leader选举等功能。

一个zookeeper机群包含多个zookeeper服务器,这些Server彼此都知道对方的存在。 Zookeeper系统结构图如图2所示:

 

zookeeper的部署和使用

                图2    zookeeper系统结构图

 

l所有的Server都保存有一份目前zookeeper系统状态的备份;

2在zookeeper启动的时候,会自动选取一个Server作为Leader,其余的Server都是Follower;

3作为Follower的Server服务于Client,接受Client的请求,并把Client的请求转交给Leader,由Leader提交请求。

4Client只与单个的zookeeper服务器连接。Client维护一个持久TCP连接,通过其发送请求, 获取响应和事件,并发送心跳信息。如果Client到Server的TCP连接中断, Client将会连接到另外一个Server。

5zookeeper机群的鲁棒性是我们使用它的原因,只要不超过半数的服务器当机(如果正常服务的服务器数目不足一半,那么原有的机群将可能被划分成两个信息无法一致的zookeeper服务),该服务就能正常运行。

2.4.2 zookeeper的虚拟文件系统

Zookeeper允许多个分布在不同服务器上的进程基于一个共享的、类似标准文件系统的树状虚拟文件系统来进行协作。虚拟文件系统中的每个数据节点都称作一个znode。每个znode都可以把数据关联到它本身或者它的子节点.如图3所示:

zookeeper的部署和使用

         图3 zookeeper的虚拟文件系统目录结构

1每个znode的名称都是绝对路径名来组成的,如“/katta/index/index_name”等。

2读取或写入znode中的数据都是原子操作,read会获取znode中的所有字节, write会整个替换znode中的信息.每个znode都包含一个访问控制列表(ACL)以约束该节点的访问者和权限.

3有些znode是临时节点.临时节点在创建它的session的生命周期内存活, 当其session终止时,此类节点将会被删除.

4zookeeper提供znode监听器的概念. Client可以在某个znode上设置监听器以监听该znode的变更. 当znode有变更时, 这些Client将会收到通知,并执行预先敲定好的函数。

那么Zookeeper能为我们做什么事情呢?简单的例子:假设这样一个系统:

20个搜索引擎的服务器(每个服务器负责一部分索引的搜索任务), 每个搜索引擎的服务器有时提供搜索服务有时生成索引,但不能同时做这两件事;

2 一个总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集) ;

3 一个备用的总服务器(负责当总服务器宕机时替换总服务器) ;

4 一个web的cgi(向总服务器发出搜索请求) 。

使用Zookeeper可以保证:

1.总服务器自动感知有多少台服务器可以提供搜索服务,并向这些服务器发出搜索请求;

2.总服务器当机时自动启用备用的总服务器;

3.Web的cgi能够自动地获知总服务器的网络地址变化。

这些都可以通过zookeeper的虚拟文件系统来实现,把这些状态信息,配置,位置等信息都保存于znode中,znode是被所有服务器共享的,通过znode及其数据的变化来完成服务器之间的协作。

2.4.3 Katta与zookeeper的关系

Katta使用zookeeper保证Master主节点和Node子节点的有效性,在Master主节点和Node子节点之间传递消息,保存一些配置信息,保证文件读取的一致性等。

2 Master管理服务器, Node检索服务器和Client服务器之间的通信就是通过zookeeper来实现的。

Client服务器可以直接从zookeeper服务中读取Node检索服务器列表,并向Node检索服务器发送检索请求,最后从Node检索服务器得到结果,不必经过Master管理服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值