【ZooKeeper】ZooKeeper架构及单机和分布式环境搭建

1、ZooKeeper介绍

      Zookeeper是一种分布式架构,是为分布式应用提供协调服务的Apache开源项目,使用类似于文件系统的树型数据结构,目的是实现分布式协作。

2、ZooKeeper角色

     (1)领导者(Leader):领导者负责进行投票的发起和决议,更新系统状态。

     (2)学习者(Learner):

              >>跟随者(Follower):Follower用于接收客户请求并向客户端返回结果,在选举领导者过程中参与投票。

              >>观察者(Observer):Observer可以接收客户端连接,将写请求转发给leader节点,但Observer不参与投票过程,只同步leader的状态。Observer的目的是为了扩展系统,提高读取速度。

     (3)客户端(Client):请求发起方。

3、ZooKeeper节点

      Zookeeper的节点数目必须是奇数,机器的时间必须是同步的。Zookeeper具有容错性,允许坏掉若干台机器,N=2*n+1,总机器数为N,允许坏掉n台。节点名称:znode,和namenode很类似,数据会存放在zookeeper的JVM内存中(读取速度快),本地也有备份。

4、ZooKeeper集群

      Zookeeper集群分为两部分:服务端和客户端,客户端可以连接集群中的任意一台机器。Zookeeper从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者,做出相应的反应,从而实现集群中类似Master/Slave管理模式。

      应用场景有:统一命名服务(Name Service)、配置管理(Configuration Management)、集群管理(Group Membership)、共享锁(Locks)/同步锁。

5、ZooKeeper配置参数详解

     (1)tickTime:这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。

     (2)dataDir:顾名思义就是Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。

     (3)clientPort:这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口,接受客户端的访问请求。

     (4)Zookeeper Client命令

              $ bin/zkCli.sh

              子命令:ls、get、create、delete、set等等。

6、ZooKeeper的单机部署(本地配置)

      (1)解压安装包:tar -zxf zookeeper-3.4.5.tar.gz -C /opt/modules/

      (2)复制配置文件:$ cp conf/zoo_sample.cfg conf/zoo.cfg

                创建目录:$ mkdir /opt/modules/zookeeper-3.4.5/data/zkData

                指定本地存储数据的路径:

                /opt/modules/zookeeper-3.4.5/conf/zoo.cfg中修改

                dataDir=/opt/modules/zookeeper-3.4.5/data/zkData

      (3)启动Zookeeper命令:$ bin/zkServer.sh start

               查看Zookeeper状态:$ bin/zkServer.sh status

               查看Zookeeper进程:$ jps

                                                    2414 QuorumPeerMain

               启动Zookeeper客户端命令:$ bin/zkCli.sh

     (4)在Zookeeper客户端执行的命令

              得到查看数据:get /test

              创建节点和数据:create /test "123456"

              删除数据:rmr /test

              退出Zookeeper客户端:quit或者Ctrl+C

              在客户端启动的时候会有一个ZooKeeperMain进程

7、ZooKeeper的分布式部署

      (1)解压安装包:tar -zxf zookeeper-3.4.5.tar.gz -C /opt/app/

      (2)修改配置文件

               指定存储数据的路径:

                /opt/app/zookeeper-3.4.5/conf/zoo.cfg中修改

                dataDir=/opt/app/zookeeper-3.4.5/data/zkData

                添加分布式节点的主机名称及端口号

                /opt/app/zookeeper-3.4.5/conf/zoo.cfg中,在clientPort=2181下面添加:

                server.1=hadoop-senior.ibeifeng.com:2888:3888

                server.2=hadoop-senior02.ibeifeng.com:2888:3888

                server.3=hadoop-senior03.ibeifeng.com:2888:3888

                在/opt/app/zookeeper-3.4.5/data/zkData中vim myid,只输入1。编写机器的ID编号。

      (3)远程分发配置到各个节点

               [beifeng@hadoop-senior zookeeper-3.4.5]$ pwd
               /opt/app/zookeeper-3.4.5

               [beifeng@hadoop-senior zookeeper-3.4.5]$ scp -r ../zookeeper-3.4.5/ hadoop-senior02.ibeifeng.com:/opt/app/

               [beifeng@hadoop-senior zookeeper-3.4.5]$ scp -r ../zookeeper-3.4.5/ hadoop-senior03.ibeifeng.com:/opt/app/

      (4)分发到其他节点后,修改/opt/app/zookeeper-3.4.5/data/zkData中的myid为2或3。

      (5)启动Zookeeper命令:$ bin/zkServer.sh start,在ZooKeeper启动的时候会有一个选举的过程

               查看Zookeeper状态:$ bin/zkServer.sh status

               显示状态:Mode: follower或者Mode: leader

 

你可能感兴趣的:(BigData,云计算大数据学习分享与沉淀)