zoukankan      html  css  js  c++  java
  • 大数据学习04_zookeeper1

      ZooKeeper是大数据学习最重要的框架之一。

     1.什么是zookeeper

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

       Zookeeper 本质上是一个分布式文件系统, 适合存放小文件,功能和数据库类似。

      2.zookeeper的特点

         2.1Zookeeper 中存储的其实是一个又一个 Znode, Znode 是 Zookeeper 中的节点

         2.2Znode 是有路径的, 例如 /data/host1 , /data/host2 , 这个路径也可以理解为是 Znode 的 Name

         2.3Znode 也可以携带数据, 例如说某个 Znode 的路径是 /data/host1 , 其值是一个字符串(个人在后面学习中人为这个特点很重要)

         2.4Zookeeper 可以对外提供出一个类似于文件系统的试图, 可以 通过操作文件系统的方式操作 Zookeeper

                使用路径获取 Znode

                获取 Znode携带的数据

                修改 Znode 携带的数据

                删除 Znode

                添加 Znode

       3.zookeeper的应用场景

          3.1 数据发布/订阅

                发布/订阅一般有两种设计模式:推模式和拉模式,服务端主动将数据更新发送给所有订阅的 客户端称为推模式;客户端主动请求获取最新数据称为拉模式. Zookeeper采用了推拉相结合的模式,客户端 向服务端注册自己需要关注的节点,一旦该节点 数据发生变更,那么服务端就会向相应的客户端推送Watcher事件通知,客户端接收到此通知 后,主动到服务端获取最新的数据。

          3.2 命名服务

                 命名服务是分步实现系统中较为常见的一类场景,分布式系统中,被命名的实体通常可 以是集群中的机器、提供的服务地址或远程对象等,通过命名服务,客户端可以根据指定名 字来获取资源的实体,在分布式环境中,上层应用仅仅需要一个全局唯一的名字。Zookeeper 可以实现一套分布式全局唯一ID的分配机制。通过调用Zookeeper节点创建的API接口就可以创建一个顺序节点,并且在API返回值中会 返回这个节点的完整名字,利用此特性,可以生成全局ID

          3.3分布式协调/通知

               Zookeeper中特有的Watcher注册于异步通知机制,能够很好地实现分布式环境下不同机 器,甚至不同系统之间的协调与通知,从而实现对数据变更的实时处理。通常的做法是不同 的客户端都对Zookeeper上的同一个数据节点进行Watcher注册,监听数据节点的变化(包括 节点本身和子节点),若数据节点发生变化,那么所有订阅的客户端都能够接收到相应的 Watcher通知,并作出相应处理。

           3.4分布式锁

                 分布式锁用于控制分布式系统之间同步访问共享资源的一种方式,可以保证不同系统访 问一个或一组资源时的一致性,主要分为排它锁和共享锁。 排它锁又称为写锁或独占锁 ,若事务T1对数据对象O1加上了排它锁,那么在整个加锁期 间,只允许事务T1对O1进行读取和更新操作,其他任何事务都不能再对这个数据对象进行任 何类型的操作,直到T1释放了排它锁。(和数据库的上锁机制类似

             3.5 分布式队列

                   有一些时候,多个团队需要共同完成一个任务,比如,A团队将Hadoop集群计算的结果交 给B团队继续计算,B完成了自己任务再交给C团队继续做。这就有点像业务系统的工作流一 样,一环一环地传下 去. 分布式环境下,我们同样需要一个类似单进程队列的组件,用来实现跨进程、跨主机、跨网 络的数据共享和数据传递,这就是我们的分布式队列。

        4.一个图看懂zookeeper的架构

            

       

  • 相关阅读:
    尽可能装满的背包问题
    mysql的下载与安装
    IDEA中安装ibatis插件
    tomcat启动失败,提示信息:Unable to ping server at localhost:1099
    http响应头
    查看电脑的IP地址及配置
    IDEA中不同项目配置不同JDK
    Navicat for mysql的下载及破解
    java中String的equals()和 ==
    BeanUtils出现Java.lang.NoClassDefFoundError解决
  • 原文地址:https://www.cnblogs.com/g414056667/p/13562512.html
Copyright © 2011-2022 走看看