Zookeeper学习笔记:Zookeeper--分布式框架

本文介绍了Zookeeper——一个分布式服务管理框架。详细阐述了Zookeeper的安装过程、数据结构特性,提供了API基本操作的Java示例,并探讨了其在命名服务、配置管理、集群管理、选举机制及锁和队列管理等典型应用场景。Zookeeper在Hadoop和Hbase等大数据集群管理中扮演重要角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Zookeeper学习笔记:Zookeeper–分布式框架

标签(空格分隔): Zookeeper


一、什么是Zookeeper

    Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:同步配置管理、选举、分布式锁、分组和命名、分布式应用配置项的管理等。本文将从使用者角度详细介绍 Zookeeper 的安装和配置文件中各个配置项的意义,以及分析 Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选举、队列管理等)。

二、Zookeeper的安装

  1. 下载Zookeeper的安装包
  2. 解压安装

    [root@mo ~]# tar -zxf zookeeper-3.4.6.tar.gz -C /usr/
  3. 修改配置文件
    单机版修改为:

    [root@mo conf]# cp zoo_sample.cfg  zoo.cfg 
    [root@mo conf]# vi zoo.cfg
    tickTime=2000
    dataDir=/root/data/zookeeper
    clientPort=2181

    参数说明:

        tickTime:基本事件单元,以毫秒为单位。它用来指示心跳,最小的Session过期时间为两倍的tickTime。
        dataDir:存储内存中数据快照的位置,如果不设置参数,更新事务日志将被存储在默认位置。
        clientPort:监听客户端连接的端口
    
        使用单机模式时,这种配置方式下没有Zookeeper副本,所以如果Zookeeper服务器出现故障,Zookeeper服务器会将会停止。
    

    集群配置:
    Zookeeper 不仅可以单机提供服务,同时也支持多机组成集群来提供服务。实际上 Zookeeper 还支持另外一种伪集群的方式,也就是可以在一台物理机上运行多个 Zookeeper 实例,下面将介绍集群模式的安装和配置。

    集群中的每台机器的conf/zoo.cfg配置文件设置为【zoo为自己修改的名称】:

    tickTime=2000
    dataDir=/root/data/zookeeper        //存放数据路径
    clientPort=2181                     //端口号
    initLimit=5
    syncLimit=2
    server.1=zoo1:2887:3887             //server.【id】=【主机名】:【与主机通讯端口】:【选举端口】
    server.2=zoo2:2888:3888
    server.3=zoo3:2889:3889
        参数:
            initLimit:这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客
    户端,而是 Zookeeper服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超
    过10 个心跳的时间(也就是tickTime)长度后Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。
    总的时间长度就是 5*2000=10 秒。
            syncLimit:这个配置项标识LeaderFollower之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 
    的时间长度,总的时间长度就是 2*2000=4 秒。
            server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务
    器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出
    一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 
    Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
    

    修改主机名称详情见【附录】 修改配置如:

    //zoo1.cnf
    tickTime=2000
    dataDir=/root/data/zookeeper1
    clientPort=2181
    initLimit=5
    syncLimit=2
    server.1=motui:2887:3887
    server.2=motui:2888:3888
    server.3=motui:2889:3889
    
    //zoo2.cnf
    tickTime=2000
    dataDir=/root/data/zookeeper2
    clientPort=2182
    initLimit=5
    syncLimit=2
    server.1=motui:2887:3887
    server.2=motui:2888:3888
    server.3=motui:2889:3889
    
    具体解释:
        “server.id=host:port:port”:指出不同的Zookeeper的服务器的自身标示,作为集群中的一部分机器应该知道集群中的其他机器。用户可以从“server.id=host:port:port”中读取相关信息。
        在DataDir目录下创建一个名为myid的文件,这个文件仅仅含有一行内容,指定自身的id值。比如服务器的id为1,就在这个文件中写1,第一个port是保证和主机通信,第二个port是做选举的。
        启动Zookeeper的集群:./bin/zkServer.sh start zoo1.cfg
        连接集群:./bin/zkCli -server 127.0.0.1:2181
    

    需要在每台机器的DataDir目录下创建一个名为myid的文件,文件中只有对应自己的ID。

    [root@mo ~]# echo "1" >> /root/data/zookeeper1/myid
    [root@mo ~]# echo 
分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值