一、zookeeper介绍

1、概述

  Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

2、特点

  • 1)Zookeeper:一个领导者(leader),多个跟随者(follower)组成的集群。

  • 2)Leader负责进行投票的发起和决议,更新系统状态。

  • 3)Follower用于接收客户请求并向客户端返回结果,在选举Leader过程中参与投票。

  • 4)集群中奇数台服务器只要有半数以上节点存活,Zookeeper集群就能正常服务。

  • 5)全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。

  • 6)更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行。

  • 7)数据更新原子性,一次数据更新要么成功,要么失败。

  • 8)实时性,在一定时间范围内,client能读到最新数据。

3、数据结构

  ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的元数据,每个ZNode都可以通过其路径唯一标识。数据结构图:

4、应用场景

  提供的服务均包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、负载均衡等。

  • 1)统一命名服务

  • 1)统一配置管理

(1)分布式环境下,配置文件管理和同步是一个常见问题

  一个集群中,所有节点的配置信息是一致的,比如hadoop集群。

  对配置文件修改后,希望能够快速同步到各个节点上。

(2)配置管理可交由ZK实现

  可配置信息写入ZK上的一个Znode

  各个节点监听这个ZNode

  一旦Znode中的数据被修改,ZK将通知各个节点

  • 3、统一集群管理

(1)分布式环境中,实时掌握每个节点的状态是必要的。

  可根据节点实时做出一些调整

(2)可交由Zk实现

  可将节点信息写入ZK上的一个ZNode

  监听这个Znode可获取它的实时状态变化

(3)典型应用

  HBase中Master状态监控与选举

(4)集群管理结构图如下所示:

4、服务器节点动态上下线

  • 5、软负载均衡

5、下载地址

二、Zookeeper安装

1、安装前准备:
  • 1)安装jdk。

  • 2)上传zookeeper到linux系统下。

  • 3)修改tar包权限。

[itstar@bigdata111 software]$ chmod u+x zookeeper-3.4.10.tar.gz
  • 4)解压到指定目录
[itstar@bigdata111 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/

  • 5)配置环境变量
[root@bigdata111 software]$ vi /etc/profile
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

2、配置修改

  • 将/opt/module/zookeeper-3.4.10/conf这个路径下的zoo_sample.cfg修改为zoo.cfg;
[itstar@bigdata111 zookeeper-3.4.10]$mv zoo_sample.cfg  zoo.cfg

//进入zoo.cfg文件:vim zoo.cfg
//修改dataDir路径为
dataDir=/opt/module/zookeeper-3.4.10/zkData //在/opt/module/zookeeper-3.4.10/这个目录上创建zkData文件夹
[itstar@bigdata111 zookeeper-3.4.10]$ mkdir zkData

3、操作zookeeper

  • 1)启动zookeeper
[itstar@bigdata111 zookeeper-3.4.10]$ bin/zkServer.sh start
  • 2)查看进程是否启动
[itstar@bigdata111 zookeeper-3.4.10]$ jps
--------------------------
4020 Jps
4001 QuorumPeerMain
  • 3)查看状态:
[itstar@bigdata111 zookeeper-3.4.10]$ bin/zkServer.sh status
----------------------------------
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: standalone
  • 4)启动客户端:
[itstar@bigdata111 zookeeper-3.4.10]$ bin/zkCli.sh
  • 5)退出客户端:
[zk: localhost:2181(CONNECTED) 0] quit

  • 6)停止zookeeper
[itstar@bigdata111 zookeeper-3.4.10]$ bin/zkServer.sh stop

2、配置参数解读

  解读zoo.cfg文件中参数含义

  • 1)tickTime=2000:通信心跳数,Zookeeper服务器心跳时间,单位毫秒

  Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。

  它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)

  • 2)initLimit=10:Leader和Follower初始通信时限

  集群中的follower跟随者服务器与leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。

  投票选举新leader的初始化时间

Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。

  Leader允许Follower在initLimit时间内完成这个工作。

  • 3)syncLimit=5:Leader和Follower同步通信时限

  集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

  在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。

  如果L发出心跳包在syncLimit之后,还没有从F那收到响应,那么就认为这个F已经不在线了。

  • 4)dataDir:数据文件目录+数据持久化路径

  保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。

  • 5)clientPort=2181:客户端连接端口

  监听客户端连接的端口。

