广告
返回顶部
首页 > 资讯 > 数据库 >Zookeeper
  • 173
分享到

Zookeeper

Zookeeper 2016-04-18 06:04:19 173人浏览 绘本
摘要

1. 大数据是什么?   1.1 大数据就是4V的特征     Volume (大量) , Velocity (高速) , Variety (多样) , Value (价值) , 即数据体量巨大, 数据类型繁多, 价值密度低, 处理速度快.

1. 大数据是什么?

  1.1 大数据就是4V的特征

    Volume (大量) , Velocity (高速) , Variety (多样) , Value (价值) , 即数据体量巨大, 数据类型繁多, 价值密度低, 处理速度快. 

  1.2 JavaEE开发大数据的区别

    1.2.1 JavaEE开发流程

  

 

    1.2.2 大数据开发流程

    

    

     

    1.2.3 两者区别

      1) 架构层面
        javaEE体系: 三层架构, 表现层 (WEB) 业务层 (Service) 持久层 (Dao) . 
        大数据体系: 围绕数据, 数据采集 (数据源) , 数据存储, 数据计算 (分析) , 数据展示. 
      2) 技术层面
        JavaEE: 成熟, 解决方案多, 技术点集中. 
        大数据: 相对年轻, 迭代更新快, 解决方案相对少, 技术相当繁琐, 杂, 碎. 
      3) 开发层面
        JavaEE: 代码量很大, 偏向业务, 运维等任务相对较少, 固定搭配, 习惯用法较多. 
        大数据: 代码量很少, 偏向技术 (原理, 知识) , 运维任务略多 (集群, 服务器等) , sql数据分析, 类sql, hql. 
      4) 市场层面
        javaEE: 很成熟, 有自己的行业规范, 如日中天
        大数据: 市场起步阶段, 规范有待健全, 朝阳产业 (结合人工智能, 机器学习等) . 

 

