Hadoop 分布式下安装和配置 ZooKeeper(CentOS 7系统)

软件版本

  • 电脑系统:macOS 10.14.6

  • 虚拟机软件:Parallels Desktop15

  • Hadoop各节点节点操作系统:CentOS-7-x86_64-Minimal-1908.iso

  • CentOS 7 JDK版本:jdk1.8.0_162

  • Hadoop版本:hadoop-2.7.7

  • ZooKeeper版本:zookeeper-3.4.13


环境配置说明

  • 电脑配置:MacBook Pro 13(8G + 256G)

  • 三台 CentOS 7 配置:内存1G、硬盘13G(与Mac完全隔离的虚拟机)

  • 三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)

  • 三台虚拟机的用户名:lyh

  • node为主结点、node2、node3为次节点


安装前提

安装jdk,并配置好Linux环境变量。

参考文献:Hadoop分布式集群搭建 的JDK安装部分


ZooKeeper的安装与配置

三台node主机都需要配置,这里没有采用配置好一台,分发到另外两台的方式。

  1. 本地下载zookeeper-3.4.13.tar.gz:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

  2. 将下载好的zookeeper-3.4.13.tar.gz上传到node1、node2、node3

    scp -r ~/Desktop/zookeeper-3.4.13.tar.gz lyh@10.211.55.18:/app
    
    scp -r ~/Desktop/zookeeper-3.4.13.tar.gz lyh@10.211.55.19:/app
    
    scp -r ~/Desktop/zookeeper-3.4.13.tar.gz lyh@10.211.55.20:/app
    
  3. 将上传上来的zookeeper-3.4.13.tar.gz解压

    cd /app
    
    tar -zxvf zookeeper-3.4.13.tar.gz
    
  4. 为zookeeper-3.4.13创建软链接

    ln -s zookeeper-3.4.13 zookeeper
    
  5. 拷贝simple_zoo.cfg 为 zoo.cfg

    cd /app/zookeeper/conf
    
    cp zoo_sample.cfg zoo.cfg
    
  6. 编辑zoo.cfg文件

    cd /app/zookeeper/conf
    
    vim zoo.cfg
    

    修改内容如下(可以参考):

    # 服务器与服务器之间 或 客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳。
    tickTime=2000
    
    # 配置 Zookeeper 接受客户端(此客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个
    # 心跳时间间隔数。当已超过initLimit个tickTime长度后 Zookeeper 服务器还没有收到客户端的返回信息,则表明客户端连接失败。总的时间长度就是 initLimit * tickTime 秒。
    initLimit=10
    
    # 配置 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 syncLimit * tickTime 秒。
    syncLimit=5
    
    # Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
    dataDir=/app/zookeeper/data
    
    # dataDir和dataLogDir分到不同的目录里
    dataLogDir=/app/zookeeper/dataLog
    
    # Zookeeper服务器监听的端口,以接受客户端的访问请求。
    clientPort=2181
    
    # 服务器名称与地址:集群信息
    # server.A=B:C:D
    # A 为服务器编号、B 为服务器的 ip 地址、C 为这个服务器与集群中的 Leader 服务器交换信息的端口
    # D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,此端口就是用来执行选举时服务器相互通信的端口。
    # 2888端口是zookeeper服务相互通信使用的,3888端口是zookeeper服务选举使用的
    server.1=node1:2888:3888
    server.2=node2:2888:3888
    server.3=node3:2888:3888
    
  7. 配置 ZooKeeper 环境变量

    vim /etc/profile
    

    添加如下内容:

    # ZOOKEEPER
    export ZOOKEEPER_HOME=/app/zookeeper
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    

    使配置生效

    source /etc/profile
    
  8. 创建对应配置文件信息的文件夹

    cd /app/zookeeper
    mkdir data
    mkdir dataLog
    

    如果想要分发到另外两台虚拟机,可以在现在这个时候分发。

  9. 配置 myid 文件

    这个文件在上述dataDir 指定的目录下,这个文件里面就只有一个数据,就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。

    • 方式1

      node1:

      echo "1" >> /app/zookeeper/data/myid
      

      node2:

      echo "2" >> /app/zookeeper/data/myid
      

      node3:

      echo "3" >> /app/zookeeper/data/myid
      
    • 方式2

      node1

      touch /app/zookeeper/data/myid
      vim /app/zookeeper/data/myid
      

      添加内容:1


      node2

      touch /app/zookeeper/data/myid
      vim /app/zookeeper/data/myid
      

      添加内容:2


      node3

      touch /app/zookeeper/data/myid
      vim /app/zookeeper/data/myid
      

      添加内容:3


  10. 启动ZooKeeper

    在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本。zkServer.sh start

    [root@node1 ~ ]# zkServer.sh start
    [root@node2 ~ ]# zkServer.sh start
    [root@node3 ~ ]# zkServer.sh start
    
  11. 验证个节点的状态。zkServer.sh status

    [root@node1 zookeeper]# zkServer.sh status
    [root@node2 zookeeper]# zkServer.sh status
    [root@node3 zookeeper]# zkServer.sh status
    
  12. 关闭ZooKeeper

    在ZooKeeper集群的每个结点上,执行关闭ZooKeeper服务的脚本。zkServer.sh stop

    [root@node1 zookeeper]# zkServer.sh stop
    [root@node2 zookeeper]# zkServer.sh stop
    [root@node3 zookeeper]# zkServer.sh stop
    

参考文献

  1. CentOS7安装配置zookeeper集群
Good Good Write Bug, Day Day Up
原文地址:https://www.cnblogs.com/liyihua/p/14482426.html