大数据之zookeeper集群配置

Posted A Scut Coder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之zookeeper集群配置相关的知识,希望对你有一定的参考价值。

zookeeper应用场景

  1. 统一命名服务(Name Service)

  2. 配置管理(Configuration Management)
    机器的配置列表、运行时的开关配置、数据库配置信息等,具有以下特点:

    • 数据量比较小

    • 数据内容在运行时发生变化

    • 集群中各节点共享信息,配置一致

  3. 集群管理(Group Membership)
    Leader,实现集群容错功能,具有以下特点:

    • 希望知道集群中有多少机器在工作

    • 对集群中每天运行状态进行数据收集

    • 对集群中每个节点进行上下线操作

  4. 共享锁(Locks):分布式锁

  5. 队列管理

  6. 发布/订阅:分布式数据的发布与订阅

  7. 数据库切换:数据库配置

1 .配置

因为实验室的集群比较特殊,用户目录是整个集群都公用一块盘,不是每个盘有自己的一块,所以只能创建3个zookeeper文件夹,1~3。

将入到conf文件夹下面,cp zoo_sample.cfg zoo.cfg,配置如下:

1的data为zookeeper-1/data

2的data为zookeeper-2/data 以此类推

然后在各自的data下面创建myid,1的内容为1,即对应各自server.id的id

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/software/home/linjiaqing/zookeeper_cluster/zookeeper-1/datadataLogDir=/software/home/linjiaqing/zookeeper_cluster/zookeeper-1/logs# the port at which the clients will connectclientPort=5888server.1=mu01:2887:3887server.2=cu01:2887:3887server.3=cu02:2887:3887

zoo.cfg配置文件详解

  • tickTime:基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime时间就会发送一个心跳。

  • dataDir:存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

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

  • initLimit:这个配置项是用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

  • syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒

    • A表示这个是第几号服务器

    • C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口

    • D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader

    • server.A = B:C:D

2. 一键启动脚本

因为不可能每次都进到每台机下面去启动那么麻烦,所以写脚本一键启动,原理是ssh免配置,通过脚本ssh到每台机去执行

#!/bin/shecho "start zkServer..."num=1for host in mu01 cu01 cu02doecho "start $host"ssh $host "cd /software/home/linjiaqing/zookeeper_cluster/zookeeper-$num;bin/zkServer.sh start"num=$(($num+1))done

3 出现的问题

 Error contacting service. It is probably not running

查看zookeeper.out里面的输出

2181端口被占用! 

还有原来默认配置的3888端口占用                                       
zkServer.sh stop        #先停止zookeep
netstat -an | grep 2181 #查看端口是否占用,如果占用
clientPort = 5888       #随便找个没占用的端口号!

以上是关于大数据之zookeeper集群配置的主要内容,如果未能解决你的问题,请参考以下文章

大数据之Zookeeper:Zookeeper选举机制(面试重点)

大数据高可用集群环境安装与配置(05)——安装zookeeper集群

我要进大厂之大数据ZooKeeper知识点

走进大数据 | zookeeper-zookeeper的单节点及集群安装配置

大数据Hadoop之ZooKeeper认识

大数据技术之Hadoop——Zookeeper