2. Apache ZooKeeper

  2.1 Zookeeper概述

    Zookeeper是一个分布式协调服务开源框架. 主要用来解决分布式集群中应用系统的一致性问题. 

    Zookeeper本质上是一个

      分布式的小文件存储系统. 提供基于类似于文件系统的目录树方式的数据存储, 并且可以对树种的节点进行有效管理.

      维护和监控你存储的数据的状态变化, 通过监控这些数据状态的变化, 从而可以达到基于数据的集群管理.

      分布式程序, 可以多台服务器部署 (可靠, 稳定) . 

      Zookeeper是一个主从结构集群

  2.2 Zookeeper特性

    全局数据一致: 集群中每个服务器保存一份相同的数据副本, Client无论连接到哪个服务器, 展示的数据都是一致的, 这是最重要的特性. 

    可靠性: 如果消息被其中一台服务器接受, 那么将被所有的服务器接受. 

    顺序性: 包括全局有序和偏序两种: 全局有序是指如果一台服务器上消息a在消息b前发布, 则在所有Server上消息a都将在消息b前被发布. 偏序是指如果一个消息b在消息a后被同一个发送者发布, 消息a必将排在消息b前面. 

    数据更新原子性: 一次数据更新要么成功 (半数以上节点成功) , 要么失败, 不存在中间状态. 

    实时性: Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,  或者服务器失效的信息

  2.3 Zookeeper集群角色

    

    Leader: Zookeeper集群工作的核心, 事务请求 (写操作) 的唯一调度和处理者, 保证集群事务处理的顺序性, 集群内部各个服务器的调度者.

    对于create, setData, delete等有写操作的请求, 则需要统一转发给leader处理, leader需要决定编号, 执行操作, 这个过程称为一个事务.

    Follower: 处理客户端非事务 (读操作) 请求, 转发事务请求给Leader. 参与集群Leader选举投票. 

    此外, 针对访问量较大的Zookeeper集群, 还可新增观察者角色. 

    Observer: 观察者角色, 观察Zookeeper集群的最新状态变化并将这些状态同步过来, 其对于非事务请求可以进行独立处理, 对于事务请求, 则会转发给Leader服务器进行处理. 不会参与任何形式的投票只提供非事务服务, 通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力. 

    可以分为主从主备两种方式: 

      主从: 主角色 leader

          从角色 follower

          常见的一主多从的架构 (stORM, hadoop等) , 主从架构各司其职, 互相配合. 

      主备: 主角色 active

          备角色 standby

          主备角色常用于解决单点故障问题, 常见的是一主一备, 只有主角色发生故障时, 备角色才会切换成主角色, 同一个时刻只能有一个主角色

  2.4 Zookeeper集群搭建

    Zookeeper集群搭建指的是Zookeeper分布式模式安装. 通常由2n+1台servers组成. 这是因为为了保证Leader选举 (基于Paxos算法的实现) 能过得到多数的支持, 所以Zookeeper集群的数量一般为奇数. 

    如果要想使用Observer模式, 可在对应节点的配置文件添加配置: peerType=observer, 其次必须在配置文件指定哪些节点被指定为Observer, 如: server. 1:hadoop01:2181:3181:observer

  2.5 Zookeeper数据模型

    Zookeeper的数据模型, 在结构上和标准文件系统非常相似, 拥有一个层次的命名空间, 都是采用树形层次结构, Zookeeper树中的每个节点被称为--Znode. 和文件系统的目录树一样, Zookeeper树中的每个节点可以拥有子节点. 但也有不同之处

    1) Zookeeper兼具文件和目录两种特点既像文件一样维护着数据, 元信息, ACL, 时间戳等数据结构, 又像目录一样可以作为路径标识的一部分, 并可以具有子Znode. 用户对Znode具有增删改查等操作 (权限允许的情况下) . 

    2) Znode具有原子性操作: 读操作将获取与节点相关的所有数据, 写操作也将替换掉节点的所有数据. 另外, 每一个节点都拥有自己的ACL (访问控制列表) , 这个列表规定了用户的极限, 即限定了特点用户对目标节点可以执行的操作. 

    3) Znode存储数据大小有限制: Zookeeper虽然可以关联一些数据, 但并没有被设计为常规的数据库或者大数据存储, 相反的是, 他用来管理调度数据, 比如分布式应用中的配置文件信息, 状态信息, 汇集信息等. 这些数据的共同特性就是他们都是很小的数据, 通常以KB为大小单位. Zookeeper的服务器和客户端都被设计为严格检查并限制每个Znode的数据大小至多1M, 当时常规使用中应该远小于此值. 

    4) Znode通过路径引用: 如同Unix中的文件路径. 路径必须是绝对的. 因此他们必须由斜杠字符开头. 除此以外, 他们必须是唯一的, 也就是说每一个路径只有一个表示, 因此这些路径不能改变. 在Zookeeper中, 路径由Unicode字符串组成, 并且有一些限制. 字符串"/zookeeper"用以保存管理信息, 比如关键配额信息. 

  2.6 数据结构图

    

     图中的每个节点称为一个Znode. 每个Znode由3部分组成: 

      1) stat: 此为状态信息, 描述该Znode的版本, 权限等信息

      2) data: 与该Znode关联的数据

      3) children: 该Znode下的子节点

  2.7 节点类型

    Znode有两种, 分别为临时节点永久节点

    节点的类型在创建时即被确定, 并且不能改变

    1) 临时节点: 该节点的生命周期依赖于创建他们的会话. 一旦会话结束, 临时节点将被自动删除, 当然也可以手动删除. 临时节点不允许拥有子节点

    2) 永久节点: 该节点的生命周期不依赖于会话, 并且只有在客户端显示执行删除操作的时候, 他们才能被删除. 

    Znode还有一个序列化的特性, 如果创建的时候指定的话, 该Znode的名字后面会自动追加一个不断增加的序列号. 序列号对于此节点的父节点来说是唯一的, 这样便会记录每个子节点创建的先后顺序. 他的格式为"%10d" . 

    这样便会存在四种类型的Znode节点, 分别对应: 

    1) 永久非序列化节点

    2) 临时非序列化节点

    3) 永久序列化节点

    4) 临时序列化节点

  2.8 节点属性

    每个Znode都包含了一系列属性, 通过命令get, 可以获得节点的属性. 

    1) dataVersion: 数据版本号, 每次对节点进行set操作, dataVersion的值都会增加1 (即使设置的是相同数据) , 可有效避免了数据更新时出现的先后顺序问题. 

    2) cversion: 子节点的版本号. 当Znode的子节点有变化时, cversion的值就会增加1. 

    3) cZxid: Znode创建的事务id. 

    4) mZxid: Znode被修改的事务id, 即每次对Znode的修改都会更新mZxid. 

    对于Zookeeper来说, 每次的变化都会产生一个唯一的事务id, zxid (Zookeeper Transaction ID) . 通过zxid, 可以确定更新操作的先后顺序. 例如, 如果zxid1小于zxid2, 说明zxid1操作先于zxid2发生, zxid对于整个Zookeeper都是唯一的, 即使操作的是不同的Znode. 

    5) ctime: 节点创建的时间戳

    6) mtime: 节点最新一次更新发生时的时间戳

    7) ephemeralOwner: 如果该节点为临时节点, ephemeralOwner值表示与该节点绑定的session id, 如果不是, ephemeralOwner值为0. 

    在Client和Server通信之前, 首先需要建立连接, 该连接称为session. 连接建立后, 如果发生连接超时, 授权失败, 或者显式关闭连接, 连接便处于CLOSED状态, 此时session结束. 

  2.9 Zookeeper Watcher (监听机制)

     Zookeeper提供了分布式数据发布 / 订阅功能, 一个典型的发布 / 订阅模型系统定义了一种一对多的订阅关系, 能让多个订阅者同时监听某一个主题对象, 当这个主题对象自身状态变化时, 会通知订阅者, 使他们能够做出相应的处理. 

    Zookeeper中, 引入了Watcher机制来实现这种分布式的通知功能. Zookeeper允许客户端向服务端注册一个Watcher监听, 当服务端的一些事件触发了这个Watcher, 那么就会指定客户端发送一个事件通知来实现分布式的通知功能. 

    触发事件种类很多: 节点创建, 节点删除, 节点改变, 子节点改变等. 

    总的可以概括Watcher为三个过程: 

    1) 客户端向服务端注册Watcher

    2) 服务端事件发生触发Watcher

     3) 客户端回调Watcher得到触发时间情况

    Watcher机制特点: 

      一次性触发: 事件发生触发监听, 一个WatcherEvent就会被发送到设置监听的客户端, 这种效果是一次性的, 后续再次发生同样的事件, 不会再次触发. 

      事件封装: Zookeeper使用WatchedEvent对象来封装服务端事件并传递. 

            WatcherEvent包含了每一个事件的三个基本属性: 通知状态 (KeeperState) , 事件类型 (EventType) , 节点路径 (path) . 

      event异步发送: Watcher的通知事件从服务端发送到客户端是异步的. 

      先注册再触发: Zookeeper中的Watch机制, 必须客户端先去服务端注册监听, 这样事件发送才会触发监听, 通知给客户端. 

  2.10 通知状态和事件类型

    同一个事件类型在不同的通知状态中代表的含义有所不同. 

    其中连接状态事件 (type=None, path=null) 不需要客户端注册, 客户端只要有需要直接处理就行了. 

  2.11 Zookeeper选举机制

     zookeeper默认的算法是FastLeaderElection, 采用投票数大于半数则胜出的逻辑. 

    服务器ID: 编号越大在选择算法中的权重越大

    选举状态: LOOKING, 竞选状态

          FOLLOWING: 随从状态, 同步leader状态, 参与投票

          OBSERVING:  观察状态, 同步leader状态, 不参与投票

          LEADING: 领导者状态

    数据ID: 服务器中存放的最新数据version, 值越大说明数据越新, 在选举算法中数据越新权重越大

    逻辑时钟: 也叫投票的次数, 同一轮投票过程中的逻辑时钟值是相同的. 每投完一次票这个数据就会增加, 然后与接收到的其他服务器返回的投票信息中的数值对比, 根据不同的值做出不同的判断. 

  2.11.1 全新集群选举

    假设目前有5台服务器, 每台服务器均没有数据, 他们的编号分别是1, 2, 3, 4, 5, 按编号依次启动, 他们的选举过程如下: 

    1) 服务器1启动, 给自己投票, 然后发投票信息, 由于其他机器还没有启动所有他收不到反馈信息, 服务器1的状态一直属于LOOKING. 

    2) 服务器2启动, 给自己投票, 同时与之前启动的服务器1交换结果, 由于服务器2的编号大所以服务器2胜出, 但此时投票数没有大于半数, 所以两个服务器的状态依然是LOOKING. 

    3) 服务器3启动, 给自己投票, 同时与之前启动的服务器1, 2交换信息, 由于服务器3的编号最大所以服务器3胜出, 此时投票数正好大于半数, 所以服务器3称为Leader, 服务器1, 2成为Follower. 

    4) 服务器4启动, 给自己投票, 同时与之前启动的服务器1, 2, 3交换信息, 尽管服务器4的编号大, 但之前服务器3已经胜出, 所以服务器4只能成为Follower. 

    5) 服务器5启动, 后面的逻辑同服务器4成为Follower. 

  2.11.2 非全新集群选举

     对于运行正常的zookeeper集群, 中途有机器down掉, 需要重新选举时, 选举过程就需要加入数据ID, 服务器ID, 逻辑时钟

    数据ID: 数据新的version就大, 数据每次更新都会更新version. 

    服务器ID: 就是我们配置的mvid的值, 每个机器一个. 

    逻辑时钟: 这个值从0开始递增, 每次选举对应一个值. 如果在同一次选举中, 这个值是一致的. 

    这样选举的标准就变成: 

      1) 逻辑时钟小的选举结果被忽略, 重新投票. 

      2) 统一逻辑时钟后, 数据id大的胜出. 

      3) 数据ID相同的情况下, 服务器ID大的胜出.

