当前位置:   article > 正文

大数据之Zookeeper部署

大数据之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 
      
      • 1
      • 2
      • 3
      • 4
    • 将安装包解压到hadoop101服务器的/opt/module/目录下:
      tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
      
      • 1
    • 创建软连接命名为zookeeper
      ln -s  apache-zookeeper-3.5.7-bin  zookeeper
      
      • 1
    • 使用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/
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
  2. 配置zoo.cfg文件

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

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

      • 修改数据存储路径为
        dataDir=/opt/module/zookeeper/zkData
        
        • 1
      • 增加集群配置信息
        server.1=hadoop101:2888:3888
        server.2=hadoop102:2888:3888
        server.3=hadoop103:2888:3888
        
        • 1
        • 2
        • 3
    • 配置文件解读
      在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/
      
      • 1
      • 2
  3. 配置服务器编号

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

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

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

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

      #!/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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
    • 使用脚本启动、停止或检查集群状态:

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

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

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

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

参考资料

大数据之Hadoop部署

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/898712
推荐阅读
相关标签
  

闽ICP备14008679号