大数据之Zookeeper部署

news2024/11/18 7:32:04

文章目录

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

在这里插入图片描述

集群规划

  • 确定使用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.coloradmin.cn/o/1882575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

七一建党节|热烈庆祝中国共产党成立103周年!

时光荏苒,岁月如梭。 在这热情似火的夏日, 我们迎来了中国共产党成立103周年的重要时刻。 这是一个值得全体中华儿女共同铭记和庆祝的日子, 也是激励我们不断前进的重要时刻。 103年, 风雨兼程,砥砺前行。 从嘉兴…

五种肉苁蓉属植物叶绿体基因组-文献精读25

Structural mutations of small single copy (SSC) region in the plastid genomes of five Cistanche species and inter-species identification 五种肉苁蓉属植物叶绿体基因组中小单拷贝 (SSC) 区域的结构突变及物种间鉴定 摘要 背景 肉苁蓉属是列当科的重要属类&#xf…

小型气象站:便携、高效的气象监测新选择

在气象监测领域,一款小巧而功能全面的设备正逐渐受到广泛关注——那就是小型气象站。它不仅体积小巧、重量轻,而且采用了众多先进技术,使其在气象数据的采集、传输和分析中展现出强大的能力。 小型气象站之所以备受青睐,首先得益于…

error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main_getcmdline 中被引用

VC MFC情况下出现此问题, 网上搜索了很多文章无法解决。 error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main_utf8 中被引用_sdl2main.lib出现无法解析的外部符号-CSDN博客 字符集必须设置为:

交叉编译 tcpdump libpcap

文章目录 交叉编译 tcpdump & libpcap概述源码下载交叉编译 libpcap交叉编译 tcpdump 交叉编译 tcpdump & libpcap 概述 tcpdump 是一个强大的命令行包分析器,libpcap 是一个可移植的用于网络流量捕获的 C/C 库。tcpdump 依赖于 libpcap 库,同…

Jenkins接口自动化项目的工程创建

jenkins的下载安装 jenkins下载的官网地址 https://www.jenkins.io/download/ java环境变量的配置下载 jenkins是用java语言编写的所以要配置java环境 需要安装java的JDK 推荐安装JDK17(https://blog.csdn.net/wochunyang/article/details/138520209) JDK17的下载地址 ht…

红黑树模拟

1.红黑树概念 红黑树,是一种二叉搜索树,但每个节点上增加了一个存储位表示结点的颜色,可以是RED或BLACK。通过任何一条根到叶子节点的途径上各个节点的着色方式的限制,红黑树确保没有一条路径会超过其他路径的二倍,因…

基于Cisco模拟器的组网实验

课程目的 综合运用所学的网络原理、网络规划和网络集成等知识理论,按照下图所示,完成网络的规划、集成与配置,并利用ACL实现对网络的管理。 实验内容 连接并配置路由器,配置路由协议(RIP或OSPF)&#xf…

[Microsoft Office]Word设置页码从第二页开始为1

目录 第一步:设置页码格式 第二步:设置“起始页码”为0 第三步:双击页码,出现“页脚”提示 第四步:选中“首页不同” 第一步:设置页码格式 第二步:设置“起始页码”为0 第三步:双…

现在电气真的比不过计算机吗 ?

电气工程和计算机科学在今天的科技和工业领域中各有其重要性和发展空间,并不存在简单的比较谁“比不过”谁的情况。我收集制作一份plc学习包,对于新手而言简直不要太棒,里面包括了新手各个时期的学习方向,包括了编程教学&#xff…

【爱上C++】详解string类2:模拟实现、深浅拷贝

在上一篇文章中我们介绍了string类的基本使用,本篇文章我们将讲解string类一些常用的模拟实现,其中有很多细小的知识点值得我们深入学习。Let’s go! 文章目录 类声明默认成员函数构造函数析构函数拷贝构造函数深浅拷贝问题传统写法现代写法…

哪个量化软件最好用?散户也可以很快上手!QMT!

一、QMT是什么 QMT(Quantitative Multi-market Trading System)是一款专为高净值客户、量化爱好者及专业量化投资者设计的量化交易软件。它集行情显示、策略研究、交易执行和风控管理于一体,为投资者提供全方位的量化交易解决方案 二、QMT量化…

SAP配置发布WebService接口并调用(超级详细)

文章目录 前言一、案例介绍/笔者需求二、WebService是什么? a.传输协议 b.数据协议 c.WSDL d.UDDI 三、WebService 和 WebApi 的区别以及优缺点 a.主要区别 b.优缺点 四、SAP如何发布一个webser…

Perforce网络研讨会预告 | HelixCore vs SVN vs ClearCase:嵌入式开发中的数据管理趋势及工具对比分析

现如今,开发嵌入式软件涉及的规模比以往任何时候都庞大。团队在全球范围内不断扩展,文件数量呈指数级增长,项目每年所涉及的数字资产和元数据也更多,并且越来越多的团队成员要在相同的复杂项目中并行工作。 面对如此庞大的开发规…

《梦醒蝶飞:释放Excel函数与公式的力量》7.4 MID函数

第七章:文本处理函数 第4节:7.4 MID函数 7.4.1.MID函数简介 MID函数用于从文本字符串的指定位置开始提取指定数量的字符。它特别适用于从字符串中提取子字符串或处理具有特定格式的数据。 语法: MID(text, start_num, num_chars) - **t…

聚焦政企人才培养,打造多元化课程体系

树莓集团在课程内容上展现了显著的多元化特点,通过广泛的合作、创新的课程内容和产教融合的教学模式,为广大学子提供了全面、系统、专业的教育资源和实践机会。 1、专业广度:树莓集团旗下拥有树莓教育成都王老师摄影培训学校,作为…

Elasticsearch:Painless scripting 语言(一)

Painless 是一种高性能、安全的脚本语言,专为 Elasticsearch 设计。你可以使用 Painless 在 Elasticsearch 支持脚本的任何地方安全地编写内联和存储脚本。 Painless 提供众多功能,这些功能围绕以下核心原则: 安全性:确保集群的…

ZXL-2000砌体砂浆强度点荷仪

一、产品简介: 砌体砂浆强度点荷仪(又名:砂浆点荷仪),是根据GB/T50315-2000《砌体工程现场检验技术规程》而研制生产的。是砌体砂浆强度检测的专用仪器,其特点是能在现场或试验室直接测试,不影…

bmob Harmony快速开发手机号一键登录功能

最近用Bmob的鸿蒙SDK尝试了Harmony开发,做了一个几乎每个应用都会有的功能:手机号码短信验证码一键注册登录的功能,感觉简直爽的不要不要的,ArkUI可见即可得的UI交互设计体验,配合Bmob后端云一如既往简单易用的风格&am…

数据恢复篇:如何在 Android 手机上恢复未保存/删除的 Word 文档

在 Android 手机上访问 Word 文档通常很简单,但是当这些重要文件被删除或未保存时会发生什么?这种情况虽然令人痛苦,但并非毫无希望。到 2024 年,有几种强大的方法来处理此类数据丢失。本指南重点介绍如何在Android手机上恢复已删…