zookeeper集羣配置

注意事項

  1. 需要注意每一步執行的順序,例如如果在生成了ssh密鑰後修改了主機名,則需要重新在生成密鑰,還有許多類似的細節需要注意,不然會做出很多重複無用的工作。
  2. 注意權限問題大部分操作都需要加sudo,但是sudo也只是獲取root的部分權限,😂😂一開始切換到root用戶就行了,不需要每個命令加sudo,切換su root如果出現其他權限問題的話,只能自行百度了。
  3. 虛擬機真的很容易崩(可能是因爲我窮的原因。。。),如果出現問題一定要耐心耐心,搜一搜,等一等,多試試總是能解決的,畢竟我這個小集羣也配了四五天,每天都有新問題呢。。。。頭有點禿。。。

下面是完整步驟。。

1. 安裝虛擬機

本篇博客用的是VMWare和CentOS7

在這裏插入圖片描述

開啓虛擬機

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

1579666446811

開始安裝。。。等很久

設置root密碼

在這裏插入圖片描述

在這裏插入圖片描述

2. 複製虛擬機

在創建了一個虛擬機後,找到存放地址,直接將虛擬機複製粘貼即可複製虛擬機
1579143238122

打開文件夾中的.vmx文件即可打開復制後的虛擬機,會跳出一個選項,選擇複製虛擬機即可

在這裏插入圖片描述

在VMware中可以對虛擬機重命名,直接右鍵可以看到選項

1579143520789
由於是直接複製的虛擬機,所以三個虛擬機的MAC地址是相同的,後面需要對其進行修改

3. 設置IP和MAC地址

首先需要查看不同虛擬機的mac地址,路徑爲:虛擬機->設置->網絡適配器->高級
在這裏插入圖片描述

點擊生成按鈕就可以自動生成新的mac地址

3.1 更改mac地址

sudo vim /etc/udev/rules.d/70-persistent-ipoib.rules 

在這裏插入圖片描述

將文件中的MAC地址更改爲虛擬機對應的mac地址即可

3.2 更改ip地址

本篇博客使用的網絡連接方式是橋接模式,橋接網絡是wlan,因此ip應該與WLAN在一個網段,在cmd中輸入ipconfig即可查詢本地WLAN的ip及其他網絡信息。

在這裏插入圖片描述

更改配置文件地址爲

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33 

需要注意的是CentOS6中沒有ifcfg-ens33 文件,對應的是ifcfg-eth0文件,因此如果找不到ifcfg-ens33 文件則需要修改ifcfg-eth0文件

在這裏插入圖片描述

重啓網絡

service network start

需要ifconfig和ping一下驗證網絡配置是否好了。

4. 關閉防火牆和SELinux

4.1 關閉防火牆

sudo service iptables stop

報錯Failed to stop iptables.service: Unit iptables.service not loaded.

在這裏插入圖片描述

參考博客https://blog.csdn.net/zhou_438/article/details/86761398 找到的解決方法如下(大概還是CentOS版本問題,如果是7以上可以用上面的命令完成,7以後的需要用下面的命令完成):

systemctl stop firewalld
systemctl disable firewalld.service

CentOS7中關於防火牆的命令有下面這些:

# 查看防火牆狀態
firewall-cmd --state

# 停止防火牆
systemctl stop firewalld.service

# 禁止防火牆開機啓動
systemctl disable firewalld.service

4.2 關閉selinux

SELinux是Linux中的一種安全子系統,在文件權限外增加了對進程的限制,進程只能在進程允許的範圍內操作資源。如果開啓了SELinux, 需要做非常複雜的配置, 才能正常使用系統, 在學習階段, 在非生產環境, 一般不使用SELinux 。

SELinux的工作模式:

  • enforcing 強制模式
  • permissive 寬容模式
  • disabled 關閉

修改配置文件

# 修改selinux的配置文件
sudo vim /etc/selinux/config

將工作模型從強制模式改爲關閉

在這裏插入圖片描述

5. 虛擬機免密登陸

Hadoop 節點衆多, 所以一般在主節點啓動從節點, 這個時候就需要程序自動在主節點登錄到從節點中, 如果不能免密就每次都要輸入密碼, 非常麻煩

免密登陸利用SSH密鑰:

  • 先在B節點 配置 A節點 的公鑰
  • A節點請求B節點 要求登錄
  • B節點使用A節點的公鑰, 加密一段隨機文本
  • B節點使用 A節點的公鑰, 加密一段隨機文本
  • B節點 驗證文本是否正確

首先需要修改主機名,配置文件路徑如下,將主機名修改爲自己需要的名稱

sudo vim /etc/hostname

修改後可以通過hostnamectl命令查看主機名是否被修改

5.1 生成公鑰和私鑰

ssh-keygen -t rsa

