ZooKeeper部署及相关概念笔记

一、部署 

两台虚拟机(CentOS Linux 7):
    192.168.190.200 master
    192.168.190.201 slave1
   创建两个zookeeper服务,最好是奇数个节点,原因:
    3个节点和4个节点时,允许节点宕机数目都为1个(需保证集群一半以上节点存活,才能正常工作),
    所以从可靠性角度,3个和4个效果一样。
   
  注:如果只有一个节点,采用伪分布模式(standalone),就忽略全文中关于 slave1 节点的配置即可

所有节点都执行(hadoop用户)
1. 在 /home/hadoop/ 下创建目录,如下结构:
    
    zookeeper_server
    |——  data
    |——  logs
    
    (**下面是很关键的一步)
    并在 data/ 下创建 myid 文件,用于存放 zk的server_id
        master 节点中的 myid 文件内容: 0
        slave1 节点中的 myid 文件内容: 1 (伪分布可不配置此项)

2. 下载 ZooKeeper 版本:zookeeper-3.4.14.tar.gz ,存放/opt/下
3. 解压
    $ cd /opt
    $ tar -zxvf zookeeper-3.4.14.tar.gz
4. 复制并修改配置文件
    $ cd zookeeper-3.4.14/conf
    $ cp zoo_sample.cfg zoo.cfg
    $ vi zoo.cfg

    <如下配置:>
    tickTime=2000    # 客户端与服务端的心跳间隔(毫秒)
    initLimit=10    # follower和leader服务器间初始连接的超时时间,tick倍数
    syncLimit=5    # follower和leader服务器间同步时的超时时间,tick倍数
    dataDir=/home/hadoop/zookeeper_server/data    # 内存数据库快照存放目录
    dataLogDir=/home/hadoop/zookeeper_server/logs    # 事务日志目录
    clientPort=2181    # 服务器向客户端提供的连接端口号
    server.0=192.168.190.200:2888:3888    # 服务器0地址
    server.1=192.168.190.201:2888:3888    # 服务器1地址 (伪分布可不配置此项)
    注:server.id=host:port:port 中的后两个端口号分别用于仲裁通讯和群首选举


5. 配置zk环境变量,在/etc/profile文件末尾添加如下内容:
    $ su root
    $ vi /etc/profile
    export ZOOKEEPER_HOME=/opt/zookeeper-3.4.14
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    $ source /etc/profile

6. 启动所有节点的zk server 进程:
    hadoop@master ~]$ zkServer.sh start
    hadoop@slave1 ~]$ zkServer.sh start
    启动后,如下信息:
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED    

7. 查看服务是否真的启动了
    $ ps -ef | grep zookeeper

8. 查看zk服务状态(提示:leader 和 follower )
    hadoop@master ~]$ zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Mode: follower

    hadoop@slave1 ~]$ zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Mode: leader

    **注:1.服务只启动了一个(无法构成法定仲裁人数:至少 三分之二 数量);
         2.或者防火墙没有关;
        3.或者server_id配置错误
        都会如下报错:
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.

9. 相关服务操作:
    $ zkServer.sh start
    $ zkServer.sh status
    $ zkServer.sh restart
    $ zkServer.sh stop
    $ zkServer.sh start-foreground (以打印日志方式启动,容易打印时卡住)

10. 访问集群
    $ zkCli.sh -server master:2181
  1. 创建znode节点,并包含数据
    [zk: master:2181(CONNECTED) 0] create /mynode "Hello zk !"
    Created /mynode
  2. 获取znode数据
    [zk: master:2181(CONNECTED) 1] get /mynode
    Hello zk !
  3. 删除znode节点
    [zk: master:2181(CONNECTED) 2] delete /mynode
  4. 查看根节点下子节点目录
    [zk: master:2181(CONNECTED) 3] ls /
  5. 更多命令查看help
    [zk: master:2181(CONNECTED) 4] help
    ZooKeeper -server host:port cmd args
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        ls2 path [watch]
        setAcl path acl
        setquota -n|-b val path
        history
        redo cmdno
        printwatches on|off
        delete path [version]
        sync path
        listquota path
        rmr path
        get path [watch]
        create [-s] [-e] path data acl
        addauth scheme auth
        quit
        getAcl path
        close
        connect host:port

 二、ZooKeeper相关概念

**ZooKeeper相关概念:
1. ZooKeeper是一个为分布式应用程序提供一致性协调服务的软件。
2. 提供的服务包括:
  1)域名服务:用于跟踪一组服务器的运行状态;
  2)锁定服务:分布式互斥访问共享资源,实现锁机制;
  3)同步服务:分布式同步访问共享资源,实现生产者-消费者模式、或是一个障碍;
  4)配置管理:对集群的分布式系统配置进行统一的集中存储和管理;
  5)群首选举:针对集群的分布式系统存在某一节点宕机的问题,通过群首选举支持自动的故障转移策略,实现主备节点切换。
3. 遵循Server-Client模型,以多机器形成集群来提供服务。
4. 三种角色:Leader, Follower, Observer.
  1)一个集群只能有一个Leader,其它都是Follower和Observer;
  2)通过Leader选举机制产生Leader机器;
  3)设定为Observer的机器不参加Leader选举过程。
5. 数据模型:ZNode Tree (树形模型)
  1)znode中包含了存储的数据和ACL(Access Control List);
  2)数据节点中只能存储少量数据,最大不超过1MB;
  3)原子性的数据访问方式:
    a. 数据读取时:不允许只获取到部分数据;要么全部得到,要么全部没有得到;
    b. 数据写入时:不允许只写入部分数据;要么全部写入,要么写入失败;
    c. 保证数据的读取只有两个结果:成功、失败。
  4)节点分临时节点(Ephemeral ZNodes)和持久节点(Persistent ZNodes)
    a.分布式资源是否可用,就是通过临时节点实现的;
      通过创建临时节点来代表占领资源取得锁,删除节点代表释放锁。
  5)如:"/Spark/Master"中,Spark和Master都为ZNode节点,各自保存自己的数据内存、属性信息。
  6)ZooKeeper将所有数据都存在内存中。
6. 客户端会话Session:客户端通过TCP长连接与服务器建立联系。
  1)默认服务端口:2181
  2)会话超时时间设置:SessionTimeout参数

 

三、参考文章:

1. 《Spark Streaming 实时流式大数据处理实战》5.1 ZooKeeper简介

2. Linux环境快速部署Zookeeper集群

3. 这可能是把ZooKeeper概念讲的最清楚的一篇文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值