一、什么是Zookeeper

Zookeeper是Google的Chubby一个开源的实现,是一个开源的,为分布式提供协调服务的Apache项目;

它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等;

Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,
一旦这些数据的状态发生变化,Zookeeper就将负责通知已经存在Zookeeper上注册的那些观察者做出相应的反应; Zookeeper通常等于是文件系统加通知机制;

二、为什么使用Zookeeper

» 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)

» 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制

» 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器

» ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用
• Keepalived监控节点不好管理
• Keepalive 采用优先级监控
• 没有协同工作
• 功能单一
• Keepalive可扩展性差

三、Zookeeper优点

四、Zookeeper的安装和配置

以三节点为例,先配置一台,然后再分发:

1、准备、解压安装包

tar zxf zookeeper-3.4.5.tar.gz -C /usr/local/
mv /usr/local/zookeeper-3.4.5/ /usr/local/zookeeper

2、创建zk data目录

mkdir /usr/local/zookeeper/data

3、编辑配置文件

mv zoo_sample.cfg zoo.cfg

[root@spark1 conf]# vim zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/local/zookeeper/data
clientPort=2181
server.0=spark1:2888:3888
server.1=spark2:2888:3888
server.2=spark3:2888:3888 ##参数解释
• tickTime:发送心跳的间隔时间,单位:毫秒 • dataDir:zookeeper保存数据的目录。 • clientPort:客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 • initLimit: 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,
而是 Zookeeper 服务器集群中连接到 Leader 的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经
超过 5 个心跳的时间(也就是 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 实例通信端口号不能一样,所以要给它们分配不同的端口号

4、创建myid文件,设置zk节点标识

在主机1数据目录中,创建一个myid文件,并写入一个数字:0

[root@spark1 data]# vim myid
0

5、分发

##用scp命令,将zookeeper安装目录,传输到另外两台主机上;

[root@spark1 local]# scp -r /usr/local/zookeeper spark2:/usr/local/

[root@spark1 local]# scp -r /usr/local/zookeeper spark3:/usr/local/

分发完后,唯一的区别是spark2和spark3的标识号分别设置为1和2         #vim /usr/local/zookeeper/data/myid

6、启动

1、分别在三台机器上执行:zkServer.sh start

2、检查ZooKeeper状态:zkServer.sh status
3、jps   

7、client连接

启动客户端连接到服务器:
$>zkCli.sh -server hostname:2181 //进入zk命令行
$zk]help //查看帮助
$zk]quit //退出
$zk]create /a tom //创建一个数据节点,并赋值数据
$zk]get /a //查看数据
$zk]ls / //列出节点
$zk]set /a tom //设置数据
$zk]delete /a //删除一个节点
$zk]rmr /a //递归删除所有节点。

1、zookeeper入门的更多相关文章

  1. 分布式进阶(十六)Zookeeper入门基础

    Zookeeper入门基础 前言 在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置为EPHEMERAL,那么当 ...

  2. zookeeper 入门知识

    作为开启分布式架构的基石,除了必会还有的选么 自己的一些理解,有错误的话请一定要给予指正! 一.是什么? 分布式数据一致性的解决方案. 二.有什么用 数据的发布/订阅(配置中心)  . 负载均衡(du ...

  3. 学习Zookeeper之第1章Zookeeper入门

    第 1 章 Zookeeper入门 1.1 概述 1.2 特点 1.3 数据结构 1.4 应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 1.5 下载地址 第 1 章 ...

  4. [转帖]Zookeeper入门看这篇就够了

    Zookeeper入门看这篇就够了 https://my.oschina.net/u/3796575/blog/1845035 Zookeeper是什么 官方文档上这么解释zookeeper,它是一个 ...

  5. Zookeeper入门(一)之概述

    今天主要讲这么几个方面? 1.分布式应用: 2.什么是Zookeeper: 3.使用Zookkeeper有什么好处: ZooKeeper是一种分布式协调服务,用于管理大型主机.在分布式环境中协调和管理 ...

  6. ZooKeeper入门(四)

    入门:使用ZooKeeper的协调分布式应用 这个文档使你对ZooKeeper快速入门,它主要针对想尝试它的开发者.并且包含简单的单机的ZooKeeper服务的安装说明,一些验证是否运行的命令,和一个 ...

  7. Zookeeper 入门第一篇

    转载原文地址: ZooKeeper学习总结 第一篇:ZooKeeper快速入门 ZooKeeper学习总结 第二篇:ZooKeeper深入探讨 ZooKeeper学习第一期---Zookeeper简单 ...

  8. java springboot整合zookeeper入门教程(增删改查)

    java springboot整合zookeeper增删改查入门教程 zookeeper的安装与集群搭建参考:https://www.cnblogs.com/zwcry/p/10272506.html ...

  9. Zookeeper入门看这篇就够了!!

    Zookeeper是什么 官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名 ...

  10. zookeeper入门学习

    1.基本概念 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的 ...

随机推荐

  1. The driver is automatically registered via the SPI and manual loading of the driver class....

    Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdb ...

  2. 使用 kill 命令杀死 java进程,你用对了吗?

    在本地调试agent相关功能,需要经常性的杀掉Java进程,验证一些极端情况. 每次都是本能执行如下步骤 jps kill -9 <pid> reboot 有一次验证,发现代码中添加的Sh ...

  3. [开发ing] Unity项目 - Hero英雄

    目录 游戏原型 项目演示 绘图资源 代码实现 技术探讨 参考来源 游戏原型 游戏介绍:这是一款横版类魂游戏,玩家将操控Hero,在诸神黄昏的墓地中,挑战源源不断的敌人,以及近乎无敌的强大boss 灵感 ...

  4. Lipo移除ORC架构

    Lipo移除ORC架构 打包前检查链接 https://cloud.baidu.com/doc/OCR/OCR-iOS-SDK.html#FAQ cd /Users/guojun/JG-iOS/Pro ...

  5. 【转载】C#中List集合使用GetRange方法获取指定索引范围内的所有值

    在C#的List集合中有时候需要获取指定索引位置范围的元素对象来组成一个新的List集合,此时就可使用到List集合的扩展方法GetRange方法,GetRange方法专门用于获取List集合指定范围 ...

  6. js的一些较为常见的语句算法题

    下面各题解法可能存在一些时间和空间复杂度问题,有些没有做到最优化,还请谅解!!! 1.用for循环实现10的阶乘. //使用for循环方法解答 var num = 10 var sum = 1; va ...

  7. 【Win10】系统修改

    1.删除“快速访问”[操作说明]      a.打开HKEY_CLASSES_ROOT\CLSID\{679f85cb-0220-4080-b29b-5540cc05aab6}\ShellFolder ...

  8. react native报错处理com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process

    背景:最近准备在使用react-native开发的app中接入友盟,来进行用户行为统计,分享,授权登录等操作. 在使用的过程中,遇到了一些错误信息,在此记录一下. 在修改android目录下的buil ...

  9. 将html版API文档转换成chm格式的API文档

    文章完全转载自: https://blog.csdn.net/u012557538/article/details/42089277 将html版API文档转换成chm格式的API文档并不是一件难事, ...

  10. 基于TCP通过socketserver简单实现并发效果

    一.首先介绍一下 socketserver 模块中的类: 类 描述 BaseServer 包含服务器的核心功能与混合(mix-in)类的钩子功能.这个类用于派生,不要直接生成这个类的类对象 TCPSe ...