zookeeper 的安装配置及简单使用
===> Zookeeper 是什么?
=> ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。
=> ZooKeeper包含一个简单的原语集,提供Java和C的接口。
=> ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本
===> Zookeeper应用场景(功能):
=> 它是一个为分布式应用提供一致性服务的软件,提供的功能包括:
配置维护、域名服务、分布式同步、组服务等。
=> ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
===> Zookeeper体系结构
===> Zookeeper 工作原理:
=> Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。
=> Zab协议有两种模式: 恢复模式(选主)和广播模式(同步)。
当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。
()状态同步保证了leader和Server具有相同的系统状态。
=> 为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。
实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。
低32位用于递增计数。
()对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,so,你可以在任何一个结点上建立到服务集群的连接
===> Zookeeper 安装
=>搭建ZooKeeper的集群环境
1、三台:bigdata12 bigdata13 bigdata14
时间同步
2、在bigdata12上进行安装
(*) 解压 tar -zxvf zookeeper-3.4.10.tar.gz -C ~/training/
(*) 设置环境变量:每台机器上
ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10
export ZOOKEEPER_HOME
PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
(*)核心的配置文件: conf/zoo.cfg
mkdir /root/training/zookeeper-3.4.10/tmp
编辑 zoo.cfg
dataDir=/root/training/zookeeper-3.4.10/tmp
server.1=bigdata12:2888:3888
server.2=bigdata13:2888:3888
server.3=bigdata14:2888:3888
在/root/training/zookeeper-3.4.10/tmp目录创建文件: myid
输入 1
3、把bigdata12的ZK复制到其他的节点
scp -r zookeeper-3.4.10/ root@bigdata13:/root/training
scp -r zookeeper-3.4.10/ root@bigdata14:/root/training
4、修改bigdata13和bigdata14上的myid文件
5、在每台机器上,启动ZK: zkServer.sh start
===> 配置文件
=> zookeeper-3.3.3/conf文件夹下面(可以把默认的zoosample.cfg复制一份到zoo.cfg),配置文件zoo.cfg需要在每台服务器中都要编写,以下是一个配置文件的样本:
# Filename zoo.cfg
tickTime=2000
dataDir=/home/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=202.115.36.251:2888:3888
server.2=202.115.36.241:2888:3888
server.3=202.115.36.242:2888:3888
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,
那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒。
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
server.A=B:C:D
A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 ip 地址;
C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
=> 创建myid文件
除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就只有一个数据就是 A 的值,Zookeeper 启动时会读取这个文
件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。这个myid的值要和配置文件中的server.x=ip:port:port中的x一致。
echo 1 > myid
===> Zookeeper 操作
=> 查看zookeeper 的状态: zkServer.sh status
=> 通过 zookeeper 客户端连接:
zkCli.sh -server 192.168.10.221:2181
=> 查看znode节点:
ls /
=> 创建znode节点(数据):
create /test "hello"
=> 获取znode节点数据:
get /test
=> 修改znode节点数据:
set /test "word"
=> 删除znode 节点:
delete /test
===> 清除zk状态
当在zk上已经做了很多事情,配置已经比较杂乱,现在想重新初始化一下,也就是把所有状态删除,步骤是:
=> 关闭所有zk节点,用zkServer.sh status查看是否关闭
=> 删除zoo.cfg定义的数据文件夹下的所有文件,除了myid文件外
=> 启动zk节点
现在配置就重置了
===> 常见问题
在用zkCli.sh启动客户端时,Will not attempt to authenticate using SASL (无法定位登录配置)
这是由于没有启用用户验证导致的,不影响使用,但影响安全性。SASL 即:Simple Authentication and Security Layer
本文转自 tianshuai369 51CTO博客,原文链接:http://blog.51cto.com/songqinglong/2062909
zookeeper 的安装配置及简单使用相关推荐
- Web基础配置篇(十一): Zookeeper的安装配置及使用
Web基础配置篇(十一): Zookeeper的安装配置及使用 一.概述 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop ...
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...
- windows环境下Zookeeper的安装配置调试
了解Zookeeper:----> https://blog.csdn.net/gs80140/article/details/51496925 安装jdk 安装Zookeeper. 在官网 ...
- Zookeeper的安装配置及基本开发
一.简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. ZooKeeper的目标就 ...
- Redis的安装配置及简单集群部署
最近针对中铁一局项目,跟事业部讨论之后需要我们的KF平台能够接入一些开源的数据库,于是这两天研究了一下Redis的原理. 1. Redis的数据存储原理及简述 1.1Redis简述 Redis是一个基 ...
- ETCD集群安装配置及简单应用
一.环境准备 CentOS Linux release 7.3.1611 (Core) etcd-v3.2.6 二.ETCD下载 https://github.com/coreos/etcd/rele ...
- Gitlab安装配置及简单问题处理
Git 是版本控制系统 Github 是在线的基于Git的代码托管服务 Gitlab 可以在上面创建免费的私人repo 建议(少走弯路) 1.Gitlab本身很容易安装,整个安装包也就300M,下载到 ...
- 图像识别---Windows下anaconda和yolov5安装配置及简单使用
anaconda安装 anaconda安装一种是直接从官网下载,但是因为源是国外的,下载速率十分缓慢.并且还很容易断开,本文就不介绍了.另一种则是从国内清华源下载,连接比较稳定.推荐!!! 下载地址h ...
- HugeGraph-Hubble安装配置和简单使用
前言 在HugeGraph官网上并没有关于HugeGraph-Hubble的安装配置,只有使用文档,所以对学习和开发人员不太友好.本文着重于HugeGraph-Hubble的安装和配置. 在进行安装之 ...
最新文章
- 多目标跟踪算法FairMOT深度解析
- Oracle计算两个整数的和与这两个整数的差与商
- 零基础学Java编程一定要上Java培训机构吗
- MyBatis 编程式开发中的核心对象及其作用?
- PowerShell远程管理Windows Server(2):公网访问【web形式】
- oracle ocx加载错误,flash9.ocx 加载错误解决方法
- 【jQuery】jQuery操作input的聚焦与全选其内容
- mysql简单的数据提取代码_MYSQL提取非常简单的数据,chrome浏览器响应过长,如何优化?...
- 色彩空间(CIE色度图,SRGB,AdobeRGB...)
- 时间序列度量算法之SBD
- HTML 常用选择框
- 浮动定位弹性页面的布局。
- Zynga公布2020年第二季度财务业绩
- 有关人、社会的本质的思考--现代的捕蛇者说
- 速率法和终点法的区别_两点法终点法速率法
- Spartan6系列之时钟资源详解
- 信息系统项目管理师备考资料-第三版(4)
- afn访问本地html,请求接口AFN报错1016,failed:unacceptablecontent-type:text/html解决办法...
- 中标麒麟——初次体验,感觉流畅
- 使用MyQR制作二维码
热门文章
- 字典树(Trie树)
- Android Studio常用Plugin及 手动安装 Plugins
- onnx模型推理(python)
- 视频会议H.323协议SIP协议
- java.lang包—基本类型的封装类
- 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot
- java模拟单链表环形链表解决约瑟夫问题
- 在jenkins上配置Android项目(git管理,gradle构建)
- gulp前端构建化工具,帮你搞定不同浏览器的兼容性写法问题
- mysq数据库再次理解