北京做网站公司哪家好,一键下载微信,页面优化的方法,杭州软件开发公司排名文章目录 1.基本原理2.下载并解压ZooKeeper3.配置环境变量4.配置ZooKeeper5.创建数据目录并初始化myid6.启动ZooKeeper7.配置ZooKeeper集成到Hadoop8.重启Hadoop9.ZooKeeper状态检查 1.基本原理
ZooKeeper 是一个分布式协调服务#xff0c;用于分布式系统中管理配置信息、命名… 文章目录 1.基本原理2.下载并解压ZooKeeper3.配置环境变量4.配置ZooKeeper5.创建数据目录并初始化myid6.启动ZooKeeper7.配置ZooKeeper集成到Hadoop8.重启Hadoop9.ZooKeeper状态检查 1.基本原理
ZooKeeper 是一个分布式协调服务用于分布式系统中管理配置信息、命名、同步和集群服务。它提供了一种简单的接口来访问存储在其文件系统中的数据同时为复杂的分布式系统提供了高可用性和一致性保障。以下是 ZooKeeper 的基本原理
1 . 数据模型和 ZNode
数据模型ZooKeeper 以分层命名空间的方式存储数据类似于文件系统。每个节点称为一个 ZNode。ZNodeZNode 是 ZooKeeper 中的基本数据单元可以存储少量数据。它有两种类型 持久节点Persistent ZNode即使客户端断开连接或系统重启节点数据也会一直存在。临时节点Ephemeral ZNode客户端会话结束时自动删除。顺序节点Sequential ZNode自动在名称末尾附加一个单调递增的数字。
2 . 一致性保证
ZooKeeper 提供了一致性保障确保以下条件
原子性操作要么成功要么失败没有中间状态。顺序一致性所有操作按照它们的执行顺序进行。单一系统映像所有客户端无论连接到哪个 ZooKeeper 服务器看到的数据都是一致的。耐久性一旦操作成功执行数据将被持久化不会丢失。及时性在合理的时间内客户端可以看到最近的系统状态。
3 . Leader 选举和复制
集群角色ZooKeeper 集群由多个服务器节点组成其中一个节点是 Leader其余是 Follower。Leader 选举在集群启动或 Leader 故障时ZooKeeper 使用选举算法如基于 ZAB 协议的选举选举新的 Leader。数据复制Leader 负责处理所有的写请求并将更新同步到所有 Follower从而保持数据一致性。读请求可以由任何 Follower 处理。
会话和 Watcher
会话客户端与 ZooKeeper 服务器之间的连接称为会话。会话有超时机制如果客户端在指定时间内没有发送心跳包ZooKeeper 将认为会话结束。WatcherZooKeeper 提供了一种监控机制称为 Watcher。客户端可以在 ZNode 上设置 Watcher当节点状态发生变化时ZooKeeper 会通知客户端。这种机制常用于配置管理、命名服务和分布式锁等场景。
5 . 高可用性和容错
高可用性ZooKeeper 依赖于集群的多台服务器提供服务即使部分节点故障也能继续提供服务。容错性ZooKeeper 能容忍少数节点的故障而无需停止服务。只要集群中的活跃节点数量超过总节点数的一半即超过多数节点ZooKeeper 就能继续正常工作。
6 . ZAB 协议
ZooKeeper 使用的 ZAB 协议ZooKeeper Atomic Broadcast是一种基于投票的协议确保了事务的顺序一致性和数据的复制。它包括两部分选举阶段用于选举 Leader和 广播阶段用于复制数据。
7 . 典型应用
ZooKeeper 常用于分布式系统中的服务注册和发现、分布式锁、配置管理、分布式消息队列等。其高可用性和一致性特性使其成为这些场景中的关键组件。
总之ZooKeeper 通过提供可靠的分布式协调机制和数据一致性保障为分布式系统的构建和管理提供了强有力的支持。
2.下载并解压ZooKeeper
1 . 环境准备
hostnameipubuntu1172.16.167.131ubuntu2172.16.167.132ubuntu3172.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/zookeeper3.配置环境变量
1 . 编辑/etc/profile文件添加ZooKeeper的环境变量
vim /etc/profile2 . 添加以下内容
export ZOOKEEPER_HOME/usr/local/zookeeper
export PATH$PATH:$ZOOKEEPER_HOME/bin3 . 刷新环境变量
source /etc/profile4 . 将环境变量分发到其他节点并刷新 4.配置ZooKeeper
1 . 进入ZooKeeper的配置目录
cd /usr/local/zookeeper/conf2 . 复制zoo_sample.cfg为zoo.cfg
cp zoo_sample.cfg zoo.cfg3 . 编辑zoo.cfg文件进行基本配置
vim zoo.cfg根据你的集群环境修改以下内容,目录一定要注意
tickTime2000
dataDir/var/lib/zookeeper
clientPort2181
initLimit10
syncLimit5server.1ubuntu1:2888:3888
server.2ubuntu2:2888:3888
server.3ubuntu3:2888:3888tickTimeZooKeeper中两个心跳之间的基本时间单位以毫秒为单位。dataDir存储快照的目录。clientPort客户端连接到ZooKeeper服务器的端口。initLimit允许追随者Follwer在连接并同步到Leader之前可以进行的心跳数。syncLimitLeader与Follower之间发送消息、请求和响应时间的数量。server.XZooKeeper集群中服务器的配置ubuntu1, ubuntu2, ubuntu3是你的服务器主机名或IP地址。用scp命令将zookeeper分发到所有节点。 5.创建数据目录并初始化myid
1 . 在每个ZooKeeper节点上创建数据目录
mkdir -p /var/lib/zookeeper
chmod -R 755 /var/lib/zookeeper2 . 在每个节点的数据目录中创建myid文件并写入对应的服务器编号123
echo 1 /var/lib/zookeeper/myid # 在ubuntu1上
echo 2 /var/lib/zookeeper/myid # 在ubuntu2上
echo 3 /var/lib/zookeeper/myid # 在ubuntu3上6.启动ZooKeeper
1 . 在每个节点上启动ZooKeeper服务
zkServer.sh start2 . 验证每个节点ZooKeeper是否正常启动
zkServer.sh status7.配置ZooKeeper集成到Hadoop
1 . 修改Hadoop的core-site.xml文件添加ZooKeeper的Quorum配置
vim $HADOOP_HOME/etc/hadoop/core-site.xml2 . 添加以下内容
propertynameha.zookeeper.quorum/namevalueubuntu1:2181,ubuntu2:2181,ubuntu3:2181/value
/property8.重启Hadoop
1 . 重新启动Hadoop集群以应用新的配置
stop-all.sh
start-all.sh9.ZooKeeper状态检查
使用ZooKeeper命令行客户端检查ZooKeeper的状态
zkCli.sh -server ubuntu1:2181在ZooKeeper命令行客户端中可以输入以下命令来检查集群状态
ls /
stat创建一个新的节点
create /mytest testdata验证节点创建
ls /删除节点
delete /mytest