🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
前提条件:已经完成了hadoop的完全分布式环境搭建 ```java 【hadoop环境搭建 -> hadoop配置 -> 完全分布运行模式配置】 ``` 1. 集群规划 在hadoop102、hadoop103和hadoop104三个节点上部署Zookeeper。 2. 解压安装 (1)上传ZooKeeper安装包到hadoop102主机/opt/software目录下 (2)解压zookeeper安装包到/opt/install/目录下 ```shell [hadoop@hadoop102 software]$ tar -zxf zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/install/ ``` (3)建立软连接 ```shell [hadoop@hadoop102 software]$ ln -s /opt/install/zookeeper-3.4.5-cdh5.14.2 /opt/install/zookeeper ``` (4)在/opt/install/zookeeper/这个目录下创建zkData目录 ``` [hadoop@hadoop102 software]$ cd /opt/install/zookeeper [hadoop@hadoop102 zookeeper]$ mkdir -p zkData ``` (5)重命名/opt/install/zookeeper/conf这个目录下的zoo_sample.cfg为zoo.cfg ```shell [hadoop@hadoop102 zookeeper]$ cd /opt/install/zookeeper/conf [hadoop@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg ``` 3. 配置zoo.cfg文件 (1)具体配置 ```shell [hadoop@hadoop102 conf]$ vi zoo.cfg ``` 修改dataDir的值,配置为下面的值。 ``` dataDir=/opt/install/zookeeper/zkData ``` 在文件末尾增加如下配置。 ``` server.2=hadoop102:2888:3888 server.3=hadoop103:2888:3888 server.4=hadoop104:2888:3888 ``` 参数含义解释如下。 Server.A=B:C:D。 A:一个数字,表示每个服务器编号,注意必须唯一。 B:服务器的ip地址,规划了几个机器作为ZooKeeper服务器,就有几行记录,每一个机器都对应一行。 C:是这个服务器与集群中的Leader服务器交换信息的端口; D:如果集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。 4. 集群操作 (1)在dataDri指定的目录/opt/install/zookeeper/zkData下创建一个myid的文件 ```shell [hadoop@hadoop102 zkData]$ touch myid ``` (2)编辑myid文件 ```shell vi myid 在文件中添加与server对应的编号:如2。 ``` (3)将配置好的zookeeper分发到其他机器上 ```shell [hadoop@hadoop102 ~]$ scp -r /opt/install/zookeeper/ hadoop@hadoop103:/opt/install/ [hadoop@hadoop102 ~]$ scp -r /opt/install/zookeeper/ hadoop@hadoop104:/opt/install/ ``` 并分别在hadoop103、hadoop104修改myid文件中内容为3、4。 (4)配置环境变量 在每一台机器上给zookeeper配置环境变量。 ```shell [hadoop@hadoop102 zookeeper]$ vim /etc/profile ``` 添加如下配置。 ```shell export ZK_HOME=/opt/install/zookeeper export PATH=$ZK_HOME/bin:$ZK_HOME/sbin:$PATH ``` 让配置文件生效。 ```shell [hadoop@hadoop102 zookeeper]$ source /etc/profile ``` (5)分别启动zookeeper服务 ```shell [hadoop@hadoop102 ~]$ zkServer.sh start [hadoop@hadoop103 ~]$ zkServer.sh start [hadoop@hadoop104 ~]$ zkServer.sh start ``` (6)jps查看进程 ``` [hadoop@hadoop102 ~]$ jps 3329 Jps 3311 QuorumPeerMain ``` (7)查看状态 ``` [hadoop@hadoop102 ~]$ zkServer.sh status JMX enabled by default Using config: /opt/install/zookeeper/bin/../conf/zoo.cfg Mode: follower [hadoop@hadoop103 ~]$ zkServer.sh status JMX enabled by default Using config: /opt/install/zookeeper/bin/../conf/zoo.cfg Mode: leader [hadoop@hadoop104 ~]$ bin/zkServer.sh status JMX enabled by default Using config: /opt/install/zookeeper/bin/../conf/zoo.cfg Mode: follower ``` 可以使用 zkServer.sh stop 关闭zookeeper服务。 <br/> **`zoo.cfg`** 文件中几个参数含义如下: 1. `tickTime`: 通信心跳数,ZooKeeper服务器心跳时间,单位毫秒Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。 它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)。 2. `initLimit`: LF初始通信时限。集群中的Follwer跟随者服务器与Leader领导者服务器(Leader)之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。投票选举新Leader的初始化时间,Follwer在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许Follwer在initLimit时间内完成这个工作。 3. `syncLimit `: LeaderFollwer同步通信时限。 集群中Leader与Follwer之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。在运行过程中,Leader负责与ZooKeeper集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果Leader发出心跳包在syncLimit之后,还没有从Follwer那收到响应,那么就认为这个Follwer已经不在线了。 4. `dataDir `: 数据文件目录+数据持久化路径 保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。 5. `clientPort`: 客户端连接端口,监听客户端连接的端口。