大数据之Zookeeper部署

文章目录

    • 集群规划
    • 环境准备
    • 集群部署
    • 参考资料

在这里插入图片描述

集群规划

  • 确定使用Hadoop101、hadoop102和hadoop103三台服务器来构建Zookeeper集群。
hadoop101hadoop102hadoop103
zookeeperzookeeperzookeeper

环境准备

安装zookeeper前需要确保下面的环境配置成功,具体可以参考大数据之Hadoop部署。

  • 准备三台服务器, 确保都已经安装了CentOS 7.9操作系统
  • 使得三台服务器之间可以互相ping通
  • 修改主机名为 hadoop101, hadoop102, hadoop103
  • 配置hosts文件, 增加主机名和 IP 地址的映射
  • 创建用户并配置用户权限
  • 关闭防火墙
  • ssh 免密登录
  • 安装 JDK,配置环境变量等

集群部署

注意:确保在执行这些步骤之前,确保环境准备完成。 bigdata用户在所有服务器上都有执行权限,SSH免密码登录已经配置好,以便可以无障碍地在服务器之间进行操作。

  1. 安装Zookeeper

    • 在每台服务器上使用bigdata用户登录。
    • 下载Zookeeper的安装包apache-zookeeper-3.5.7-bin.tar.gz /opt/software/目录。
      # 切换到/opt/software目录
      cd /opt/software
      # 下载安装包
      wget https://mirrors.huaweicloud.com/apache/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz 
      
    • 将安装包解压到hadoop101服务器的/opt/module/目录下:
      tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
      
    • 创建软连接命名为zookeeper
      ln -s  apache-zookeeper-3.5.7-bin  zookeeper
      
    • 使用rsync命令将文件和软连接同步到hadoop102hadoop103
      # 同步到hadoop102
      rsync -av /opt/module/apache-zookeeper-3.5.7-bin  hadoop102:/opt/module/
      rsync -av /opt/module/zookeeper  hadoop102:/opt/module/
      # 同步到hadoop103
      rsync -av  /opt/module/apache-zookeeper-3.5.7-bin  hadoop103:/opt/module/
      rsync -av  /opt/module/zookeeper  hadoop103:/opt/module/
      
  2. 配置zoo.cfg文件

    • 在Hadoop101上编辑zoo.cfg文件,设置数据存储路径和集群配置:

      cp zoo_sample.cfg zoo.cfg
      vim zoo.cfg
      
    • 配置内容如下:

      • 修改数据存储路径为
        dataDir=/opt/module/zookeeper/zkData
        
      • 增加集群配置信息
        server.1=hadoop101:2888:3888
        server.2=hadoop102:2888:3888
        server.3=hadoop103:2888:3888
        
    • 配置文件解读
      在Zookeeper的配置文件zoo.cfg中,server.A=B:C:D的配置参数是用来定义集群中各个服务器的角色和通信信息的。下面是对这些参数的详细解读:

      • A: 这是一个数字,表示服务器在Zookeeper集群中的标识符。每个服务器都有一个唯一的标识符,用于区分不同的服务器。

      • B: 这是服务器的地址,可以是IP地址或主机名。这个地址用于Zookeeper集群内部的通信。

      • C: 这是服务器与集群中的Leader服务器交换信息时使用的端口。在Zookeeper中,所有的Follower和Observer节点都会通过这个端口与Leader节点通信,以获取最新的状态和数据。

      • D: 这是用于Leader选举的端口。如果当前的Leader服务器失败,集群中的其他服务器会通过这个端口进行通信,以选举出一个新的Leader。这个端口仅在选举过程中使用。

      • myid: 在Zookeeper集群模式下,每个服务器都需要有一个唯一的标识符,这个标识符存储在一个名为myid的文件中。该文件位于dataDir目录下,其内容就是A的值。Zookeeper启动时会读取这个文件,以确定当前服务器在集群中的身份。

      • dataDir: 这是Zookeeper的数据目录,用于存储Zookeeper的数据和事务日志。myid文件就存放在这个目录下。

      这些配置参数共同定义了Zookeeper集群的行为和通信方式,确保了集群的稳定性和可靠性。在配置Zookeeper集群时,需要根据实际的网络环境和需求来设置这些参数。

    • 使用scp命令将配置好的zoo.cfg文件同步到hadoop102和hadoop103:

      scp /opt/module/zookeeper/conf/zoo.cfg bigdata@hadoop102:/opt/module/zookeeper/conf/
      scp /opt/module/zookeeper/conf/zoo.cfg bigdata@hadoop103:/opt/module/zookeeper/conf/
      
  3. 配置服务器编号

    • 在每台服务器的Zookeeper安装目录下创建zkData目录:
      mkdir -p /opt/module/zookeeper/zkData
      
    • 在每个zkData目录下创建一个名为myid的文件,并写入与server相应的服务器编号:
      # hadoop101
      echo "1" > myid
      # hadoop102
      echo "2" > myid
      # hadoop103
      echo "3" > myid
      
  4. 启动Zookeeper服务

    • 每台服务器上启动Zookeeper:
      [bigdata@Hadoop101 zookeeper]$ bin/zkServer.sh start
      [bigdata@hadoop102 zookeeper]$ bin/zkServer.sh start
      [bigdata@hadoop103 zookeeper]$ bin/zkServer.sh start
      
    • 检查每台服务器上的Zookeeper状态以确认是否成功启动:
      [bigdata@Hadoop101 zookeeper]$ bin/zkServer.sh status
      [bigdata@hadoop102 zookeeper]$ bin/zkServer.sh status
      [bigdata@hadoop103 zookeeper]$ bin/zkServer.sh status
      
  5. 创建集群操作脚本

    • 在Hadoop101目录/home/bigdata/bin上创建一个脚本zookeeper_manage.sh以简化集群的启动、停止和状态检查:

      vim zookeeper_manage.sh
      
    • 脚本内容如下:

      #!/bin/bash
      
      # 定义log函数,用于打印不同级别的日志信息
      function log() {
          local level="$1"
          local message="$2"
          case "$level" in
              ERROR)
                  echo -e "\033[31m[ERROR] $message\033[0m"
                  ;;
              WARN)
                  echo -e "\033[33m[WARN] $message\033[0m"  # 黄色
                  ;;
              INFO)
                  echo -e "\033[32m[INFO] $message\033[0m"   # 绿色
                  ;;
              *)
                  echo "$message"
                  ;;
          esac
      }
      
      # 定义主机数组
      hosts=("hadoop101" "hadoop102" "hadoop103")
      
      # 根据脚本的第一个参数执行不同的操作
      case $1 in
          start)
              for host in "${hosts[@]}"
              do
                  log INFO "Starting zookeeper on $host"
                  ssh "$host" "/opt/module/zookeeper/bin/zkServer.sh start" || log ERROR "Failed to start zookeeper on $host"
              done
              ;;
          stop)
              for host in "${hosts[@]}"
              do
                  log INFO "Stopping zookeeper on $host"
                  ssh "$host" "/opt/module/zookeeper/bin/zkServer.sh stop" || log ERROR "Failed to stop zookeeper on $host"
              done
              ;;
          status)
              for host in "${hosts[@]}"
              do
                  log INFO "Checking zookeeper status on $host"
                  ssh "$host" "/opt/module/zookeeper/bin/zkServer.sh status"
                  # 检查ssh命令的退出状态,并在必要时记录错误
                  if [ $? -ne 0 ]; then
                      log ERROR "Failed to check zookeeper status on $host"
                  fi
              done
              ;;
          *)
              log ERROR "Invalid command: $1"
              ;;
      esac
      
    • 使用脚本启动、停止或检查集群状态:

      ./zookeeper_manage.sh start
      ./zookeeper_manage.sh stop
      ./zookeeper_manage.sh status
      
  6. 客户端命令行操作

    • 在任一服务器上使用bigdata用户启动Zookeeper客户端,并通过命令行与Zookeeper集群交互:

       bin/zkCli.sh
      
    • 使用客户端命令,例如lscreategetsetstatdelete等,来操作Zookeeper。

      命令功能描述参数选项及说明
      help显示所有可用的Zookeeper命令。-
      ls path列出指定路径下的子节点。-w: 监听子节点的变化。
      -s: 附加次级信息。
      create创建一个新的节点。-s: 创建含有序列的节点。
      -e: 创建临时节点。
      get path获取指定路径节点的值。-w: 监听节点内容的变化。
      -s: 附加次级信息。
      set设置或更新指定节点的值。-
      stat查看指定节点的状态,包括版本号等。-
      delete删除指定的节点。-
      deleteall递归删除指定路径下的所有节点。-

