一次完整的大資料環境搭建——zookeeper安裝
所用軟體 版本號
zookeeper zookeeper-3.4.10.tar.gz
jdk jdk-8u171-linux-x64.tar.gz
本次叢集搭建共有三個節點,(這裡是遠端的模式)包括一個主節點 master和兩個從節點 slave1 和 slave2。
首先使用VB建立三個Centos7的虛擬機器,我認為使用VB的一個好處是,使用橋接模式聯網後IP相當於固定,後期不用很麻煩的去設定靜態IP,橋接網路設定方法參考 ofollow,noindex">virtualbox四種網路連線方式及其設定方法 。

圖1 虛擬機器安裝
一、修改主機名(三臺機器均執行)
(1)以主機點 master 為例,首次切換到 root 使用者:su
(2)修改主機名為 master:
set-hostname master
(3)永久修改主機名,編輯/etc/sysconfig/network檔案,內容如下:
NETWORKING=yes HOSTNAME=master
注意儲存退出。(補充一句,可能有用,Linux中vi編輯,需要使用esc退出編輯模式,然後 :wq! 表示儲存並退出。)
(4)下載相關工具
yum install -y net-tools
(5)儲存該檔案,重啟計算機:reboot
(6)檢視是否生效:hostname
二、配置 hosts 檔案(三臺機器)
(1)可以通過 ifconfig/ip addr 命令進行檢視機器的IP。
(2)檢視節點地址之後將三個節點的 ip 地址以及其對應的名稱寫進hosts檔案。這裡我們設定為 master、slave1、slave2。

圖2 hosts檔案配置
注意儲存退出。
三、關閉防火牆(三臺機器)
centos7 中防火牆命令用 firewalld 取代了 iptables,當其狀態是 dead 時,即防火牆關閉。
關閉防火牆:systemctl stop firewalld
檢視狀態:systemctl status firewalld

圖3 關閉防火牆
四、時間同步
(1)時區一致。要保證設定主機時間準確,每臺機器時區必須一致。實驗中我們需要同步網路時間,因此要首先選擇一樣的時區。先確保時區一樣,否則同步以後時間也是有時區差,可以使用 date 命令檢視自己的機器時間。
(2)選擇時區:tzselect

圖4 時間同步
(3)由於 hadoop 叢集對時間要求很高,所以叢集內主機要經常同步。我們可以使用 ntp 網路時間協議進行時間同步,master 作為 ntp 伺服器,其餘的當做 ntp 客戶端,下載 ntp(三臺機器)
yum install –y ntp
(4)master 作為 ntp 伺服器,修改 ntp 配置檔案。(master 上執行)
vi /etc/ntp.conf
server127.127.1.0 #local clock fudge127.127.1.0stratum 10 #stratum設定為其它值也是可以的,其範圍為0~15
重啟 ntp 服務 /bin/systemctl restart ntpd.service
(5) 其他機器同步(slave1,slave2)
等待大概五分鐘(這時候一定要等一會才成功的哦),再到其他機上同步該 master 伺服器時間。
ntpdate master
如果配置平臺式沒有外網連線可以將三臺機器設為統一時間,輸入命令:
date -s 10:00(時間)
五、配置 ssh 免密
SSH 主要通過 RSA 演算法來產生公鑰與私鑰,在資料傳輸過程中對資料進行加密來保障資料的安全性和可靠性,公鑰部分是公共部分,網路上任一結點均可以訪問,私鑰主要用於對資料進行加密,以防他人盜取資料。總而言之,這是一種非對稱演算法,想要破解還是非常有難度的。Hadoop 叢集的各個結點之間需要進行資料的訪問,被訪問的結點對於訪問使用者結點的可靠性必須進行驗證,hadoop 採用的是 ssh 的方法通過金鑰驗證及資料加解密的方式進行遠端安全登入操作,當然,如果 hadoop 對每個結點的訪問均需要進行驗證,其效率將會大大降低,所以才需要配置SSH 免密碼的方法直接遠端連入被訪問結點,這樣將大大提高訪問效率。
(1) 每個結點分別產生公私金鑰:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa(三臺機器)
祕鑰產生目錄在使用者主目錄下的.ssh 目錄中,進入相應目錄檢視:cd .ssh/
( 2 )id_dsa.pub 為公鑰, id_dsa 為私鑰,緊接著將公鑰檔案複製成 authorized_keys 檔案:(僅 master)
cat id_dsa.pub >> authorized_keys(注意在.ssh/路徑下操作)
在主機上連線自己,也叫做 ssh 內迴環:ssh master
(3)讓主結點 master 能通過 SSH 免密碼登入兩個子結點 slave。(slave 中操作)
為了實現這個功能,兩個 slave 結點的公鑰檔案中必須要包含主結點的公鑰資訊,這樣 master 就可以順利安全地訪問這兩個 slave 結點了。slave1 結點通過 scp 命令遠端登入 master 結點,並複製 master 的公鑰檔案到當前的目錄下,且重新命名為 master_das.pub,這一過程需要密碼驗證。
scp master:~/.ssh/id_dsa.pub ./master_das.pub
將master 結點的公鑰檔案追加至authorized_keys 檔案:
cat master_das.pub >>authorized_keys
這時,master 就可以連線 slave1 了,同理 slave2 中也是這麼操作。

