1. 程式人生 > >Zookeeper之介紹和安裝環境準備

Zookeeper之介紹和安裝環境準備

zookeeper概述

 ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。   Zookeeper是一個分散式協調服務;就是為使用者的分散式應用程式提供協調服務 |序號 |功能 | |--|--| |1 |為別的分散式程式服務的| |2 |本身就是一個分散式程式| |3 |主從協調 伺服器節點動態上下線 統一配置管理 分散式共享鎖 一名稱服務| |4 |管理(儲存,讀取)使用者程式提交的資料 併為使用者程式提供資料節點監聽服務|

Zookeeper的叢集機制

zookeeper是為其他分散式程式提供服務的,所以本身自己不能隨便就掛了,所以zookeeper自身的叢集機制就很重要。zookeeper的叢集機制採用的是半數存活機制,也就是整個叢集節點中有半數以上的節點存活,那麼整個叢集環境可用。這也就是說們的叢集節點最好是奇數個節點。

zookeeper叢集節點的角色

Leader

Leader伺服器是Zookeeper叢集工作的核心,其主要工作如下

事務請求的唯一排程和處理者,保證叢集事務處理的順序性。 叢集內部各伺服器的排程者。

Follower

Follower是Zookeeper叢集的跟隨者,其主要工作如下

處理客戶端非事務性請求(讀取資料),轉發事務請求給Leader伺服器。
參與事務請求Proposal的投票。
參與Leader選舉投票。

叢集環境準備

準備3個節點

|ip | 主機名 | |--|--| |192.168.119.20 | zek00| | 192.168.119.21 | zek01 | | 192.168.119.22 | zek02 |

配置ip地址(其他兩個如此參上)

刪除 HWADDR這行資訊 在這裡插入圖片描述 在這裡插入圖片描述

節點的對映關係

其他兩個節點也這樣配置 在這裡插入圖片描述 在這裡插入圖片描述 刪除一個檔案 在這裡插入圖片描述 三個節點修改主機名 在這裡插入圖片描述 在這裡插入圖片描述 重啟

配置免密登入

ssh-keygen

四次回車即可 然後四次回車就可以了,然後就可以在當前登入使用者的主目錄下可以檢視到.ssh目錄,公鑰和私鑰就儲存在該目錄中 在這裡插入圖片描述

傳送公鑰給需要免密登入的節點

ssh-copy-id zek00
ssh-copy-id zek01
ssh-copy-id zek02

在這裡插入圖片描述 分別傳送給各個節點,自身也需要傳送。 然後在其他兩個節點上重複此步驟

關閉防火牆

重啟後生效(永久關閉) 開啟: chkconfig iptables on 關閉: chkconfig iptables off

即時生效,重啟後失效 開啟: service iptables start 關閉: service iptables sto

zookeeper叢集搭建

下載地址:http://mirror.bit.edu.cn/apache/zookeeper/ linux下載命令

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

解壓縮命令

tar -zxvf zookeeper-3.4.14.tar.gz

配置檔案

在這裡插入圖片描述 修改的地方有兩處:

修改zookeeper儲存資料的位置
新增叢集節點資訊
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/root/zookeeper/zkdata
dataLogDir=/root/zookeeper/zklog
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
#zookeeper配置埠
server.1=zek00:2888:3888
server.2=zek01:2888:3888
server.3=zek02:2888:3888

在這裡插入圖片描述

myid配置

在 zookeeper的資料的儲存目錄中建立 myid檔案,本文既是zkData目錄下,這個myid中的內容只有一行資訊,即表示我們叢集節點的標示,範圍在1~255之間。每個節點中的myid的數字和我們在zoo.cfg中的server.數字=host…對應, 建立這塊Data目錄:

mkdir zkData
echo 3 > zkData/myid

在這裡插入圖片描述

分發安裝檔案

將我們hadoop-node01上安裝配置的環境分發到hadoop-node02和hadoop-node03兩個節點相同的目錄下: 在這裡插入圖片描述 確認分發成功後分別修改zek00和zek01上的myid的值分別為1,2

配置環境變數

在這裡插入圖片描述 在這裡插入圖片描述 用上面分發檔案的方法:(scp 引數 目的地主機名 路徑) 傳送給其他兩個節點,此配置不用在安裝根目錄下啟動

啟動

zkServer.sh start

檢視狀態,分別在每個節點上執行

./bin/zkServer.sh status

zek00 在這裡插入圖片描述 zek01 在這裡插入圖片描述 zek02 在這裡插入圖片描述