参考资料

大数据之Hadoop部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/764487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DSPy:变革式大模型应用开发

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…

DX-11A信号继电器 0.5A 柜内板前接线 约瑟JOSEF

DX-11,11A,11B,11C型信号继电器 DX-11信号继电器 DX-11B信号继电器 DX-11A信号继电器 DX-11C信号继电器 1 用途 该继电器用于直流操作的保护线路中,作为信号指示器。 2 结构和原理 该继电器具有电磁铁和带公共点的三付动合触点及一个信号牌,为电…

【哈尔滨等保测评标准解析】

哈尔滨信息安全等级保护测评(等保测评)标准解析如下: 一、总体概述 哈尔滨市在进行等保测评时,遵循国家统一的标准框架,并结合本省的实际情况,形成了具有地方特色的安全防护模式。等保测评的主要目的是确…

笔记101:OSQP求解器的底层算法 -- ADMM算法

前言1:这篇博客仅限于介绍拉格朗日乘子法,KKT条件,ALM算法,ADMM算法等最优化方法的使用以及简版代码实现,但不会涉及具体的数学推导;不过在下面我会给出具体数学推导的相关文章和截图,供学有余力…

数据结构_1.0

一、数据结构概述 1.1 概念 在计算机科学中,数据结构是一种数据组织、管理和存储的格式 。它是相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技…

