zookeeper簡(jiǎn)介
Zookeeper是一個(gè)分布式協(xié)調(diào)服務(wù)呼巴;就是為用戶的分布式應(yīng)用程序提供協(xié)調(diào)服務(wù)
1眉抬、zookeeper是為別的分布式程序服務(wù)的
2遭顶、Zookeeper本身就是一個(gè)分布式程序(只要有半數(shù)以上節(jié)點(diǎn)存活喇聊,zk就能正常服務(wù))
3芜飘、Zookeeper所提供的服務(wù)涵蓋:主從協(xié)調(diào)务豺、服務(wù)器節(jié)點(diǎn)動(dòng)態(tài)上下線、統(tǒng)一配置管理嗦明、分布式共享鎖笼沥、統(tǒng)一名稱服務(wù)……
4、雖然說可以提供各種服務(wù),但是zookeeper在底層其實(shí)只提供了兩個(gè)功能:
管理(存儲(chǔ)奔浅,讀取)用戶程序提交的數(shù)據(jù)馆纳;
并為用戶程序提供數(shù)據(jù)節(jié)點(diǎn)監(jiān)聽服務(wù);
Zookeeper集群的角色: Leader 和 follower (Observer)
只要集群中有半數(shù)以上節(jié)點(diǎn)存活乘凸,集群就能提供服務(wù)
1厕诡、zookeeper的安裝
在裝有已經(jīng)搭建好的Hadoop集群的Linux虛擬機(jī)來進(jìn)行安裝,另外zookeeper是java開發(fā)的所以先裝好jdk(1.7及以上)营勤。
1灵嫌、將zookeeper-3.4.6.tar.gz上傳到/opt/modules/app目錄下。
2葛作、將zookeeper-3.4.6.tar.gz解壓到app文件夾下寿羞。
3、將其重命名改為zookeeper方便操作赂蠢。
[root@localhost app]# tar -zxvf zookeeper-3.4.6.tar.gz
3绪穆、進(jìn)入apps/zookeeper-3.4.6.tar.gz/conf文件夾,復(fù)制zoo_example.cfg改名為zoo.cfg
[root@hadoop app]# cd zookeeper/conf
[root@hadoop conf]# ll
總用量 12
-rw-rw-r--. 1 1000 1000 535 2月 20 2014 configuration.xsl
-rw-rw-r--. 1 1000 1000 2161 2月 20 2014 log4j.properties
-rw-rw-r--. 1 1000 1000 922 2月 20 2014 zoo_sample.cfg
[root@hadoop conf]# cp zoo_sample.cfg zoo.cfg
[root@hadoop conf]# ll
總用量 16
-rw-rw-r--. 1 1000 1000 535 2月 20 2014 configuration.xsl
-rw-rw-r--. 1 1000 1000 2161 2月 20 2014 log4j.properties
-rw-r--r--. 1 root root 922 9月 12 18:05 zoo.cfg
-rw-rw-r--. 1 1000 1000 922 2月 20 2014 zoo_sample.cfg
4虱岂、修改配置文件zoo.cfg玖院,這里只修改數(shù)據(jù)存儲(chǔ)文件夾位置
5、創(chuàng)建文件夾 /root/zkdata
[root@hadoop01 ~]# mkdir zkdata
6第岖、進(jìn)入/root/zookeeper-3.4.6/bin,啟動(dòng)zookeeper并且查看是否啟動(dòng)成功难菌。
[root@hadoop01 bin]# ll
總用量 36
-rwxr-xr-x. 1 1000 1000 238 2月 20 2014 README.txt
-rwxr-xr-x. 1 1000 1000 1937 2月 20 2014 zkCleanup.sh
-rwxr-xr-x. 1 1000 1000 1049 2月 20 2014 zkCli.cmd
-rwxr-xr-x. 1 1000 1000 1534 2月 20 2014 zkCli.sh
-rwxr-xr-x. 1 1000 1000 1333 2月 20 2014 zkEnv.cmd
-rwxr-xr-x. 1 1000 1000 2696 2月 20 2014 zkEnv.sh
-rwxr-xr-x. 1 1000 1000 1084 2月 20 2014 zkServer.cmd
-rwxr-xr-x. 1 1000 1000 5742 2月 20 2014 zkServer.sh
[root@hadoop01 bin]# zkServer.sh start
JMX enabled by default
Using config: /opt/modules/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop01 bin]# zkServer.sh status
JMX enabled by default
Using config: /opt/modules/app/zookeeper/bin/../conf/zoo.cfg
Mode: standalone
zookeeper的集群
1、首先使用的是第一臺(tái)這臺(tái)服務(wù)器蔑滓,前面6步與zookeeper安裝一致郊酒,唯一區(qū)別就是配置文件修改不一樣
注:2888是leader與follower之間通信的端口,3888是投票使用的端口(數(shù)字不做要求键袱,但應(yīng)避免沖突)燎窘。
2、將配置好的app下的zookeeper傳到另外兩臺(tái)linux
[root@hadoop01 app]# scp -r zookeeper hadoop03:/opt/modules/app
root@192.168.25.127's password:
...
3蹄咖、zkdata文件夾下創(chuàng)建myid文件設(shè)置值為2
[root@localhost zkdata]# echo 1 > myid
[root@localhost zkdata]# cat myid
1
注:另外兩臺(tái)分別根據(jù)配置文件中所定義的進(jìn)行分配第二臺(tái)主機(jī)為2褐健,第三臺(tái)主機(jī)為3
4、分別切換至hadoop03和hadopp04兩臺(tái)服務(wù)器澜汤,同樣創(chuàng)建zkdata蚜迅,zkdata下創(chuàng)建myid文件設(shè)置值分別為2,3。
注意:myid里面設(shè)置的值一定要與配置文件里設(shè)定的一致银亲。
5慢叨、再分別啟動(dòng)三條服務(wù)器,查看是否啟動(dòng)成功
[root@localhost bin]# ./zkServer.sh status
一個(gè)leader兩個(gè)follower
如果啟動(dòng)的了查看狀態(tài)發(fā)現(xiàn)沒有啟動(dòng)成功务蝠。除了zookeeper安裝時(shí)候出現(xiàn)的問題拍谐,這里主要的問題就是zkdata文件夾下的myid的值寫的跟配置文件里面不一致,這個(gè)時(shí)候會(huì)出現(xiàn)ConnectionException:拒絕連接的異常,檢查修改一下轩拨。如果是地址被占用那么就用上面介紹的方法践瓷。