如果這條命令執行後生成了id_rsa id_rsa.pub兩個文件,需要加入授權

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

需要更改.ssh和authorized_keys的權限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

5.2 複製公鑰到同一臺機器
給每臺虛擬機設置ip和域名映射

sudo vim /etc/host
192.168.88.120 hadoop1
192.168.88.130 hadoop2
192.168.88.140 hadoop3

本博客是以三臺虛擬機爲例搭建hadoop集羣,將hadoop1作爲Master,hadoop2和hadoop3分別爲Slave1、Slave2

將hadoop1的公鑰複製給hadoop2

ssh-copy-id -i zoe@hadoop2

報錯ERROR: ssh: Could not resolve hostname hadoop2: Name or service not known

在這裏插入圖片描述

解決方法:將hadoop2和hadoop3的ip加到hadoop1的etc/hosts中

例如192.168.80.100 hadoop0

成功

在這裏插入圖片描述

再次確認ssh hadoop2
在這裏插入圖片描述

6. 安裝SecureCRT並連接虛擬機

參考博客https://blog.csdn.net/qq_39052513/article/details/100272502

在這裏插入圖片描述

7. 安裝jdk

通過SecureCRT連接三臺虛擬機,SecureCRT可以打開交互窗口同時給三臺虛擬機發送命令。View->Command Window->right click->send commands to all sessions

7.1 卸掉自帶的java

# grep是查找含java的文件
rpm -qa | grep java

# 把上面搜索到的文件都刪除,--nodeps是跳過依賴檢查
sudo rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps

7.2 創建安裝目錄

sudo mkdir -p /export/softwares #軟件包存放目錄
sudo mkdir -p /export/servers #安裝目錄

7.3 上傳jdk包並解壓

使用rz -E從本地上傳文件,如果報錯,則需要安裝lrzsz配置工具。

sudo yum -y install lrzsz

將壓縮包放到上面建好的安裝目錄下

# 將壓縮包放到軟件包存放目錄下
sudo mv jdk-8u141-linux-x64.tar.gz /export/softwares/
#上傳jdk到/export/softwares路徑下去,並解壓
sudo tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/

7.4 配置環境變量

vim /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH

修改後要讓文件生效

source /etc/profile
# 查看Java是否安裝
java -version

一個虛擬機安裝好後可以直接複製到其他虛擬機中

scp -r jdk1.8.0_141/ hadoop2:/export/services/

8. 安裝ZooKeeper

8.1 下載zookeeper壓縮包

http://archive.apache.org/dist/zookeeper/

8.2 解壓壓縮包

使用rz -E從本地上傳文件

sudo rz -E

解壓文件

sudo tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/

8.3 修改配置文件

第一臺服務器修改配置文件

cd /export/servers/zookeeper-3.4.9/conf/
sudo cp zoo_sample.cfg zoo.cfg
sudo mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
sudo vim zoo.cfg

修改配置文件
注意服務器配置不能用主機名要用ip,否則後面可能報錯

dataDir=/export/servers/zookeeper-3.4.9/zkdatas
# 保留多少個快照
autopurge.snapRetainCount=3
# 日誌多少小時清理一次
autopurge.purgeInterval=1
# 集羣中服務器地址
server.1=192.168.88.120:2888:3888
server.2=192.168.88.130:2888:3888
server.3=192.168.88.140:2888:3888

8.4 添加myid配置

將第一臺機器上的安裝包傳給其他兩臺機器

scp -r /export/servers/zookeeper-3.4.9/ hadoop2:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ hadoop3:/export/servers/

在第一臺服務器的/export/servers/zookeeper-3.4.9/zkdatas /這個路徑下創建一個文件,文件名爲myid ,文件內容爲1

sudo sh -c 'echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid'

第二臺服務器myid改爲2,第三臺改爲3

sudo sh -c 'echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid'
sudo sh -c 'echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid'

8.5 啓動zookeeper服務

三臺機器都啓動服務

sudo /export/servers/zookeeper-3.4.9/bin/zkServer.sh start

如果報錯看zookeeper.out文件,文件在/export/servers/zookeeper-3.4.9/zkdatas/下

剛開始報錯nohup: 無法運行命令"java": 沒有那個文件或目錄這大概是因爲之前把自帶的jdk刪掉了重新下載的,Java能運行也沒有用,必須在/export/servers/zookeeper-3.4.9/bin/zkServer.sh下增加JAVA_HOME=/export/servers/jdk1.8.0_141,注意要加在最前面,我剛開始加後面也沒有用。
然後又報錯。。。。。。
在這裏插入圖片描述

在配置文件zoo.cfg中添加

quorumListenOnAllIPs=true

查看狀態

/export/servers/zookeeper-3.4.9/bin/zkServer.sh status

在這裏插入圖片描述

發佈了87 篇原創文章 · 獲贊 32 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章