PCB中的4种接地方式

“地”是电子技术中一个很重要的概念。由于“地”的分类与作用有多种, 容易混淆。 电路板的GROUND(简称GND),即电路设计中所说的“地”,严格来说,只有大地才是真正的“地”,电路板中的GND只是电…

ERP系统中有哪些模块?有哪些具体实现方案呢?

对于许多初次接触ERP系统的企业来说,可能会对系统中包含的模块和功能感到困惑。本文将详细介绍ERP系统中的主要模块,需要明确的是,ERP系统是一个庞大的系统,包含了多个模块,每个模块都有其独特的功能和作用。这些模块涵…

让新质生产力照进现实,智慧数据基础设施需要软硬兼施

数智化时代,什么才是企业与组织最大的差异化竞争力? 答案无疑是:数据。在生成式AI技术日新月异之际,发展新质生产力已成为产业共识,越来越多的企业意识到:数据乃一切运作的基础,是企业拥抱AI浪…

列出每个字符的位置

列出每个字符的位置 一行字母,部分连续。 ABCDEFGHIJ1puuuupppup 需要整理成字母位置的形式。 ABCDE1p1u2345p678u9p10 使用 SPL XLL spl("[(dE1(?)).groupop(~).(d(~1) / ~.concat())]",A1:J1)函数 E1 将多层序列转为单层,groupop分组后…

【前端环境1】安装nvm

【前端环境1】安装nvm 写在最前面一、卸载node二、下载nvm三、安装教程四、验证nvm安装五、nvm配置node常用命令 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅&#…

接口测试流程及测试点!

一、什么时候开展接口测试 1.项目处于开发阶段,前后端联调接口是否请求的通?(对应数据库增删改查)--开发自测 2.有接口需求文档,开发已完成联调(可以转测),功能测试展开之前 3.专…

“私域流量:解锁电商新机遇,共创数字化未来“

一、私域流量的战略意义再探 步入数字化浪潮的深处,流量已成为企业成长不可或缺的血液。与广泛但难以掌控的公域流量相比,私域流量以其独特的专属性和复用潜力,为企业铺设了通往深度用户关系的桥梁。它不仅赋能企业实现精准营销,…

MySQL-核心知识要点

1、索引的数据结构-Btree BTree的优势: B树的内节点无data,一个节点可以存储更多的K-V对。在构造树时,需要的内节点会更少,那么树的层级也会越低。查询一条数据时,1. 扫描的层级低,扫描过的节点更少&…

VBA字典与数组第十六讲:行、列数不相同的数组间运算规律

《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。…

分布式链路追踪Micrometer Tracing和ZipKin基础入门与实践

【1】概述 在分布式与微服务场景下,我们需要解决如下问题: 在大规模分布式与微服务集群下,如何实时观测系统的整体调用链路情况。 在大规模分布式与微服务集群下,如何快速发现并定位到问题。 在大规模分布式与微服务集群下&…

供应商管理软件:企业挑选新供应商的5个考量

在选择新的供应商时,企业必须进行细致的考量,这一决策对于依赖外部商品的零售商尤为关键。一段成功的合作伙伴关系不仅能够促进销售增长,还能提供稳定的服务支持。相反,失败的合作伙伴关系可能会导致客户不满、利润损失&#xff0…

一篇搞懂!LinuxCentos中部署KVM虚拟化平台(文字+图片)

🏡作者主页:点击! 👨‍💻Linux高级管理专栏:点击! ⏰️创作时间:2024年6月28日15点11分 🀄️文章质量:94分 目录 ————前言———— KVM的优点 KVM…

机器人控制系列教程之Delta机器人运动学分析(2)

基于MATLAB的Delta机器人正向运动学模型求解 我们在上一篇推文 中,推导了Delta机器人的正向运动学,简单来说,就是我们可以通过机器人的末端位姿求解出对应的关节空间的角度(位置)。 最终我们分析该机器人的空间位置结…

服务器数据恢复—raid5阵列硬盘出现大量坏道的数据恢复案例

服务器存储数据恢复环境&故障: 一台DELL EqualLogic PS 4000存储中有一组由12块磁盘组建的raid5阵列,存储空间划分3个同等大小的卷,采用的VMFS文件系统。 两块硬盘指示灯亮黄色,raid5阵列崩溃,存储变得不可用。 服…

C++类型转换可调用对象

目录 C的四种可视性类型转换 1.static_cast 2.reinterpret_cast 3.const_cast 4.dynamic_cast C中的可调用对象 普通函数 函数指针 仿函数 Lambda表达式 包装器function bind C的四种可视性类型转换 C语言中的类型转换是不安全、不明确的,于是C就出了更…