一、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. \n不换行

    \n在js中表示换行,<br/>在html中表示换行,所以如果在设置innerHtml值时使用  \n  ,那么在页面上并不会显示换行,而在设置innerText值时使用  \n  就会显 ...

  2. gitlab被屏蔽问题

    There was an error with the reCAPTCHA. Please solve the reCAPTCHA again. 解决办法 俗话说:哪里有碍事的墙,哪里就使劲推好了 h ...

  3. .Net Core通过json文件 配置管理后台导航菜单

    先来看个最终效果图 以前我们配置后台菜单 一般都是把菜单链接, 图标, 以及层级关系 配置到数据库,Core很容易通过json文件来配置导航菜单  而不用存数据库了 先添加个menuconfig.js ...

  4. 鼠标经过INPUT时自动获取焦点

    鼠标经过INPUT时自动获取焦点 <input type="text" name="addr" onMouseOver="this.focus( ...

  5. css权值和优先级+命名规范

    选择器权值: 标签选择器:1 类选择器和伪类选择器:10 ID选择器:100 通配符选择器:0 行内样式:1000 !important 在一定条件下,优先级最高 常用的css样式命名 页面结构页头: ...

  6. 图片中添加箭头【使用PPT实现】

    手头上可以使用的方案 QQ截图 分辨率会改变 画图 网上的教程一般是画一根线再加一个三角来画箭头,有点麻烦,改起来不好改. PS 对我来说,软件安装本身就是个问题, 插入图片,加入箭头,组合,另存为, ...

  7. nvm Nodejs 版本管理器 安装及配置

    1.如果已安装nodejs请先卸载干净 nodejs:删除C:\Program Files\nodejs 文件夹 npm:删除C:\Users\{用户名}\AppData\Roaming\npm 文件 ...

  8. linux 网络接口,ip地址,路由设定

    本文是基于centos 配置DNS条目: 配置文件:/etc/resolv.conf 修改主机名称: 命令:hostname NAME.重启后失效 配置文件:/etc/sysconfig/networ ...

  9. Zabbbix之十二------Zabbix实现微信报警通知及创建聚合图形

    实战一:实现zabbix监控微信报警 1.在企业微信上注册账号 1.注册企业微信,管理员需要写上自己的真实姓名,扫描以下的二维码,与微信关联真实姓名. 2.登陆企业微信,然后创建一个微信故障通知应用 ...

  10. kafka消费服务调优

    1.消费服务速度跟不上 2.top -H 观察是哪个线程最忙 3.多次使用jstack,看看最忙的那个线程在做什么