ZOOKEEPER基礎

jopen 8年前發布 | 15K 次閱讀 分布式/云計算/大數據 ZooKeeper

搞數據開發的對一些產品非常熟悉,比如:

  1. HBase
  2. Hadoop

但是對它們背后共同的“男人”沒有太多的了解,太不應該了。這篇是一個基礎的介紹,看完之后應該會對ZOOKEEPER有大概了解。

安裝部署

這里下載包,放到你喜歡的目錄解壓縮:

sudo tar -zxvf zookeeper-3.4.7.tar.gz

配置信息在conf/zoo.cfg中(可以在zoo_sample.cfg中看到),常用的幾個設置項如下(更多看這里):

配置 作用
tickTime 客戶端和服務器之間的心跳間隔(毫秒)
initLimit FOLLOWER與LEADER初始連接的最大延遲心跳數
syncLimit FOLLOWER與LEADER請求應答的最大延遲心跳數
dataDir 數據文件目錄
dataLogDir 日志文件目錄
clientPort 客戶端連接端口

配置安成以后使用命令啟動(standalone模式):

./bin/zkServer.sh start

查看zookeeper的狀態(看看起來沒):

./bin/zkServer.sh start

當然也可以用客戶端試一下能不能連上:

./bin/zkCli.sh 或者 ./bin/zkCli.sh -server 127.0.0.1:2181

現在還是單個節點,離集群還差很多,怎么辦?暫時沒有很多機器,在單機上搞“偽集群”應該還是簡單的,這樣和真正的集群差的不是太多了。剛開始看這里感覺沒啥問題,但是有點煩,于是看下./bin/zkServer.sh的代碼:

if [ "x$2" != "x" ]
then
    ZOOCFG="$ZOOCFGDIR/$2"
fi

果然是可以指定配置文件的,于是創建文件./conf/zoo_1.cfg,內容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/1 # 新建個目錄
clientPort=3181 # 注意端口不要沖突
server.0=127.0.0.1:2008:6008
server.1=127.0.0.1:2007:6007

當然需要對原來的./conf/zoo.cfg做一點小修改:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/0 # 新建個目錄
clientPort=2181 # 注意端口不要沖突
server.0=127.0.0.1:2008:6008
server.1=127.0.0.1:2007:6007

后面放的是ZK的服務器列表(每個節點上的列表都是一樣的),格式如下:

server.[myId]=[IP地址][通信端口][選舉端口]

另外需要寫入myid:

echo '0' > /tmp/zookeeper/0/myid
echo '1' > /tmp/zookeeper/1/myid

現在可以啟動了:

./bin/zkServer.sh start ./conf/zoo.cfg ./bin/zkServer.sh start ./conf/zoo_1.cfg

再用命令查看狀態顯示Mode: follower,啟動成功(STOP的時候也需要指定配置文件)。

來自:http://wsztrush.github.io/編程技術/2015/12/22/ZOOKEEPER-BASIC.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!