大数据之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" inERROR)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 instart)for host in "${hosts[@]}"dolog 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[@]}"dolog 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[@]}"dolog INFO "Checking zookeeper status on $host"ssh "$host" "/opt/module/zookeeper/bin/zkServer.sh status"# 检查ssh命令的退出状态,并在必要时记录错误if [ $? -ne 0 ]; thenlog ERROR "Failed to check zookeeper status on $host"fidone;;*)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.rhkb.cn/news/370439.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用echarts绘制中国地图根据不同的省份划分到指定区域里面中

需求:我们在开发过程中会遇到使用中国地图来划分不同区域省份下面的数量统计情况,但是有时候使用Echarts里面地图功能和我们实际业务需求不匹配的,这个时候就需要我们手动自定义进行划分不同区域下面的省份数据。例如大区1下面有哪些省份&…

查询数据库下所有表的数据量

个人思路: 首先把库里Schema下表名拿出来放记事本(EmEditor)里, 用一下正则匹配替换 (\w) → select \1 tableName,count(1) from \1 union all 然后把最后的union all删除掉,替换为order by tableName

Linux 【线程池】【单例模式】【读者写者问题】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux初窥门径⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 🏳️‍🌈前言 …

在安装HDFS过程中遇见Permission denied

HDFS Shell命令权限不足问题解决 问题 想必有同学在实战Shell的时候,遇到了: Permission denied: userroot, accessWRITE, inode"/":hadoop:supergroup:drwxr-xr-x 这种类似的问题。 问题的原因就是没有权限,那么为什么呢&#…

数字化精益生产系统--MRP 需求管理系统

MRP(Material Requirements Planning,物料需求计划)需求管理系统是一种在制造业中广泛应用的计划工具,旨在通过分析和计划企业生产和库存需求,优化资源利用,提高生产效率。以下是对MRP需求管理系统的功能设…

2.1 tmux和vim

文章目录 前言概述tmuxvim总结 前言 开始学习的时间是 2024.7.6 ,13:47 概述 最好多使用,练成条件反射式的 直接使用终端的工具,可以连接到服务器,不需要使用本地的软件 tmux 这个主要有两个功能,第一个功能是分…

【十三】图解 Spring 核心数据结构:BeanDefinition 其二

图解 Spring 核心数据结构:BeanDefinition 其二 概述 前面写过一篇相关文章作为开篇介绍了一下BeanDefinition,本篇将深入细节来向读者展示BeanDefinition的设计,让我们一起来揭开日常开发中使用的bean的神秘面纱,深入细节透彻理解…

【Pyhton】读取寄存器数据到MySQL数据库

目录 步骤 modsim32软件配置 Navicat for MySQL 代码实现 步骤 安装必要的库:确保安装了pymodbus和pymysql。 配置Modbus连接:设置Modbus从站的IP地址、端口(对于TCP)或串行通信参数(对于RTU)。 连接M…

go语言day10 接口interface 类型断言 type关键字

接口: 空接口类型: 要实现一个接口,就要实现该接口中的所有方法。因为空接口中没有方法,所以自然所有类型都实现了空接口。那么就可以使用空接口类型变量去接受所有类型对象。 类比java,有点像Object类型的概念&#x…

文件上传(本地、OSS)

什么是文件上传&#xff1a;将文件上传到服务器。 文件上传-本地存储 前端 <template> <div><!-- 上传文件需要设置表单的提交方式为post&#xff0c;并设置enctype属性、表单项的type属性设置为file --><form action"http://localhost:8080/wedu/…

嵌入式Linux系统编程 — 7.2 进程的环境变量

目录 1 什么是进程的环境变量 2 环境变量的作用 3 应用程序中获取环境变量 3.1 environ全局变量 3.2 获取指定环境变量 getenv 4 添加/删除/修改环境变量 4.1 putenv()函数添加环境变量 4.2 setenv()函数 4.3 unsetenv()函数 1 什么是进程的环境变量 每一个进程都有一…

拉曼光谱入门:2.拉曼光谱发展史、拉曼效应与试样温度的确定方法

1.拉曼光谱技术发展史 这里用简单的箭头与关键字来概括一下拉曼光谱技术的发展史 1928年&#xff1a;拉曼效应的发现 → 拉曼光谱术的初步应用20世纪40年代&#xff1a;红外光谱术的发展 → 拉曼光谱术的限制20世纪60年代&#xff1a;激光作为光源的引入 → 拉曼光谱术的性能提…

绝区叁--如何在移动设备上本地运行LLM

随着大型语言模型 (LLM)&#xff08;例如Llama 2和Llama 3&#xff09;不断突破人工智能的界限&#xff0c;它们正在改变我们与周围技术的互动方式。这些模型早已集成到我们的手机中&#xff0c;但到目前为止&#xff0c;它们理解和处理请求的能力还非常有限。然而&#xff0c;…

详细的讲解一下网络变压器应用POE ,AT BT AF BF的概念,做电路连接指导分析

网络变压器在应用POE&#xff08;Power over Ethernet&#xff09;技术时&#xff0c;承担着重要的角色。它不仅负责数据的传输&#xff0c;同时也为网络设备提供电力。在IEEE 802.3标准中&#xff0c;定义了几个与POE相关的标准&#xff0c;包括802.3af、802.3at、802.3bt等&a…

20240701给NanoPi R6C开发板编译友善之臂的Android12系统

20240701给NanoPi R6C开发板编译友善之臂的Android12系统 2024/7/1 14:19 本文采取这个模式编译&#xff1a;11.6.3 编译Android Tablet版本(首次编译) echo "ROCKCHIP_DEVICE_DIR : device/rockchip/rk3588/nanopi6" > .rockchip_device.mk # export INSTALL_GAP…

笔记15:while语句编程练习

练习一&#xff1a; 编写程序&#xff0c;求 2^24^26^2...n^2? -直到累加和大于或等于 10000 为止&#xff0c;输出累加和 -输出累加式中的项数&#xff0c;以及最大的数 n #include<stdio.h> int main() {int sum 0;int i 1;int n 0;while(sum < 10000)//将sum…

【话题】AI是在帮助开发者还是取代他们

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 引言AI在代码生成中的应用AI在错误检测和自动化测试中的作用对开发者职业前景的影响技能需求的变化与适应策略结论文章推荐 引言 随着人工智能&#xff08;AI&#xff…

基于YOLOv10+YOLOP+PYQT的可视化系统,实现多类别目标检测+可行驶区域分割+车道线分割【附代码】

文章目录 前言视频效果必要环境一、代码结构1、 训练参数解析2、 核心代码解析1.初始化Detector类2. torch.no_grad()3. 复制输入图像并初始化计数器4. 调用YOLOv10模型进行目标检测5. 提取检测结果信息6. 遍历检测结果并在图像上绘制边界框和标签7. 准备输入图像以适应End-to-…

MySQL基础篇(三)数据库的修改 删除 备份恢复 查看连接情况

对数据库的修改主要指的是修改数据库的字符集&#xff0c;校验规则。 将test1数据库字符集改为gbk。 数据库的删除&#xff1a; 执行完该数据库就不存在了&#xff0c;对应数据库文件夹被删除&#xff0c;级联删除&#xff0c;里面的数据表全部被删除。 注意&#xff1a;不要随…

Hack The Box -- Blazorized

一、准备工作 端口扫描 详细扫描 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-30 21:39 EDT Nmap scan report for 10.10.11.22 Host is up (0.26s latency).PORT STATE SERVICE VERSION 53/tcp open domain Simple DNS Plus 80/tcp op…