圖5 ssh免密登入
六、安裝 JDK (三臺機器)
(1)首先建立工作路徑/usr/java
mkdir -p /usr/java
tar -zxvf /opt/soft /jdk-8u171-linux-x64.tar.gz -C /usr/java/
劃重點了,
(2).修改環境變數
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_171 export CLASSPATH=$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH
(3)生效環境變數:source /etc/profile
檢視 java 版本:java -version
(4)同理 slave 節點,相同安裝步驟,修改環境變數。
scp -r /usr/java root@slave1:/usr/ scp -r /usr/javaroot@slave2:/usr/

圖6 jdk安裝以及環境配置
七、安裝 zookeeper
(1)修改主機名稱到 IP 地址對映配置。
vi /etc/hosts
192.168.15.104 master master.root 192.168.15.127 slave1 slave1.root 192.168.15.124 slave2 slave2.root
(2)修改 ZooKeeper配置檔案。在其中 master 機器上,用 tar -zxvf命令解壓縮 zookeeper-3.4.10.tar.gz。
建立工作目錄:mkdir -p /usr/zookeeper
解壓:tar -zxvf /opt/soft/zookeeper-3.4.10.tar.gz -C/usr/zookeeper/
(3)修改配置檔案conf/zoo.cfg
這時候需要用 cd 命令進入 zookeeper-3.4.10/conf 目錄下,將 zoo_sample.cfg 檔案 拷貝 一份,命名為為“zoo.cfg”。
scp zoo_sample.cfg zoo.cfg
Zoo.cfg 檔案配置如下:
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata clientPort=2181 dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog server.1=master:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888

圖7.1 zoo.cfg配置檔案修改
(4)在 zookeeper-3.4.10的目錄中,建立 zkdata 和 zkdatalog 兩個資料夾,zkdatalog 資料夾,是為了指定 zookeeper 產生日誌指定相應的路徑。
mkdir zkdata mkdir zkdatalog
(5)進入 zkdata 資料夾,建立檔案 myid。

圖7.2 主節點myid編輯
(6)遠端複製分發安裝檔案,上面已經在一臺機器 master 上配置完成 ZooKeeper,現在可以將該配置好的安裝檔案遠端拷貝到叢集中的各個結點對應的目錄下:
scp -r /usr/zookeeper root@slave1:/usr/ scp -r /usr/zookeeper root@slave2:/usr/
(7)設定 myid。在我們配置的 dataDir 指定的目錄下面,建立一個 myid 檔案,裡面內容為一個數字,用來標識當前主機,conf/zoo.cfg 檔案中配置的 server.X 中 X 為什麼數字,則 myid 檔案中就輸入這個數字,slave1 中為 2,slave2 中為 3。
cd /usr/zookeeper/zookeeper-3.4.10/zkdata

圖7.3 子節點myid編輯
(8)配置環境變數並啟動 ZooKeeper。在每臺機器上操作如下:
vi /etc/profile
#set zookeeper environment export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10 PATH=$PATH:$ZOOKEEPER_HOME/bin
生效:source /etc/profile
(9)啟動 ZooKeeper 叢集
在 ZooKeeper 叢集的每個結點上,執行啟動ZooKeeper 服務的指令碼,如下所示:
cd /usr/zookeeper/zookeeper-3.4.10 bin/zkServer.sh start bin/zkServer.sh status

圖7.4 zookeeper狀態確定
通過上面狀態查詢結果可見,一個節點是 Leader,其餘的結點是Follower。
一次完整的大資料環境搭建目錄:
說明:此係列文章是為了記錄本人學習過程,以此來加深理解,希望各位大神路過!!!