电脑系统:macOS 10.14.6node
虚拟机软件:Parallels Desktop15apache
Hadoop各节点节点操做系统:CentOS-7-x86_64-Minimal-1908.isovim
CentOS 7 JDK版本:jdk1.8.0_162bash
Hadoop版本:hadoop-2.7.7服务器
ZooKeeper版本:zookeeper-3.4.13app
电脑配置:MacBook Pro 13(8G + 256G)分布式
三台 CentOS 7 配置:内存1G、硬盘13G(与Mac彻底隔离的虚拟机)oop
三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)操作系统
三台虚拟机的用户名:lyh.net
node为主结点、node二、node3为次节点
安装jdk,并配置好Linux环境变量。
参考文献:Hadoop分布式集群搭建 的JDK安装部分
三台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上传到node一、node二、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