ZooKeeper 是一个分布式协调服务,用于分布式系统中管理配置信息、命名、同步和集群服务。它提供了一种简单的接口来访问存储在其文件系统中的数据,同时为复杂的分布式系统提供了高可用性和一致性保障。以下是 ZooKeeper 的基本原理:
1 . 数据模型和 ZNode
2 . 一致性保证
ZooKeeper 提供了一致性保障,确保以下条件:
3 . Leader 选举和复制
5 . 高可用性和容错
6 . ZAB 协议
ZooKeeper 使用的 ZAB 协议(ZooKeeper Atomic Broadcast)是一种基于投票的协议,确保了事务的顺序一致性和数据的复制。它包括两部分:选举阶段(用于选举 Leader)和 广播阶段(用于复制数据)。
7 . 典型应用
ZooKeeper 常用于分布式系统中的服务注册和发现、分布式锁、配置管理、分布式消息队列等。其高可用性和一致性特性使其成为这些场景中的关键组件。
总之,ZooKeeper 通过提供可靠的分布式协调机制和数据一致性保障,为分布式系统的构建和管理提供了强有力的支持。
1 . 环境准备
hostname | ip |
---|---|
ubuntu1 | 172.16.167.131 |
ubuntu2 | 172.16.167.132 |
ubuntu3 | 172.16.167.133 |
2 . 下载ZooKeeper 3.7.1(或其他兼容版本)的二进制文件
https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/
3 . 解压缩文件并将其移动到适当的目录:
tar -xzf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin /usr/local/zookeeper
1 . 编辑/etc/profile
文件,添加ZooKeeper的环境变量:
vim /etc/profile
2 . 添加以下内容:
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
3 . 刷新环境变量:
source /etc/profile
4 . 将环境变量分发到其他节点并刷新
1 . 进入ZooKeeper的配置目录:
cd /usr/local/zookeeper/conf
2 . 复制zoo_sample.cfg
为zoo.cfg
:
cp zoo_sample.cfg zoo.cfg
3 . 编辑zoo.cfg
文件,进行基本配置:
vim zoo.cfg
根据你的集群环境修改以下内容,目录一定要注意:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=10
syncLimit=5
server.1=ubuntu1:2888:3888
server.2=ubuntu2:2888:3888
server.3=ubuntu3:2888:3888
tickTime
:ZooKeeper中两个心跳之间的基本时间单位,以毫秒为单位。dataDir
:存储快照的目录。clientPort
:客户端连接到ZooKeeper服务器的端口。initLimit
:允许追随者(Follwer)在连接并同步到Leader之前可以进行的心跳数。syncLimit
:Leader与Follower之间发送消息、请求和响应时间的数量。server.X
:ZooKeeper集群中服务器的配置,ubuntu1
, ubuntu2
, ubuntu3
是你的服务器主机名或IP地址。1 . 在每个ZooKeeper节点上创建数据目录:
mkdir -p /var/lib/zookeeper
chmod -R 755 /var/lib/zookeeper
2 . 在每个节点的数据目录中创建myid
文件,并写入对应的服务器编号(1,2,3):
echo "1" > /var/lib/zookeeper/myid # 在ubuntu1上
echo "2" > /var/lib/zookeeper/myid # 在ubuntu2上
echo "3" > /var/lib/zookeeper/myid # 在ubuntu3上
1 . 在每个节点上启动ZooKeeper服务:
zkServer.sh start
2 . 验证每个节点ZooKeeper是否正常启动:
zkServer.sh status
1 . 修改Hadoop的core-site.xml
文件,添加ZooKeeper的Quorum配置:
vim $HADOOP_HOME/etc/hadoop/core-site.xml
2 . 添加以下内容:
<property>
<name>ha.zookeeper.quorum</name>
<value>ubuntu1:2181,ubuntu2:2181,ubuntu3:2181</value>
</property>
1 . 重新启动Hadoop集群以应用新的配置:
stop-all.sh
start-all.sh
zkCli.sh -server ubuntu1:2181
ls /
stat
创建一个新的节点:
create /mytest "testdata"
验证节点创建:
ls /
删除节点:
delete /mytest
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。