环境准备:

(1)VMware Workstation Pro17(其他也可)

(2)Centos7

(3)FinalShell

(4)hadoop集群(具体搭建看我以前的文章:Hadoop完全分布式的搭建(零基础)https://blog.csdn.net/fukase_mio/article/details/143310087)

  • Zookeeper分布式安装部署

1.集群规划

在node1、node2和node3三个节点上部署Zookeeper。

  1. 解压安装

下载zookepper软件,解压至/opt/module/

[hduser@node1 software]$ tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C /opt/module/

在module下找到已解压的zookepper软件

图片1

将文件名改为zookeeper-3.8.4

[hduser@node1 module]$mv apache-zookeeper-3.8.4-bin zookeeper-3.8.4

同步/opt/module/zookeeper-3.8.4目录内容到node2和node3上

[hduser@node1 module]$ xsync zookeeper-3.8.4/

xsync编写见我之前的文章:Hadoop完全分布式的搭建

3.配置服务器编号

在zookeeper下创建一个存放数据的文件夹

[hduser@node1 zookeeper-3.8.4]$ mkdir -p zkData

图片2

在刚刚创建的zkData下面创建myid,并给三台虚拟机编号

[hduser@node1 zkData]$ touch myid

[hduser@node1 zkData]$ vi myid

(添加myid文件,注意一定要在linux里面创建)

在文件中添加与server对应的编号如node1中输入1,注意不要有其他空格,回车等。

图片3

拷贝配置好的zookeeper到其他机器上

[hduser@node1 zkData]$ xsync myid

并分别在node2和node3上修改myid文件中内容为与server对应的编号

图片4

图片5

4.配置zoo.cfg文件

(1)重命名/opt/module/zookeeper-3.8.4/conf这个目录下的zoo_sample.cfg为zoo.cfg

[hduser@node1 conf]$ mv zoo_sample.cfg zoo.cfg

修改/crof中的zoo.cfg

[hduser@node1 conf]$vim zoo.cfg

修改数据存储路径配置

图片6

增加以下内容:

图片7

将zoo.cfg分发到三台虚拟机上

[hduser@node1 conf]$ xsync zoo.cfg
  1. 配置参数解读

server.A=B:C:D。

A是一个数字,表示这个是第几号服务器;

集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。

B是这个服务器的ip地址;

C是这个服务器与集群中的Leader服务器交换信息的端口;

D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口

(5)配置Zookeeper环境变量

[hduser@node1 conf]$ sudo vim /etc/profile.d/my_env.sh

图片8

分发环境变量并source

[hduser@node1 zkData]$ xsync /etc/profile.d/my_env.sh

5.启动zookeeper

(1)分别启动Zookeeper

[hduser@node1 zookeeper-3.8.4]$ bin/zkServer.sh start

[hduser@node2 zookeeper-3.8.4]$ bin/zkServer.sh start

[hduser@node3 zookeeper-3.8.4]$ bin/zkServer.sh start

图片9

(2)查看状态

[hduser@node1 zookeeper-3.8.4]# bin/zkServer.sh status

群起zookeeper脚本(创建方式与xsync相似,可去我以前的文章找)

#!/bin/bash



case $1 in

"start"){

    for i in node1 node2 node3

    do

  echo ---------------zookeeper $i 启动------------------

        ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh start"

    done



}

;;

"stop"){

    for i in node1 node2 node3

    do

        echo ---------------zookeeper $i 停止------------------

        ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh stop"

    done

};;



"status"){

    for i in node1 node2 node3

    do

        echo ---------------zookeeper $i 状态------------------

        ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh status"

    done

};;

Esac

Logo

更多推荐