一、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. 推荐一款疫情期间适合在家办公的远程工具,仅需IP和密码轻松实现远程管理

    这段时间,受疫情影响,很多企业都开启了居家办公模式.但疫情突发,大多数人的办公资料没有拷贝打包,对于居家办公的人,尤其是运维人员来说,很难完成顺利完成工作. 像向日葵.teamviewer之类的远程软 ...

  2. JS中let、var、const的区别

    先看let和var: 1. console.log(a); // undefined var a = 3; console.log(a); // Uncaught ReferenceError: Ca ...

  3. Eclipse部署项目,常见几个问题解决方案

    一.java compiler level does not match the version of the inst 解决方案:(一般出现在拷贝项目) 第一步:在Eclipse环境中,鼠标右键选择 ...

  4. 搭建wordpress博客

    环境说明 操作系统: CentOS 7.2 64位 1. 准备LAMP环境 LNMP 是 Linux.Nginx.MySQL 和 PHP 的缩写,是 WordPress 博客系统依赖的基础运行环境.我 ...

  5. C#中的异步编程--探索await与async关键字的奥妙之处,原来理解和使用异步编程可以这么简单

    前言 await与async是C#5.0推出的新语法,关于await与async有很多文章讲解.但看完后有没有这样一种感觉,感觉这东西像是不错,但好像就是看不太懂,也不清楚该怎么使用.虽然偶有接触,但 ...

  6. Spring的BeanFactory和FactoryBean

    官方定义 BeanFactory:Spring Bean容器的根接口 FactoryBean:各个对象的工厂接口,如果bean实现了这个接口,它将被用作对象的工厂,而不是直接作为bean实例. 源码解 ...

  7. 编译U-Boot时command not found的解决方法

    我使用的U-Boot版本是u-boot-2012.10,编译的步骤为 cd u-boot-2012.10 make s5p_goni_config sudo make 然后,就会看到错误提示 /bin ...

  8. BZOJ #2989. 数列 [树套树]

    考虑转化问题模型,这个没必要可持久化,直接加点就可以了,还不用删点 每次的问题是求 曼哈顿距离,变成切比雪夫距离然后求解 然后我们考虑将这玩意旋转 45度, 然后原坐标的 \((x,y)\) 会变成 ...

  9. C++文件读写demo

    一.常用文件打开方式 二.读写文件步骤(文本文件) 1.写文件步骤 1)#include <fstream> //包含头文件 2)ofstream ofs; //创建流对象 3)ofs.o ...

  10. wxpython 简单例子:显示文本框的窗口显示鼠标位置

    简单例子来自教程: #!/bin/env python import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__ ...