zookeeper簡介
Zookeeper是一個分布式協(xié)調(diào)服務(wù);就是為用戶的分布式應(yīng)用程序提供協(xié)調(diào)服務(wù)
1伦糯、zookeeper是為別的分布式程序服務(wù)的
2柜某、Zookeeper本身就是一個分布式程序(只要有半數(shù)以上節(jié)點存活嗽元,zk就能正常服務(wù))
3、Zookeeper所提供的服務(wù)涵蓋:主從協(xié)調(diào)喂击、服務(wù)器節(jié)點動態(tài)上下線剂癌、統(tǒng)一配置管理、分布式共享鎖翰绊、統(tǒng)一名稱服務(wù)……
4佩谷、雖然說可以提供各種服務(wù),但是zookeeper在底層其實只提供了兩個功能:
管理(存儲监嗜,讀取)用戶程序提交的數(shù)據(jù)谐檀;
并為用戶程序提供數(shù)據(jù)節(jié)點監(jiān)聽服務(wù);
Zookeeper集群的角色: Leader 和 follower (Observer)
只要集群中有半數(shù)以上節(jié)點存活裁奇,集群就能提供服務(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ù)存儲文件夾位置
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190113153616504.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d0aF85Nw==,size_16,color_FFFFFF,t_70)
5、創(chuàng)建文件夾 /root/zkdata
[root@hadoop01 ~]# mkdir zkdata
6惶傻、進(jìn)入/root/zookeeper-3.4.6/bin,啟動zookeeper并且查看是否啟動成功棍郎。
[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、首先使用的是第一臺這臺服務(wù)器银室,前面6步與zookeeper安裝一致涂佃,唯一區(qū)別就是配置文件修改不一樣
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190113154104746.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d0aF85Nw==,size_16,color_FFFFFF,t_70)
注:2888是leader與follower之間通信的端口,3888是投票使用的端口(數(shù)字不做要求蜈敢,但應(yīng)避免沖突)辜荠。
2、將配置好的app下的zookeeper傳到另外兩臺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
注:另外兩臺分別根據(jù)配置文件中所定義的進(jìn)行分配第二臺主機(jī)為2伯病,第三臺主機(jī)為3
4、分別切換至hadoop03和hadopp04兩臺服務(wù)器否过,同樣創(chuàng)建zkdata午笛,zkdata下創(chuàng)建myid文件設(shè)置值分別為2,3惭蟋。
注意:myid里面設(shè)置的值一定要與配置文件里設(shè)定的一致。
5药磺、再分別啟動三條服務(wù)器告组,查看是否啟動成功
[root@localhost bin]# ./zkServer.sh status
一個leader兩個follower
如果啟動的了查看狀態(tài)發(fā)現(xiàn)沒有啟動成功。除了zookeeper安裝時候出現(xiàn)的問題与涡,這里主要的問題就是zkdata文件夾下的myid的值寫的跟配置文件里面不一致惹谐,這個時候會出現(xiàn)ConnectionException:拒絕連接的異常,檢查修改一下驼卖。如果是地址被占用那么就用上面介紹的方法氨肌。