Zookeeper学习笔记一的更多相关文章

  1. ZooKeeper 学习笔记

    ZooKeeper学习笔记 1.   zookeeper基本概念 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和Habase的重要组件,是为分布式应用提供一致性服 ...

  2. ZooKeeper学习笔记(二)——内部原理

    zookeeper学习笔记(二)--内部原理 1. zookeeper的节点的类型 总的来说可以分为持久型和短暂型,主要区别如下: 持久:客户端与服务器端断开连接的以后,创建的节点不会被删除: 持久化 ...

  3. ZooKeeper学习笔记(一)——概述

    zookeeper学习笔记(一)--概述 1. 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目.zookeeper从设计模式的角度来理解:是一个基于观察者设计 ...

  4. Zookeeper学习笔记(中)

    Zookeeper学习笔记(中) Zookeeper的基本原理和基本实现 深入了解ZK的基本原理 ZK的一致性: ZAB 协议: Zookeeper 原子消息广播协议 ZK通过选举保证 leader ...

  5. Zookeeper学习笔记(上)

    Zookeeper学习笔记 本篇主要是一些基本的介绍和API的使用介绍, 有些只是记录了知识点,而没有完全在笔记中详细解释, 需要自行查找资料补充相关概念 主要参考了课程中的内容: Zookeeper ...

  6. ZooKeeper学习笔记一:集群搭建

    作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...

  7. ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心

    作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...

  8. ZooKeeper学习笔记二:API基本使用

    Grey ZooKeeper学习笔记二:API基本使用 准备工作 搭建一个zk集群,参考ZooKeeper学习笔记一:集群搭建. 确保项目可以访问集群的每个节点 新建一个基于jdk1.8的maven项 ...

  9. ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁

    作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...

  10. Zookeeper学习笔记(下)

    这是ZK学习笔记的下篇, 主要希望可以分享一些 ZK 的应用以及其应用原理 我本人的学习告一段落, 不过还遗留了一些ZK相关的任务开发和性能测试的任务, 留待以后完成之后再通过其他文章来进行分享了 Z ...

随机推荐

  1. springCloud进阶(微服务架构&Eureka)

    springCloud进阶(微服务架构&Eureka) 1. 微服务集群 1.1 为什么要集群 为了提供并发量,有时同一个服务提供者可以部署多个(商品服务).这个客户端在调用时要根据一定的负责 ...

  2. 关于hp proliant sl210t服务器raid 1阵列配置(HP P420/Smart Array P420阵列卡配置)

    hp proliant sl210t服务器,一般都会带有两个阵列卡 一个服务器自带的Dynamic Smart Array B120i RAID控制器,一个为Slot卡槽上的Smart Array P ...

  3. Codeforces Round #340 (Div. 2) E XOR and Favorite Number 莫队板子

    #include<bits/stdc++.h> using namespace std; <<; struct node{ int l,r; int id; }q[N]; in ...

  4. 广度优先搜索BFS---求出矩阵中“块”的个数

    题目: 给出一个 m x n 的矩阵,矩阵中的元素为0或1.如果矩阵中有若干个 1是相邻的,那么称这些1构成了一个“块”.求给定的矩阵中“块”的个数. 0 1 1 1 0 0 1 0 0 1 0 0 ...

  5. set()和get()方法

    在很多程序中,都喜欢定义一个privata变量,然后为这个私有变量加上get(),set()方法.那为什么不直接定义一个public变量呢?这样做到底有什么好处和意义呢?难道真的仅仅只是为了代码规范? ...

  6. excel的count、countif、sunif、if

    一.count统计数值个数 格式:count(指定区域)  , 例如:count(B2:G5) 二.countif统计数值满足条件个数 格式:COUNTIF(条件区域,指定条件)  ,例如:count ...

  7. Selenium实战(四)——unittest单元测试框架1

    Python中的单元测试框架包含:doctest.unittest.pyttest.nose等,使用unittest单元测试框架不需要自行定义断言失败的提示,并且当一个测试函数执行失败后,后面的测试函 ...

  8. 修改sudoers

    使用visudo命令 [root@898f990a8808 etc]# visudo

  9. Vue与原生APP的相互交互

    现在好多APP都采用了Hybrid的开发模式,这种模式特别适合那些内容变动更新较大的APP,从而使得开发和日常维护过程变得集中式.更简短.更经济高效,不需要纯原生频繁发布.但有利肯定有弊咯,性能方面能 ...

  10. Tomcat + mysql + myeclipse 启动遇到的问题

    1. 问题: Tomcat启动时报错如下:Table 'performance_schema.session_variables' doesn't exist 2. 网络上普遍找到的解决办法: 控制台 ...