Zookeeper
概述
1. Zookeeper
本身是
Apache
提供的一套開(kāi)源的用于進(jìn)行分布式管理和協(xié)調(diào)的機(jī)制
/
框架。官網(wǎng):
http
s://zookeeper.apache.org
2. Zookeeper
本身提供了
中心化服務(wù)
,包含統(tǒng)一配置、統(tǒng)一命名、分布式鎖服務(wù)、分布式組服務(wù),更
多的時(shí)候,
Zookeeper
充當(dāng)了一個(gè)
注冊(cè)中心
來(lái)使用
3. Zookeeper
是
Yahoo!
仿照了
Google
的
<The Chubby Lock Service>
開(kāi)發(fā)的后來(lái)貢獻(xiàn)給了
Apache
的
一套框架
安裝
概述
1.
在大數(shù)據(jù)中,幾乎所有的框架,它的安裝都提供了三種模式
1.
單機(jī)模式:在一臺(tái)服務(wù)器上安裝,往往能夠啟動(dòng)這個(gè)框架的部分服務(wù)
2.
偽分布式:在一臺(tái)服務(wù)器上安裝,但是利用多個(gè)線程模式分布式環(huán)境,能夠啟動(dòng)這個(gè)框架的
大部分甚至于服務(wù)
3.
分布式:在集群上安裝,能夠啟動(dòng)這個(gè)框架的所有服務(wù)
2.
現(xiàn)階段,先安裝單機(jī)模式,搞定所有的概念之后,再到集群中安裝
安裝
JDK
1. Centos7
中可能自帶了
OpenJDK
,需要卸載移除掉
2.
上課的時(shí)候要求,所有的軟件安裝包放在
/opt/presoftware
下,將軟件安裝在
/opt/software
下
3.
進(jìn)入
presoftware
下,將
JDK
安裝包上傳到這個(gè)目錄下
4.
解壓到
software
目錄下
5.
進(jìn)入
software
目錄下
rpm
-qa
|
grep
-i
jdk | xargs rpm
-ev --nodeps
cd
/opt
mkdir
presoftware
mkdir
software
cd
presoftware
#
將安裝包上傳到這個(gè)路徑下
rz
tar
-xvf
jdk-8u371-linux-x64.tar.gz
-C
/opt/software/
6.
在
Linux
中, 環(huán)境變量的配置有兩個(gè)位置:
/etc/profile
和
~/.bashrc
。無(wú)論哪一個(gè)路徑,默
認(rèn)都會(huì)掃描
/etc/profile.d
目錄下的腳本文件,所以,配置環(huán)境變量一般是放
在
/etc/profile.d
安裝
Zookeeper(
單機(jī)模式
)
1.
將安裝包上傳到
Linux
上
2.
解壓
3.
重命名
4.
配置環(huán)境變量
5.
配置
Zookeeper
1.
進(jìn)入
Zookeeper
的配置目錄
cd
/opt/software/
#
重命名
mv
jdk1.8.0_371/ jdk1.8
#
需要在
/etc/profile.d
來(lái)腳本文件
touch
/etc/profile.d/javahome.sh
#
編輯腳本文件
vim
/etc/profile.d/javahome.sh
#
在文件中添加
export
JAVA_HOME
=
/opt/software/jdk1.8
export
PATH
=
$PATH
:
$JAVA_HOME
/bin
#
保存退出,生效
source
/etc/profile.d/javahome.sh
#
測(cè)試
javac
-version
#
或者
java
-version
cd
/opt/presoftware/
rz
tar
-xvf
apache-zookeeper-3.9.1-bin.tar.gz
-C
/opt/software/
cd
/opt/software/
mv
apache-zookeeper-3.9.1-bin/ zookeeper-3.9.1
#
編輯文件
vim
/etc/profile.d/zookeeperhome.sh
#
在文件中添加
export
ZOOKEEPER_HOME
=
/opt/software/zookeeper-3.9.1
export
PATH
=
$PATH
:
$ZOOKEEPER_HOME
/bin
#
保存退出,生效
source
/etc/profile.d/zookeeperhome.sh
cd
/opt/software/zookeeper-3.9.1/conf
2.
修改配置
3.
啟動(dòng)
Zookeeper
4.
檢查
Zookeeper
的狀態(tài)
5.
進(jìn)入
Zookeeper
的客戶端
技術(shù)點(diǎn)? ??
特點(diǎn)
1. Zookeeper
默認(rèn)對(duì)外提供的客戶端端口號(hào)是
2181
,可以通過(guò)
zoo.cfg
中的
clientPort
屬性來(lái)修
改,但是不建議
2. Zookeeper
本身是一個(gè)樹(shù)狀結(jié)構(gòu),根節(jié)點(diǎn)是
/
3.
不同于
Linux
的地方在于,
Zookeeper
中沒(méi)有相對(duì)路徑的說(shuō)法,所有節(jié)點(diǎn)路徑都必須從根節(jié)點(diǎn)開(kāi)始
計(jì)算
4.
當(dāng)
Zookeeper
啟動(dòng)的時(shí)候,自動(dòng)的添加一個(gè)節(jié)點(diǎn)
/zookeeper
,存放的是
Zookeeper
本身的集群信
息
5.
在
Zookeeper3.7
及以前的版本中,要求每一個(gè)節(jié)點(diǎn)在創(chuàng)建的時(shí)候必須攜帶數(shù)據(jù),這個(gè)數(shù)據(jù)可以是
對(duì)節(jié)點(diǎn)的描述或者是配置信息
6.
每一個(gè)節(jié)點(diǎn)攜帶的數(shù)據(jù)默認(rèn)是在內(nèi)存以及磁盤(pán)上
1.
維系在內(nèi)存的目的是為了讀寫(xiě)快
2.
維系在磁盤(pán)的目的是為了持久化
7.
數(shù)據(jù)在磁盤(pán)上的存儲(chǔ)路徑默認(rèn)由
dataLogDir
屬性來(lái)控制,默認(rèn)情況下,如果沒(méi)有單獨(dú)指定,
dataLogDir
的屬性值和
dataDir
是一致的
8.
臨時(shí)節(jié)點(diǎn)下不能掛載子節(jié)點(diǎn)!
9. Zookeeper
會(huì)為每一次的寫(xiě)操作分配一個(gè)全局遞增的編號(hào),這個(gè)編號(hào)稱(chēng)之為事務(wù)
id
,簡(jiǎn)寫(xiě)為
Zxid
。一個(gè)節(jié)點(diǎn)剛被創(chuàng)建的時(shí)候,三個(gè)事務(wù)
id
是一致的
操作命令
#
復(fù)制文件
-
注意:
Zookeeper
啟動(dòng)的時(shí)候默認(rèn)會(huì)使用
zoo.cfg
中的配置
cp
zoo_sample.cfg zoo.cfg
#
編輯文件
vim
zoo.cfg
#
修改
dataDir
屬性的值
dataDir
=
/opt/software/zookeeper-3.9.1/data
zkServer.sh
start
#
方式一:
jps
#
如果有
QuorumPeerMain
,那么表示
Zookeeper
在運(yùn)行
#
方式二:
zkServer.sh status
zkCli.sh
命令? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
解釋
ls /? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看跟節(jié)點(diǎn)的子節(jié)點(diǎn)
create /big? ? ? ? ? ? ? ? ? ? ? 在根節(jié)點(diǎn)下創(chuàng)建子節(jié)點(diǎn)big -
這種創(chuàng)建方式是從
Zookeeper的3.8
版本開(kāi)的
create /test 'this is a test
server'? ? ? ? ? ? ? ? ? ? ? ? ? ? 在根節(jié)點(diǎn)下創(chuàng)建test
節(jié)點(diǎn),并且攜帶數(shù)據(jù)
create /data ''? ? ? ? ? ? ? ? ?創(chuàng)建節(jié)點(diǎn),并且給定數(shù)據(jù)為空
get /big? ? ? ? ? ? ? ? ? ? ? ? ? ?獲取節(jié)點(diǎn)的數(shù)據(jù)
set /video 'size=500M'? ? 修改數(shù)據(jù)
delete /test? ? ? ? ? ? ? ? ? ? ?刪除節(jié)點(diǎn),要求節(jié)點(diǎn)為空(
不能有子節(jié)點(diǎn)
)
rmr /video? ? ? ? ? ? ? ? ? ? ?刪除這個(gè)節(jié)點(diǎn)及子節(jié)點(diǎn),從Zookeeper3.8
開(kāi)始,這個(gè)命令就過(guò)時(shí)
了? ? ? ?
deleteall /video? ? ? ? ? ? ? ?刪除這個(gè)節(jié)點(diǎn)及子節(jié)點(diǎn),從Zookeeper3.8
開(kāi)始建議使用的命令
ls
-
w /? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 監(jiān)控指定節(jié)點(diǎn)的子節(jié)點(diǎn)的個(gè)數(shù)變化 -
只監(jiān)控一次
get
-
w /news? ? ? ? ? ? ? ? ? ?監(jiān)控指定節(jié)點(diǎn)的數(shù)據(jù)是否變化 -
只監(jiān)控一次
removewatches /news? ? 移除監(jiān)控
history? ? ? ? ? ? ? ? ? ? ? ? ? ?查看執(zhí)行過(guò)的指令
redo 24? ? ? ? ? ? ? ? ? ? ? ? ?重新執(zhí)行編號(hào)為24
的命令
close? ? ? ? ? ? ? ? ? ? ? ? ? ? ?關(guān)閉連接,但是沒(méi)有退出Zookeeper
客戶端
quit? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?直接退出客戶端,需要通過(guò) zkCli.sh
重新進(jìn)入
connect localhost:2181? 連接本機(jī)的2181
端口
getAllChildrenNumber /? 獲取根節(jié)點(diǎn)以及所有子節(jié)點(diǎn)的數(shù)量
setquota
-
n 2 /news? ? ?/news節(jié)點(diǎn)下的子節(jié)點(diǎn)個(gè)數(shù)最好不要超過(guò)
2
個(gè)
setquota
-
b 1024 /news? ? ? ? ?/news節(jié)點(diǎn)的數(shù)據(jù)最好不要超過(guò)
1024B
listquota /news? ? ? ? ? ? ? ?獲取/news
節(jié)點(diǎn)上的限制
delquota /news? ? ? ? ? ? ? 刪除/news
節(jié)點(diǎn)上的限制
version? ? ? ? ? ? ? ? ? ? ? ? ? ?查看Zookeeper
的版本
whoami? ? ? ? ? ? ? ? ? ? ? ? ? 查看當(dāng)前的用戶
sync /? ? ? ? ? ? ? ? ? ? ? ? ? ? ?將根目錄下的數(shù)據(jù)同步給其他的follower
getEphemerals /? ? ? ? ? ? ?獲取根節(jié)點(diǎn)的臨時(shí)節(jié)點(diǎn)
create
-
e /big ''? ? ? ? ? ? ? ?創(chuàng)建臨時(shí)節(jié)點(diǎn)
命令? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
解釋
create
-
s /test/t ''? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建持久順序節(jié)點(diǎn)
create
-
e
-
s /test/t ''? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建臨時(shí)順序節(jié)點(diǎn)
stat /news? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看節(jié)點(diǎn)的屬性/
信息
節(jié)點(diǎn)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
解釋
Persistent? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 持久節(jié)點(diǎn)
Ephemeral? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?臨時(shí)節(jié)點(diǎn)
Persistent_Sequential? ? ? ? ? ? ? ? ? ? ?持久順序節(jié)點(diǎn)
Ephemeral_Sequential? ? ? ? ? ? ? ? ? ? 臨時(shí)順序節(jié)點(diǎn)
屬性
/
信息? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
解釋
cZxid? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)節(jié)點(diǎn)創(chuàng)建對(duì)應(yīng)的事務(wù)id
,
整個(gè)過(guò)程中第幾個(gè)寫(xiě)操作
創(chuàng)建了這個(gè)節(jié)點(diǎn)
ctime? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)節(jié)點(diǎn)創(chuàng)建對(duì)應(yīng)的時(shí)間
mZxid? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?這個(gè)節(jié)點(diǎn)的數(shù)據(jù)修改對(duì)應(yīng)的事務(wù)id
,
整個(gè)過(guò)程中第幾個(gè)寫(xiě)操作
修改了數(shù)據(jù)
mtime? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)節(jié)點(diǎn)的數(shù)據(jù)修改對(duì)應(yīng)的時(shí)間
pZxid? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?這個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)個(gè)數(shù)變化對(duì)應(yīng)的事務(wù)id
,
整個(gè)過(guò)程中第幾個(gè)寫(xiě)操作
導(dǎo)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?致這個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)個(gè)數(shù)產(chǎn)生了變化
cversion? ? ? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)個(gè)數(shù)變化了幾次
dataVersion? ? ? ? ? ? ? ? ? ? ? ?這個(gè)節(jié)點(diǎn)的數(shù)據(jù)被修改了幾次 -
數(shù)據(jù)版本
aclVersion? ? ? ? ? ? ? ? ? ? ? ? ?這個(gè)節(jié)點(diǎn)的權(quán)限被修改了幾次
ephemeralOwner? ? ? ? ? ? ? 如果是持久節(jié)點(diǎn),此項(xiàng)值為0x0
;如果是臨時(shí)節(jié)點(diǎn),此項(xiàng)值為當(dāng)前的會(huì)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 話編 號(hào)(sessionid)
dataLength? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)的長(zhǎng)度(
字節(jié)個(gè)數(shù)
)
numChildren? ? ? ? ? ? ? ? ? ? ? 子節(jié)點(diǎn)個(gè)數(shù)
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-840760.html
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-840760.html
到了這里,關(guān)于Zookeeper(動(dòng)物園管理員)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!