電腦系統: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