大数据01-Zookeeper安装及详解

1.分布式系统中的协调服务:

       分布式系统中,通常有多个节点,节点之间一般都有主从之分,you有的时候dan当一个节点挂掉的时候,如何保证节点之间协调工作就是一个比较重要的问题,此时就需要一个管理各个节点之间的协调工具,zk应运而生!

2.zk在各种分布式协调服务场景中的应用:

      2.1在线感知:

      a.所有服务节点上线时,先去zk上注册一个子节点;

       b.“服务请求者”,监听父节点;

       c.当所有新的服务节点加入时,或者有旧的服务节点掉线,“服务请求者”就能收到通知,就可以去zk上查看最新的在线服务列表  。

大数据01-Zookeeper安装及详解_第1张图片

 

2.2  主从协调:此时server01为active(主节点)其余为standby(从节点),从节点一直监听主节点server01,当主节点挂机后,从节点扫描servers目录,定主机名id最大的为新的active。

大数据01-Zookeeper安装及详解_第2张图片

2.3分布式共享锁:左边三个接口分别在三个节点上,都要访问右边的共享数据,但是每次只能有一个节点访问共享数据,这就需要分布式共享锁,股票模型分析访问数据时,会锁定lock01,此时另外两个访问不了,访问结束后锁lock01销毁,之后选股再访问共享数据依此类推。一轮过后,股票模型分析会绑定lock04访问共享数据...

大数据01-Zookeeper安装及详解_第3张图片

3.zookeeper介绍:是一个分布式协调服务,就是为用户的分布式ying应用程序提供协调服务的;

     a.zk是为别的分布式chen程序服务的;

     b.zkben'本身就是一个分布式程序(只要有半数以上节点存货,zk就能zhen正常服务)

     c.zk所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一服务名称。。。

     d.虽说可以提供各种服务,但是zk在底层其实只提供了两个功能:管理(存储,读取)用户程序提交的数据;并为用户程序提供数据节点监听服务。

4.zk集群搭建:

注:要先安装JDK,关闭防火墙,本案例为三台虚拟机名称为shizhan01,shizhan02,shizhan03。配置好hosts文件,三台节点yao要配置ssh免密登录,为以后的集群开启脚本做准备。

4.1先安装JDK

          a.上传jdk压缩包 通过sftp工具上传即可

          b.解压jdk压缩包  tar -zxvf jdk-7u67-linux-x64.gz -C /usr/local/

          c.修改环境变量PATH         vi /etc/profile

          d.在文件最后加两行:

                     export JAVA_HOME=/usr/local/jdk1.7.0_67

                    export PATH=$PATH:$JAVA_HOME/bin

         e.让环境变量生效   source /etc/profile 

      4.2安装zk:

        a.  先上传zk:zookeeper-3.4.6.tar.gz

        b. 解压压缩包到apps: -zxvf zookeeper-3.4.6.tar.gz  -C apps

        c. 删除多余的文件:(注意删除的语法)

  [hadoop@shizhan01 zookeeper-3.4.6]$ rm -rf *.xml contrib dist-maven docs recipes src zookeeper-3.4.6.jar.asc zookeeper-    3.4.6.jar.md5 zookeeper-3.4.6.jar.sha1 *.txt

      d.修改配置文件:

大数据01-Zookeeper安装及详解_第4张图片

e.创建数据文件夹

    make dir /root/zkdata

f.将apps拷贝到另外三个fu'w服务器中:$PWD:当前目录

[root@shizhan01 zookeeper-3.4.6]$ scp -r  /home/root/apps/zookeeper-3.4.6  root@shizhan02:$PWD

g.写入id到zkdata文件夹(id为上面配置文件中的server.id,三个节点都要写入id)

[root@shizhan01 zkdata]echo 1 > myid

[root@shizhan02 zkdata]echo 2 > myid

[root@shizhan03 zkdata]echo 3 > myid

启动:

编写zk集群启动脚本启动脚本:

  ---------------------------------------------------------------------------------------------------------------------------------------

#!/bin/sh

echo "start zkServer..."

for i in 1 2 3 

do 

ssh shizhan0$i "source /etc/profile;/root/apps/zookeeper-3.4.6/bin/zkServer.sh start"

done

---------------------------------------------------------------------------------------------------------------------------------------

.zk特性:

5.1 zk:一个leader,多个follower组成的集群;

5.2全局一致性:每个server保存yi一份相同的数据副本,client无论链接到哪个server,数据都是一致的;

5.3 分布式du'x读写,更新请求转发,由leadersh实施;

5.4 更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行;

5.5数据更新yu原子性,一次数据更新要么成功(半数以上节点成功,就算更新成功),要么失败;

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

数据一致性:当有半数节点更新成功,则数据就更新成功,数据更新是实时的,(PAXOS一致性算法原理)。

大数据01-Zookeeper安装及详解_第5张图片

6.zk的数据结构

6.1、层次化的目录结构,命名符合常规文件系统规范(见下图)

6.2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识

6.3、节点Znode可以包含数据(只能存储很小量的数据,<1M;最好是1k字节以内)和子节点(但是EPHEMERAL类型的节点不能有子节点,下一页详细讲解)

6.4、客户端应用可以在节点上设置监视器(后续详细讲解)

数据结构:

大数据01-Zookeeper安装及详解_第6张图片

7. 节点类型:

7.1、Znode有两种类型

短暂(ephemeral)(断开连接自己删除)

持久(persistent)(断开连接不删除)

7.2、Znode有四种形式的目录节点(默认是persistent )

PERSISTENT

PERSISTENT_SEQUENTIAL(持久序列/test0000000019 )

EPHEMERAL

EPHEMERAL_SEQUENTIAL

7.3、创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护

7.4、在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

 

 

你可能感兴趣的:(zookeeper)