1. 程式人生 > 其它 >linux解除安裝zookeeper_Zookeeper學習

linux解除安裝zookeeper_Zookeeper學習

技術標籤:linux解除安裝zookeeper解除安裝zookeeper

zookeeper

是一個分散式協調服務的開源框架。主要用來解決分散式叢集中應用系統的一致性問題。

本質上是一個分散式的小檔案儲存系統,提供基於類似檔案系統的目錄樹方式的資料儲存。並且可以對樹中的節點進行有效管理,從而用來維護和監控你儲存的資料的狀態變化。通過監控這些資料狀態的變化,從而可以達到基於資料的叢集管理。諸如:統一命名服務、分散式配置管理、分散式訊息佇列、分散式鎖、分散式協調等功能。

Zookeeper特性:

1.最終一致性: 每個server儲存一份相同的資料指令碼,client無論連線到哪個server,展示的資料都是一致的。

2.順序性:包括全域性有序和偏序兩種,全域性有序是指如果一臺伺服器上訊息a在訊息b前釋出,則在所有server上訊息a都將在訊息b前被髮布;偏序是指如果一個訊息b在訊息a後被同一個傳送者釋出,a必將排在b的前面

3.高可用:如果訊息被其中一臺伺服器接受,那麼將被所有的伺服器接受

4.原子性:一次資料更新要麼成功(半數以上節點成功),要麼失敗,不存在中間狀態

5.實時性:Zookeeper保證客戶端將在一個時間間隔範圍內獲得伺服器的更新資訊,或者伺服器失效的資訊。

Zookeeper叢集角色:

Leader:

Zookeeper叢集工作的核心

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

對於create,setData,delete等有寫操作的請求,則需要統一轉發給leader處理,leader需要決定編號,執行操作,這個過程為一個事務。

負責進行投票的發起和決議,更新系統狀態

Follower:

處理客戶端非事務(讀操作)請求,轉發事務請求給Leader.

參與叢集Leader選舉投票。

用於接收客戶端請求並向客戶端返回結果,在選舉過程中參與投票。

Observer:

觀察者角色,觀察Zookeeper叢集的最新狀態變化並將這些變化同步過來,其對於非事務請求可以進行獨立處理,對於事務請求,則會轉發給Leader伺服器進行處理。

可以接收客戶端的連線,將寫請求轉發給leader節點,但是observer不參加投票,只同步leader的狀態。observer目的是擴充套件系統,提高讀取速度。

節點數目:

Zookeeper Server數目一般為奇數,Leader選舉演算法採用了Paxos協議;Paxos核心思想:當多數(一半以上)Server寫成功,則任務資料寫成功。

Zookeeper叢集搭建.

指的是Zookeeper分散式模式安裝,通常由2n+1臺servers組成。這是因為為了保證Leader選舉(基於Paxos演算法的實現)能過的多數的支援,所以Zookeeper叢集的數量一般為奇數

對於安裝leader+follower模式的叢集,大致步驟如下:

1.配置主機名稱到IP地址對映配置

2.修改Zookeeper配置檔案

3.遠端複製分發安裝檔案

4.設定myid

5.啟動Zookeeper叢集

如果想用Observer模式,可以在對應節點的配置檔案新增如下配置:

peerType=observer

其次,必須在配置檔案指定哪些節點被指定為Observer,如:

server.1:localhost:2181:3181:observer

解除安裝openjdk

| grep java
rpm -e --nodeps java-package

安裝jdk

mkdir -p /export/server
mkdir -p /export/upload
mkdir -p /export/data
cd /export/server
tar zxvf jdk-8u65-linux-x64.tar.gz

配置JAVA環境變數

vi /etc/profile 

新增如下配置

export JAVA_HOME=/root/apps/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar

使得環境變數生效命令

source /etc/profile

檢測叢集時間是否同步

	date -s

檢測防火牆是否關閉

	service iptables stop
	chkconfig iptables off

檢測主機IP對映有沒有配置

#下載安裝包 解壓

tar -zxvf zookeeper-3.4.5.tar.gz
mv zookeeper-3.4.5 zookeeper

#修改環境變數(3臺zookeeper都需要修改)

vi /etc/profile
export ZOOKEEPER_HOME=/home/hadoop/zookeeper
export PATH=$PATH;$ZOOKEEPER_HOME/bin
source /etc/profile

