Zookeeper

一、介绍

 01) 分布式协调服务的开源框架,主要解决分布式集群中应用系统间的一致性问题.
        02) 小文件的存储系统(数据存放在内存中,数据量有大小限制), 以树形结构进行组织数据
        03) 可以维护和监控数据状态的变化,通过监控数据状态的变化,达到分布式系统中集群管理的效果.
        04) 分布式程序: 可以多台服务器部署(可靠 稳定)
        05) zookeeper是一个主从架构集群(一个大哥带着多个小弟干活)

二、特性

 01) 全局数据一致性
           无论客户端连到哪一个 ZooKeeper 服务器上,其看到的服务端数据模型都是一致的.
        02) 原子性
           一次数据更新要么成功(过半更新成功),要么失败,不存在中间状态
        03) 可靠性
           一旦一次更改请求被应用,更改的结果就会被持久化,直到被下一次更改覆盖
        04) 顺序性
           客户端发起的事务请求,最终将会严格地按照顺序被应用到 ZooKeeper 中去

三、角色介绍

01) 主角色:leader
            事务性请求的唯一处理和调度者,保证集群事务处理的顺序性,同时全局统一协调管理各个follower
       02) 从角色
            响应非事务处理请求(查询请求),转发事务请求给leader,参与leader的选举投票
       03) observer 观察者角色
            没有投票选举权的follower,可以响应非事务处理请求,转发事务请求给leader
            通常用于zk集群扩大读性能

四、安装部署

        01) 上传zookeeper的安装包到一台服务器上
            cd /export/software
            rz  选择zookeeper的安装包进行上传
        02) 解压zookeeper到指定的目录
            tar -zxf zookeeper-3.4.5-cdh5.14.0.tar.gz -C /export/servers/
            cd /export/servers/
        03) 修改zookeeper的配置文件
            cd /export/servers/zookeeper-3.4.5-cdh5.14.0/conf
            mv zoo_sample.cfg  zoo.cfg
            vi zoo.cfg

            修改内容如下:
                dataDir=/export/data/zk
            配置文件底部添加如下内容:
                server.1=hadoop01:2887:3887
                server.2=hadoop02:2887:3887
                server.3=hadoop03:2887:3887
            备注:
                2181: zookeeper客户端连接端口
                2887: 服务器间通信的端口
                3887: 选举的端口
        04) 将配置好的zookeeper分发给其他两台主机上
            cd /export/servers/
            scp -r zookeeper-3.4.5-cdh5.14.0/ root@hadoop02:$PWD   //将zookeeper复制到node02的同级目录下
            scp -r zookeeper-3.4.5-cdh5.14.0/ root@hadoop03:$PWD   //将zookeeper复制到node03的同级目录下

            备注:
                scp远程拷贝
                -r  拷贝文件夹
                $PWD: 和当前目录一致
        05) 分别在三台主机上创建数据存放目录和myid文件
            hadoop01:执行的命令
                mkdir -p  /export/data/zk
                echo "1" > /export/data/zk/myid       //将1字符串写入myid这个文件中,文件位置和文件名不可以修改
                cat /export/data/zk/myid             //此命令用于查看此文件有没有正确写入 1

            hadoop02:执行的命令
                mkdir -p  /export/data/zk
                echo "2" > /export/data/zk/myid
                cat /export/data/zk/myid             //此命令用于查看此文件有没有正确写入 2

            hadoop03:执行的命令
                mkdir -p  /export/data/zk
                echo "3" > /export/data/zk/myid
                cat /export/data/zk/myid            //此命令用于查看此文件有没有正确写入 3

        06) 配置zookeeper的环境变量
            vim /etc/profile
                export ZK_HOME=/export/servers/zookeeper-3.4.5-cdh5.14.0
                export PATH=$PATH:$ZK_HOME/bin
            source /etc/profile 让环境变量生效
        07) 启动和关闭zookeeper集群
            三台服务器逐个启动: zkServer.sh start
            停止zookeeper的命令: zkServer.sh stop
        08) 查看zookeeper集群的状态
            zkServer.sh status
        09) 编写一键启动脚本
            #!/bin/sh
            echo "启动zookeeper中...."
            for host in hadoop01 hadoop02 hadoop03
            do
            ssh -q $host "source /etc/profile; /export/servers/zookeeper-3.4.5-cdh5.14.0/bin/zkServer.sh start"
            done

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/haojia/p/12386219.html