软件版本
-
电脑系统: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主机都需要配置,这里没有采用配置好一台,分发到另外两台的方式。
-
本地下载zookeeper-3.4.13.tar.gz:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
-
将下载好的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
-
将上传上来的zookeeper-3.4.13.tar.gz解压
cd /app
tar -zxvf zookeeper-3.4.13.tar.gz
-
为zookeeper-3.4.13创建软链接
ln -s zookeeper-3.4.13 zookeeper
-
拷贝simple_zoo.cfg 为 zoo.cfg
cd /app/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
-
编辑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
-
配置 ZooKeeper 环境变量
vim /etc/profile
添加如下内容:
# ZOOKEEPER export ZOOKEEPER_HOME=/app/zookeeper export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置生效
source /etc/profile
-
创建对应配置文件信息的文件夹
cd /app/zookeeper mkdir data mkdir dataLog
如果想要分发到另外两台虚拟机,可以在现在这个时候分发。
-
配置 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
-
-
启动ZooKeeper
在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本。
zkServer.sh start
[root@node1 ~ ]# zkServer.sh start [root@node2 ~ ]# zkServer.sh start [root@node3 ~ ]# zkServer.sh start
-
验证个节点的状态。
zkServer.sh status
[root@node1 zookeeper]# zkServer.sh status [root@node2 zookeeper]# zkServer.sh status [root@node3 zookeeper]# zkServer.sh status
-
关闭ZooKeeper
在ZooKeeper集群的每个结点上,执行关闭ZooKeeper服务的脚本。
zkServer.sh stop
[root@node1 zookeeper]# zkServer.sh stop [root@node2 zookeeper]# zkServer.sh stop [root@node3 zookeeper]# zkServer.sh stop