怎麼看zookeeper的配置
❶ 如何使用命令查看zookeeper文件內容
zookeeper安裝和使用
zookeeper的安裝基本上可以按照 zookeeperStarted.html 這個頁面上的步驟完成安裝,這里主要介紹下部署一個集群的步驟,因為這個官方頁面似乎講得並不是非常詳細(Running Replicated Zookeeper)。
由於手頭機器不足,所以在一台機器上部署了3個server,如果你手頭也比較緊,也可以這么做。那麼我建了3個文件夾,如下
server1 server2 server3
然後每個文件夾裡面解壓一個zookeeper的下載包,並且還建了幾個文件夾,總體結構如下,最後那個是下載過來壓縮包的解壓文件
data dataLog logs zookeeper-3.3.2
那麼首先進入data目錄,創建一個myid的文件,裡面寫入一個數字,比如我這個是server1,那麼就寫一個1,server2對應myid文件就寫入2,server3對應myid文件就寫個3
然後進入zookeeper-3.3.2/conf目錄,那麼如果是剛下過來,會有3個文件,configuration.xml, log4j.properties,zoo_sample.cfg,這3個文件我們首先要做的就是在這個目錄創建一個zoo.cfg的配置文件,當然你可以把zoo_sample.cfg文件改成zoo.cfg,配置的內容如下所示:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=xxxx/zookeeper/server1/data
dataLogDir=xxx/zookeeper/server1/dataLog
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
標紅的幾個配置應該官網講得很清楚了,只是需要注意的是clientPort這個埠如果你是在1台機器上部署多個server,那麼每台機器都要不同的clientPort,比如我server1是2181,server2是2182,server3是2183,dataDir和dataLogDir也需要區分下。
最後幾行唯一需要注意的地方就是 server.X 這個數字就是對應 data/myid中的數字。你在3個server的myid文件中分別寫入了1,2,3,那麼每個server中的zoo.cfg都配server.1,server.2,server.3就OK了。因為在同一台機器上,後面連著的2個埠3個server都不要一樣,否則埠沖突,其中第一個埠用來集群成員的信息交換,第二個埠是在leader掛掉時專門用來進行選舉leader所用。
進入zookeeper-3.3.2/bin 目錄中,./zkServer.sh start啟動一個server,這時會報大量錯誤?其實沒什麼關系,因為現在集群只起了1台server,zookeeper伺服器端起來會根據zoo.cfg的伺服器列表發起選舉leader的請求,因為連不上其他機器而報錯,那麼當我們起第二個zookeeper實例後,leader將會被選出,從而一致性服務開始可以使用,這是因為3台機器只要有2台可用就可以選出leader並且對外提供服務(2n+1台機器,可以容n台機器掛掉)。
接下來就可以使用了,我們可以先通過 zookeeper自帶的客戶端交互程序來簡單感受下zookeeper到底做一些什麼事情。進入zookeeper-3.3.2/bin(3個server中任意一個)下,./zkCli.sh –server 127.0.0.1:2182,我連的是開著2182埠的機器。
那麼,首先我們隨便打個命令,因為zookeeper不認識,他會給出命令的help,如下圖
ls(查看當前節點數據),
ls2(查看當前節點數據並能看到更新次數等數據) ,
create(創建一個節點) ,
get(得到一個節點,包含數據和更新次數等數據),
set(修改節點)
delete(刪除一個節點)
通過上述命令實踐,我們可以發現,zookeeper使用了一個類似文件系統的樹結構,數據可以掛在某個節點上,可以對這個節點進行刪改。另外我們還發現,當改動一個節點的時候,集群中活著的機器都會更新到一致的數據。
❷ zookeeper 怎麼配置環境變數
純java開發的軟體在linux下面也可以應用自如。那麼首先就需要配置好linux下的java環境,具體說來,就是配置jdk環境變數。 介紹在linux下配置jdk環境變數的幾種常用方法。
首先在linux下安裝jdk,如果出現提示許可權不夠(且root下也提示許可權不夠),可用#ls -l filename命令查看一下,如果顯示類似如:
則表示任何用戶都沒有可執行許可權(即使是root用戶)。
解決方法:
#chmod a+x filename
這樣,安裝好後,就可以接下來進行環境變數的配置了。這里給出三種可選方法:
一、修改/etc/profile文件
當本機僅僅作為開發使用時推薦使用這種方法,因為此種配置時所有用戶的shell都有權使用這些環境變數,可能會給系統帶來安全性問題。
用文本編輯器打開/etc/profile,在profile文件末尾加入:
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
重新登錄即可。
二、修改.bashrc文件
這種方法更為安全,它可以把使用這些環境變數的許可權控制到用戶級別,如果需要給某個用戶許可權使用這些環境變數,只需要修改其個人用戶主目錄下的.bashrc文件就可以了。
用文本編輯器打開用戶目錄下的.bashrc文件,在.bashrc文件末尾加入:
set JAVA_HOME=/usr/share/jdk1.5.0_05
export JAVA_HOME
set PATH=$JAVA_HOME/bin:$PATH
export PATH
set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
重新登錄。
三、直接在shell下設置變數
不推薦使用這種方法,因為換個shell,該設置就無效了。這種方法僅僅是臨時使用,以後要使用的時候又要重新設置,比較麻煩。
只需在shell終端執行下列命令:
export JAVA_HOME=/usr/share/jdk1.5.0_05
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
注意:
1.要將 /usr/share/jdk1.5.0_05jdk 改為jdk安裝目錄
2. linux下用冒號」:」來分隔路徑
3. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環境變數的值在設置環境變數時特別要注意不能把原來的值給覆蓋掉了。
4. CLASSPATH中當前目錄」.」不能丟掉。
5. export是把這三個變數導出為全局變數。
6. 大小寫必須嚴格區分。
❸ 如何查看zookeeper中存放的hbase的
尋找RegionServer
ZooKeeper--> -ROOT-(單Region)--> .META.--> 用戶表
想這個存儲在了zookeeper file中,也就是znode,信息肯定在這裡面的。
所以樓主在配置的時候,找到znode裡面的信息即可。-ROOT-表,則通過zk節點root-region-server獲取-ROOT-表所在的Location
❹ zkparking資料庫配置程序
摘要 這邊給您查詢分析到每台機器的應用程序都需要連接資料庫,而資料庫的配置信息(連接信息),這時候放在機器本地的話不方面(機器多,需要一個個改配置信息),這就用到Zookeeper,把資料庫的配置信息放到配置中心,利用Zookeeper節點可以存儲數據的特性,然後各台機器可以使用JavaAPI去獲取Zookeeper中資料庫的配置信息。每一個應用都在Zookeeper節點注冊監聽器,一旦節點信息改變,各台機器就獲取信息,使用最新的信息連接資料庫,這樣優點一是方便了管理(只放置一份數據在配置中心,沒必要放到多個機器上去),二是一旦配置改了,就做一個發布的動作即可。
❺ zookeeper是怎麼配置的
(1)配置管理集中式的配置管理在應用集群中是非常常見的,一般商業公司內部都會實現一套集中的配置管理中心,應對不同的應用集群對於共享各自配置的需求,並且在配置變更時能夠通知到集群中的每一個機器。Zookeeper很容易實現這種集中式的配置管理,比如將APP1的所有配置配置到/APP1znode下,APP1所有機器一啟動就對/APP1這個節點進行監控(zk.exist("/APP1",true)),並且實現回調方法Watcher,那麼在zookeeper上/APP1znode節點下數據發生變化的時候,每個機器都會收到通知,Watcher方法將會被執行,那麼應用再取下數據即可(zk.getData("/APP1",false,null));以上這個例子只是簡單的粗顆粒度配置監控,細顆粒度的數據可以進行分層級監控,這一切都是可以設計和控制的。(2)集群管理應用集群中,我們常常需要讓每一個機器知道集群中(或依賴的其他某一個集群)哪些機器是活著的,並且在集群機器因為宕機,網路斷鏈等原因能夠不在人工介入的情況下迅速通知到每一個機器。Zookeeper同樣很容易實現這個功能,比如我在zookeeper伺服器端有一個znode叫/APP1SERVERS,那麼集群中每一個機器啟動的時候都去這個節點下創建一個EPHEMERAL類型的節點,比如server1創建/APP1SERVERS/SERVER1(可以使用ip,保證不重復),server2創建/APP1SERVERS/SERVER2,然後SERVER1和SERVER2都watch/APP1SERVERS這個父節點,那麼也就是這個父節點下數據或者子節點變化都會通知對該節點進行watch的客戶端。因為EPHEMERAL類型節點有一個很重要的特性,就是客戶端和伺服器端連接斷掉或者session過期就會使節點消失,那麼在某一個機器掛掉或者斷鏈的時候,其對應的節點就會消失,然後集群中所有對/APP1SERVERS進行watch的客戶端都會收到通知,然後取得最新列表即可。另外有一個應用場景就是集群選master,一旦master掛掉能夠馬上能從slave中選出一個master,實現步驟和前者一樣,只是機器在啟動的時候在APP1SERVERS創建的節點類型變為EPHEMERAL_SEQUENTIAL類型,這樣每個節點會自動被編號,例如zk.create("/testRootPath/testChildPath1","1".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);zk.create("/testRootPath/testChildPath2","2".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);zk.create("/testRootPath/testChildPath3","3".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);//創建一個子目錄節點zk.create("/testRootPath/testChildPath4","4".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);System.out.println(zk.getChildren("/testRootPath",false));列印結果:[testChildPath10000000000,testChildPath20000000001,testChildPath40000000003,testChildPath30000000002]zk.create("/testRootPath","testRootData".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);//創建一個子目錄節點zk.create("/testRootPath/testChildPath1","1".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL);zk.create("/testRootPath/testChildPath2","2".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL);zk.create("/testRootPath/testChildPath3","3".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL);//創建一個子目錄節點zk.create("/testRootPath/testChildPath4","4".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL);System.out.println(zk.getChildren("/testRootPath",false));列印結果:[testChildPath2,testChildPath1,testChildPath4,testChildPath3]我們默認規定編號最小的為master,所以當我們對/APP1SERVERS節點做監控的時候,得到伺服器列表,只要所有集群機器邏輯認為最小編號節點為master,那麼master就被選出,而這個master宕機的時候,相應的znode會消失,然後新的伺服器列表就被推送到客戶端,然後每個節點邏輯認為最小編號節點為master,這樣就做到動態master選舉。
❻ zookeeper安裝配置問題
Zookeeper安裝和部署:ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。
ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的介面和性能高效、功能穩定的系統提供給用戶。
ZooKeeper包含一個簡單的原語集, 提供Java和C的介面。
ZooKeeper代碼版本中,提供了分布式獨享鎖、選舉、隊列的介面,代碼在zookeeper-3.4.8\src\recipes。其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本。
❼ win怎麼看zookeeper 是否配置成功
1. 概述ZooKeeper是Hadoop的正式子項目,它是一個針對大型分布式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、分布式同步、組服務等。ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的介面和性能高效、功能穩定的系統提供給用戶。
2. 安裝&配置
在apache的官方網站提供了好多鏡像下載地址,然後找到對應的版本,目前最新的是3.3.6
Windows下安裝
把下載的zookeeper的文件解壓到指定目錄
D:\machine\zookeeper-3.3.6>
修改conf下增加一個zoo.cfg
內容如下:
# The number of milliseconds of each tick 心跳間隔 毫秒每次
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting anacknowledgement
syncLimit=5
# the directory where the snapshot isstored. //鏡像數據位置
dataDir=D:\\data\\zookeeper
#日誌位置
dataLogDir=D:\\logs\\zookeeper
# the port at which the clients willconnect 客戶端連接的埠
clientPort=2181
註:如果啟動有報錯提示cfg文件有錯誤,可以用zoo_sample.cfg內內容替代也是可以的
進入到bin目錄,並且啟動zkServer.cmd,這個腳本中會啟動一個java進程
D:\machine\zookeeper-3.3.6>cd bin
D:\machine\zookeeper-3.3.6\bin>
D:\machine\zookeeper-3.3.6\bin >zkServer.cmd
啟動後jps可以看到QuorumPeerMain的進程
D:\machine\zookeeper-3.3.6\bin >jps