#修改Zookeeper配置檔案

cd zookeeper/conf
cp zoo_sample.cfg zoo.cfg

vi zoo.conf

新增內容

dataDir = /export/server/zookeeper/zkdata
server.1=mini1:2888:3888 ##(心跳埠 選舉埠)
server.2=mini2:2888:3888
server.3=mini3:2888:3888

建立資料夾

cd /home/hadoop/zookeeper/
mkdir zkdata

在data資料夾下新建myid檔案,myid檔案的內容為:

cd zkdata
echo 1 > myid 

#分發安裝包到其他伺服器

scp -r /export/server/zookeeper [email protected]:/export/server/
scp -r /export/server/zookeeper [email protected]:/export/server/

#修改其他機器的配置檔案

修改myid檔案

到mini2上:修改myid為2 echo 2 > myid

到mini3上:修改myid為3 echo 3 > myid

#啟動(每臺機器)

zkServer.sh start

配置檔案中引數說明

tickTime這個時間是作為zookeeper伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是說每個tickTime時間

initLimit這個配置項是用來配置zookeeper接受客戶

syncLimit這個配置項標識leader與follower之間傳送訊息,請求和應答時間長度,最長不能超過多個tickTime的時間長度

dataDir就是zookeeper儲存資料的目錄,預設情況下zookeeper將寫資料的日誌檔案也儲存在這個目錄裡

clientPort這個埠就是客戶端連線zookeeper伺服器的埠,zookeeper會監聽這個埠接受客戶端的請求訪問

server.A=B:C:D中A是一個數字,表示這個是第幾號伺服器,B是這個伺服器的IP地址,C是一個埠用來叢集成員的資訊

Zookeeper資料模型

在結構上和標準檔案系統的非常相似,擁有一個層次的名稱空間,都是採用樹形層次結構,Zookeeper樹中的每個節點被稱為Znode.和檔案系統的目錄樹一樣,Zookeeper樹中的每個節點可以擁有子節點

1.Znode兼具檔案和目錄兩種特點。

2.Znode具有原子性操作

3.Znode儲存資料大小有限制

4.Znode通過路徑引用

資料結構圖

ff5e7881769c00126b5fb43ecbe1643b.png

圖中的每個節點稱為一個Znode,每個Znode由3部分組成:

1.stat:此為狀態資訊,描述該Znode的版本,許可權等資訊

2.data:與該Znode關聯的資料

3.children:該Znode下的子節點

節點型別

Znode有兩種,分別為臨時節點永久節點

節點的型別在建立時即被確定,並且不能改變

  1. 臨時節點:該節點的生命週期依賴於建立它們的會話。一旦會話結束,臨時節點將被自動刪除,當讓也可以手動刪除。臨時節點不允許擁有子節點
  2. 永久節點:該節點的生命週期不依賴於會話,並且只有在客戶端顯示執行刪除操作時,它們才能被刪除。

Znode還有一個序列化的特性,如果建立的時候指定的話,該Znode的名字後面會自動追加一個不斷增加的序列號。

這樣便會存在4種類型的Znode節點,分別對應:

  • PERSISTENT:永久節點
  • EPHEMERAL:臨時節點
  • PERSISTENT_SEQUENTIAL:永久節點 序列化
  • EPHEMERAL_SEQUENTIAL:臨時節點序列化

節點屬性

每個Znode都包含一系列的屬性,通過命令get,可以獲得節點的屬性。

  • dataVersion:資料版本號,每次對節點進行set操作,dataVersion的值都會增加1.
  • cversion:數子節點的版本號。當znode的子節點有變化時,cversion的值就會增加1
  • aclVersion:ACL版本號
  • cZxid:Znode建立的事務id
  • mZxid:Znode被修改的事務id,即每次對znode的修改都會更新mZxid
  • ephemeralOwner:如果該節點為臨時節點,ephemeralOwner值表示與該節點繫結的session id,如果不是,ephemeralOwner值為0
  • 在client和server通訊之前,首先需要建立連線,該連線稱為session,連線建立後,如果發生連線超時、授權失敗、或者顯示關閉連線,連線便處於CLOSED狀態,此時session結束.

Zookeeper shell

客戶端連線

執行zkCli.sh -server ip 進入命令列工具。

輸入help,輸出zk shell提示

zkServer.sh status 檢視zk狀態