您可能感兴趣的文档:

--结束END--

本文标题: Zookeeper

本文链接: https://www.lsjlt.com/news/2709.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【Zookeeper】zookeeper集群安装
    单节点安装参考:http://blog.sina.com.cn/s/blog_6f6bc30e0101pb13.html zookeeper集群安装 注意事项: 1....
    99+
    2022-10-18
  • Zookeeper
    1. 大数据是什么   1.1 大数据就是4V的特征     Volume (大量) , Velocity (高速) , Variety (多样) , Value (价值) , 即数据体量巨大, 数据类型繁多, 价值密度低, 处理速度快. ...
    99+
    2016-04-18
    Zookeeper
  • java连接zookeeper实现zookeeper教程
    目录java连接zookeeper实现zookeeperZookeeperJavaAPI基本操作1.连接客户端2.恢复回话3.创建节点4.修改节点5.删除节点6.查询节点7.查询子节...
    99+
    2022-11-12
  • zookeeper详解
    一 zookeeper介绍         首先需要了解zookeeper是什么,zookeeper是一个分布式协调服务。所谓分布式协调主要是来解决分布式系统中多个进程之间的同步限制,防止出现脏读,例如我们常说的分布式锁。         ...
    99+
    2023-09-12
    java
  • ZooKeeper实战
    作者:禅与计算机程序设计艺术 1.简介 ZooKeeper是一个分布式协调服务,它为大型分布式系统提供高可用性、高性能的数据发布/订阅服务。其设计目标是将那些复杂且容易出错的过程从应用中分离出来,构...
    99+
    2023-10-23
    大数据 人工智能 语言模型 Java Python 架构设计
  • ZooKeeper 安装
    ZooKeeper 安装 1. 下载安装 1、环境准备 ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。 2、上传 将下载的ZooKeeper放到/opt...
    99+
    2023-09-21
    java-zookeeper zookeeper java
  • Zookeeper笔记
    为什么要使用Zookeeper dubbo需要一个注册中心,而Zookeeper是我们在使用Dubbo是官方推荐的注册中心 Zookeeper介绍 Zookeeper的集群机制 Zookeepe...
    99+
    2023-09-08
    zookeeper java
  • Zookeeper机制
    顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小 猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper;Zoo...
    99+
    2021-03-06
    Zookeeper机制
  • Zookeeper简介
    1.1 什么是zookeeper Zookeeper是一个分布式的、开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Apache Hadoop的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据...
    99+
    2017-07-20
    Zookeeper简介
  • python 访问 zookeeper
    zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。zookeeper提供可靠的存储,...
    99+
    2023-01-31
    python zookeeper
  • hadoop ha+zookeeper+hbase
    一、环境1、系统:Red Hat Enterprise Linux Server release 6.42、所需软件包    hadoop-2.2.0.tar.gz ...
    99+
    2022-10-18
  • java Zookeeper简述
    目录Zookeeper 角色LeaderFollowerObserverZookeeper 工作原理(原子广播) Znode 四种形式的目录节点ZooKeeper 安装和使...
    99+
    2022-11-12
  • 【ZooKeeper Notes 3】Z
    查看PDF版本 转载请注明:@ni掌柜 nileader@gmail.com ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务框架,包含一组简单的原语集合。通过这些原语言的组合使用,能够帮助我们解决更高层次的分布式问题,关...
    99+
    2023-01-31
    ZooKeeper Notes
  • Spring Boot Dubbo Zookeeper
    文章目录 Spring Boot Dubbo Zookeeper简介DubboCommonProviderConsumer Zookeeper Spring Boot Dubbo Zookeeper 简介 Dubbo...
    99+
    2023-08-30
    java-zookeeper spring boot dubbo
  • Mac安装zookeeper
    文章目录 1.下载zookeeper安装包2.解压安装包3.修改配置文件4.启动服务端5.启动客户端 1.下载zookeeper安装包 https://archive.apach...
    99+
    2023-09-01
    zookeeper macos
  • ZooKeeper与Dubbo总结
    ZooKeeper ZooKeeper基本概念总结   ZooKeeper基本概念总结_xushiyu1996818的博客-CSDN博客 ZooKeeper与集群与一致性协议总结   ZooKeeper与集群与一致性协议总结_xushiyu...
    99+
    2023-10-06
    java-zookeeper zookeeper java
  • zookeeper和hbase安装
    一、zookeeper1、/etc/profileHADOOP_PREFIX=/opt/hadoopJAVA_HOME=/opt/jdk18ZOOKEEPER_HOME=/opt/zookeeperHBAS...
    99+
    2022-10-18
  • Hadoop hive sqoop zookeeper hb
    6、问题及解决方案1. 问题描述:WARN util.NativeCodeLoader: Unable to load native-hadoop library foryour platform… usi...
    99+
    2022-10-18
  • zookeeper清理日志
    一、描述    大早上刚到公司就发现报警,磁盘容量告警,zookeeper集群服务器报警。二、处理过程查看磁盘空间df -h2.确认那个目录占用空间比较多,发现是zookeeper修改z...
    99+
    2022-10-18
  • hadoop+hbase+zookeeper+spark+p
    排错日志:解决办法:可能是修改 机器名导致的,修改hosts,写入hostname和IP,然后,try it agin!解决办法:当引入hadoop-common-2.2.0.jar包进行二次开发,比如读写...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作