首页 > 其他分享 >大数据场景下的Zookeeper集群的搭建

大数据场景下的Zookeeper集群的搭建

时间:2024-08-02 18:27:15浏览次数:9  
标签:bin opt zookeeper Zookeeper 集群 服务器 leader 搭建

本篇文件将介绍如何搭建zookeeper集群,并集合大数据相关组件介绍zookeeper的功能

一、Zookeeper是做什么的,我们搭建它有什么用处

Zookeeper是一个分布式的服务管理框架,它负责存储和 管理大家都关心的数据,基于观察者涉及模式,Zookeeper接受观察者的注册,一旦这些数据的状态发生了变化,Zookeeper就负责 通知已经在Zookeeper上注册的那些观察者做出相应的反应。

二、大数据场景下会用到Zookeeper的组件

比如消息中间件kafka,kafka虽然以及开始弃用zookeeper,但我们仍能从中学到一些东西,kafka的broker启动后就会向zookeeper注册自身,注册后zookeeper就维护了一些数据比如/brokers/ids
这个路径下就放着broker的id号集合[1,2,3],zookeeper会协助kafka进行leader的选举以及维护集群信息。


还有常用的处理海量数据的Hbase也会使用zookeeper,Hbase的Hregionserver和Hmaster启动后就会向zookeeper注册自身,并且都会创建一个临时的ZNode节点,方便zookeeper管理它们的信息,同时hbase还存储它们的元数据信息方便客户端数据的读取,同时master会监控zookeeper中的ZNode方便分配Regions确保负载均衡

三、Zookeeper集群的搭建

(1)leader选举规则

在正式搭建集群时我们要了解,zookeeper的结构,zookeeper是有leader节点和follower节点的,对于leader和follower的选举在zookeeper启动时就因该选举出来,一个leader和多个follower

选举规则主要就是根据 (服务器总数 + 服务器的状态 + 投票数决定的)

集群启动时肯定是有顺序的,首先第一台机器启动立马就会给自己投票1票,并判断票数是不是大于服务器总数一半以上,比如有5台机器 ,1票不够半数以上,自己就保持looking状态 并且票数清除,等服务器2启动时,1和2都为自己投一票,1发现2的myid(后续配置)大于自身,把自己的票给服务器2,服务器2有2票还是没有半数以上,两者都looking状态,等服务器3来了,重复操作,服务器3就有3票达到半数以上,服务器3就称为leader,并且服务器1,2改为followeing状态,后续服务器启动,following状态的服务器不会将自己的票投给他们,所以服务器3就是最终的leader

(2)zookeeper集群搭建

  1.首先我们搭建一般选择奇数台服务器,这样方便选举leader,我们使用3台服务器

  2.上传Zookeeper的安装包到hadoop102服务器上,并压缩 

        -C 指定目标路径

tar -zxvf /opt/software/ apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module

   3.将/opt/module下的zookeeper分发到hadoop103、hadoop104

    xsync是shell脚本,脚本相关内容放到内容最后

xsync zookeeper-3.5.7

   4.分发完毕后就可以开始修改配置了

      首先 cd conf 目录下  执行  mv  zoo_sample.cfg  zoo.cfg

   5.编辑zoo.cfg

      dataDir是存储zk的快照文件的地方,方便后续恢复数据

       cluster是指定zookeeper集群使用的表示3台服务器
       2888端口是zk集群内部的端口是leader和follower之间数据同步等操作使用的端口
       3888端口是zk服务器之间选举leader使用的端口

#修改数据存储路径配置
dataDir=/opt/module/zookeeper-3.5.7/zkData
#增加如下配置
#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

 6.同步zoo.conf

          xsync zoo.conf

7.在zkData下创建myid文件,这是为了选举leader对比使用的

   myid中的内容就是数字并且一定要和zoo.cfg中配置的一样
   比如我们配置的server.2=hadoop102:2888:3888
   那么我们hadoop102的myid中内容就是2
   hadoop103和hadoop104分别是3和4
8.启动zookeeper

  bin/zkServer.sh start

9.不想使用bin/ 就配置环境遍历
   export ZK_HOME=/opt/module/zookeeper-3.5.7
   export PATH=$PATH:$HIVE_HOME/bin


四、相关脚本

  xsync同步脚本

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
# 也可以采用:
# for host in hadoop{102..104};
for host in hadoop102 hadoop103 hadoop104
do
    echo ====================    $host    ====================
    #3. 遍历所有目录,挨个发送
    for file in $@
    do
        #4 判断文件是否存在
        if [ -e $file ]
        then
            #5. 获取父目录
            pdir=$(cd -P $(dirname $file); pwd)
            echo pdir=$pdir

            #6. 获取当前文件的名称
            fname=$(basename $file)
            echo fname=$fname

            #7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)
            ssh $host "mkdir -p $pdir"

                        #8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下
            rsync -av $pdir/$fname $USER@$host:$pdir
        else
            echo $file does not exists!
        fi
    done
done

zookeeper集群并起脚本

#!/bin/bash

case $1 in
"start"){
   for i in hadoop102 hadoop103 hadoop104
   do
        echo ---------- zookeeper $i 启动 ------------
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
   done

};;
"stop"){
   for i in hadoop102 hadoop103 hadoop104
   do
        echo ---------- zookeeper $i 停止 ------------
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
   done

};;

"status"){
   for i in hadoop102 hadoop103 hadoop104
   do
        echo ---------- zookeeper $i 状态 ------------
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
   done
};;
esac

标签:bin,opt,zookeeper,Zookeeper,集群,服务器,leader,搭建
From: https://blog.csdn.net/j218255/article/details/140872174

相关文章

  • helm部署Kafka集群
    生产环境推荐的kafka部署方式为operator方式部署,Strimzi是目前最主流的operator方案。集群数据量较小的话,可以采用NFS共享存储,数据量较大的话可使用localpv存储。部署operator[root@k8s-master3101-kafka]#helmrepoaddstrimzihttps://strimzi.io/charts/"strimzi"has......
  • springboot+vue前后端分离项目-项目搭建15-集成JWT token权限验证
    1.对之前的代码改造,之前将user存储到sessionStorage,改成存储到localStorage,全局搜索修改 之前Result.code等于0代表success,改成200代表success,vue文件全局搜索修改一、前端部分1.改造request.js,登录时将user已经存储到localStorage里,这里将user获取到,将user里的token放到......
  • 什么是短视频矩阵系统,靠谱的矩阵系统源码搭建,oem贴牌
    抖去推AI矩阵营销系统通过多平台账号绑定、多任务创建、短视频智能剪辑、多任务多平台分发、私信评论自动回复等功能,企业可以更加轻松地管理并运维矩阵账号,实现更高效的短视频推广。一、前期准备开发环境选择您熟悉的编程语言,如Python、C++等。安装相应的开发工具,如I......
  • 靠谱的抖音短视频 SEO 矩阵系统源码开发部署----搭建流程分享
    一、需求分析在开始抖音短视频SEO矩阵系统源码的开发部署之前,首先需要明确您的业务需求和目标。例如,您希望系统具备哪些功能,是侧重于关键词优化、内容推荐还是用户行为分析等。同时,还需要考虑系统的可扩展性、稳定性以及与抖音平台的兼容性。通过多平台账号绑定、多任务创......
  • Zabbix搭建
    目录zabbix搭建1.前置环境准备1.1搭建LNMP2.zabbix准备工作2.1安装php模块以及编译所需工具2.2修改php配置2.3编译安装zabbix2.3.1下载tar包2.3.2解压2.3.3创建用户/组2.3.4开始安装2.3.5配置数据库3.配置zabbix3.1修改配置文件3.2Web界面部署4.安装agent5.添加主......
  • 从零构建直播生态系统:直播软件平台源码的完整搭建指南
    开发一个直播软件平台源码的完整流程涉及精细规划、技术决策、环境配置、功能实现、服务集成以及最终部署等多个关键环节。以下是一个全新的、详尽的步骤指南:需求分析与规划市场调研:首先,进行市场调研,了解目标用户群体的需求,以及竞争对手的产品特点。功能规划:基于调研结果,明确......
  • Skywalking环境搭建
    Skywalking环境搭建:一、Elasticsearch7安装1、下载镜像:dockerpullelasticsearch:7.5.12、创建es7基础环境dockerrun--nameelasticsearch-p9200:9200-p9300:9300-e"discovery.type=single-node"-eES_JAVA_OPTS="-Xms512m-Xmx512m"-delasticsearch:7.5.1......
  • EGO-Planner算法仿真环境搭建
    EGO-Planner算法仿真环境搭建欢迎关注我的B站:https://space.bilibili.com/379384819欢迎交流学习,vx:18074116692参考教程:ZJU-FAST-Lab/自我规划师(github.com)1.查看系统环境要运行本仿真程序,需要保证当前环境为ubuntu18.04+ros-melodic-desktop-full查看ubuntu版本:rosn......
  • SillyTavern搭建
    github地址https://github.com/SillyTavern/SillyTavern/tree/releaseSillyTavern是一个可以安装在电脑(和安卓手机)上的用户界面,让您可以与文本生成的人工智能互动,并与您或社区创建的角色聊天/玩角色扮演游戏。环境查看系统环境#cat/etc/redhat-releaseRockyLinuxrel......
  • docker方式安装redis集群
    创建一个Redis集群,你需要按照一定的步骤来配置Docker容器和Redis实例。以下是详细的步骤来帮助你完成这个过程,并创建一个包含六台服务器的Redis集群。准备工作确保你已经安装了Docker和DockerCompose(可选但推荐)。创建Redis集群创建目录结构在主机上创建必要的......