ZooKeeper-3.3.4集群安裝配置-創(chuàng)新互聯(lián)

ZooKeeper是一個(gè)分布式開(kāi)源框架,提供了協(xié)調(diào)分布式應(yīng)用的基本服務(wù),它向外部應(yīng)用暴露一組通用服務(wù)——分布式同步(Distributed Synchronization)、命名服務(wù)(Naming Service)、集群維護(hù)(Group Maintenance)等,簡(jiǎn)化分布式應(yīng)用協(xié)調(diào)及其管理的難度,提供高性能的分布式服務(wù)。ZooKeeper本身可以以Standalone模式安裝運(yùn)行,不過(guò)它的長(zhǎng)處在于通過(guò)分布式ZooKeeper集群(一個(gè)Leader,多個(gè)Follower),基于一定的策略來(lái)保證ZooKeeper集群的穩(wěn)定性和可用性,從而實(shí)現(xiàn)分布式應(yīng)用的可靠性。ZooKeeper-3.3.4集
群安裝配置

有關(guān)ZooKeeper的介紹,網(wǎng)上很多,也可以參考文章后面,我整理的一些相關(guān)鏈接。

我們一直強(qiáng)調(diào)網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站對(duì)于企業(yè)的重要性,如果您也覺(jué)得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過(guò)程中的有力推手。專業(yè)的建站公司不一定是大公司,成都創(chuàng)新互聯(lián)作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。

下面,我們簡(jiǎn)單說(shuō)明一下ZooKeeper的配置。

ZooKeeper Standalone模式

從Apache網(wǎng)站上(zookeeper.apache.org)下載ZooKeeper軟件包,我選擇了3.3.4版本的(zookeeper-3.3.4.tar.gz),在一臺(tái)Linux機(jī)器上安裝非常容易,只需要解壓縮后,簡(jiǎn)單配置一下即可以啟動(dòng)ZooKeeper服務(wù)器進(jìn)程。

將zookeeper-3.3.4/conf目錄下面的 zoo_sample.cfg修改為zoo.cfg,配置文件內(nèi)容如下所示:

tickTime=2000 dataDir=/home/hadoop/storage/zookeeper clientPort=2181 initLimit=5 syncLimit=2

上面各個(gè)配置參數(shù)的含義也非常簡(jiǎn)單,引用如下所示:

1.tickTime —— the basic time unit in milliseconds used by ZooKeeper.
 It is used to do heartbeats and the minimum session timeout will be twice the tickTime. 2.dataDir —— the location to store the in-memory database snapshots and, unless specified otherwise, the transaction log of updates to the database. 3.clientPort —— the port to listen for client connections

下面啟動(dòng)ZooKeeper服務(wù)器進(jìn)程:

cd zookeeper-3.3.4/ bin/zkServer.sh start

通過(guò)jps命令可以查看ZooKeeper服務(wù)器進(jìn)程,名稱為QuorumPeerMain。

在客戶端連接ZooKeeper服務(wù)器,執(zhí)行如下命令:

bin/zkCli.sh -server dynamic:2181

上面dynamic是我的主機(jī)名,如果在本機(jī)執(zhí)行,則執(zhí)行如下命令即可:

bin/zkCli.sh

客戶端連接信息如下所示:

hadoop@master:~/installation/zookeeper-3.3.4$ bin/zkCli.sh -server dynamic:2181 Connecting to dynamic:2181 2012-01-08 21:30:06,178 - INFO [main:Environment@97] - Client environment:zookeeper.version=3.3.3-1203054, built on 11/17/2011 05:47 GMT 2012-01-08 21:30:06,188 - INFO [main:Environment@97] - Client environment:host.name=master 2012-01-08 21:30:06,191 - INFO [main:Environment@97] - Client environment:java.version=1.6.0_30 2012-01-08 21:30:06,194 - INFO [main:Environment@97] - Client environment:java.vendor=Sun Microsystems Inc. 2012-01-08 21:30:06,200 - INFO [main:Environment@97] - Client environment:java.home=/home/hadoop/installation/jdk1.6.0_30/jre 2012-01-08 21:30:06,203 - INFO [main:Environment@97] - Client environment:java.class.path=/home/hadoop/installation/zookeeper-3.3.4/bin/../build/
classes:/home/hadoop/installation/zookeeper-3.3.4/bin/../build/lib/*.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../zookeeper-3.3.4.jar:
/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/log4j-1.2.15.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/jline-0.9.94.jar:
/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/commons-lang-2.4.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/
commons-collections-3.2.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/commons-cli-1.1.jar:/home/hadoop/installation/zookeeper-3.3.4/bin
/../lib/apache-rat-tasks-0.6.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/apache-rat-core-0.6.jar:/home/hadoop/installation/
zookeeper-3.3.4/bin/../src/java/lib/*.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../conf:/home/hadoop/installation/jdk1.6.0_30/lib/*.jar:
/home/hadoop/installation/jdk1.6.0_30/jre/lib/*.jar 2012-01-08 21:30:06,206 - INFO [main:Environment@97] - Client environment:java.library.path=/home/hadoop/installation/jdk1.6.0_30/
jre/lib/i386/client:/home/hadoop/installation/jdk1.6.0_30/jre/lib/i386:/home/hadoop/installation/jdk1.6.0_30/jre/../lib/i386:
/usr/java/packages/lib/i386:/lib:/usr/lib 2012-01-08 21:30:06,213 - INFO [main:Environment@97] - Client environment:java.io.tmpdir=/tmp 2012-01-08 21:30:06,216 - INFO [main:Environment@97] - Client environment:java.compiler=<NA> 2012-01-08 21:30:06,235 - INFO [main:Environment@97] - Client environment:os.name=Linux 2012-01-08 21:30:06,244 - INFO [main:Environment@97] - Client environment:os.arch=i386 2012-01-08 21:30:06,246 - INFO [main:Environment@97] - Client environment:os.version=3.0.0-14-generic 2012-01-08 21:30:06,251 - INFO [main:Environment@97] - Client environment:user.name=hadoop 2012-01-08 21:30:06,254 - INFO [main:Environment@97] - Client environment:user.home=/home/hadoop 2012-01-08 21:30:06,255 - INFO [main:Environment@97] - Client environment:user.dir=/home/hadoop/installation/zookeeper-3.3.4 2012-01-08 21:30:06,264 - INFO [main:ZooKeeper@379] - Initiating client connection, connectString=dynamic:2181 sessionTimeout=30000
watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@bf32c 2012-01-08 21:30:06,339 - INFO [main-SendThread():ClientCnxn$SendThread@1061] - Opening socket connection to server dynamic/192.168.0.107:2181 Welcome to ZooKeeper! 2012-01-08 21:30:06,397 - INFO [main-SendThread(dynamic:2181):ClientCnxn$SendThread@950] -
Socket connection established to dynamic/192.168.0.107:2181, initiating session JLine support is enabled 2012-01-08 21:30:06,492 - INFO [main-SendThread(dynamic:2181):ClientCnxn$SendThread@739] -
Session establishment complete on server dynamic/192.168.0.107:2181, sessionid = 0x134b9b714f9000c, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: dynamic:2181(CONNECTED) 0]

接著,可以使用help查看Zookeeper客戶端可以使用的基本操作命令。

ZooKeeper Distributed模式

ZooKeeper分布式模式安裝(ZooKeeper集群)也比較容易,這里說(shuō)明一下基本要點(diǎn)。

首先要明確的是,ZooKeeper集群是一個(gè)獨(dú)立的分布式協(xié)調(diào)服務(wù)集群,“獨(dú)立”的含義就是說(shuō),如果想使用ZooKeeper實(shí)現(xiàn)分布式應(yīng)用的協(xié)調(diào)與管理,簡(jiǎn)化協(xié)調(diào)與管理,任何分布式應(yīng)用都可以使用,這就要?dú)w功于Zookeeper的數(shù)據(jù)模型(Data Model)和層次命名空間(Hierarchical Namespace)結(jié)構(gòu),詳細(xì)可以參考http://zookeeper.apache.org/doc/trunk/zookeeperOver.html。在設(shè)計(jì)你的分布式應(yīng)用協(xié)調(diào)服務(wù)時(shí),首要的就是考慮如何組織層次命名空間。

下面說(shuō)明分布式模式的安裝配置,過(guò)程如下所示:

第一步:主機(jī)名稱到IP地址映射配置

ZooKeeper集群中具有兩個(gè)關(guān)鍵的角色:Leader和Follower。集群中所有的結(jié)點(diǎn)作為一個(gè)整體對(duì)分布式應(yīng)用提供服務(wù),集群中每個(gè)結(jié)點(diǎn)之間都互相連接,所以,在配置的ZooKeeper集群的時(shí)候,每一個(gè)結(jié)點(diǎn)的host到IP地址的映射都要配置上集群中其它結(jié)點(diǎn)的映射信息。

例如,我的ZooKeeper集群中每個(gè)結(jié)點(diǎn)的配置,以slave-01為例,/etc/hosts內(nèi)容如下所示:

192.168.0.179 slave-01 192.168.0.178 slave-02 192.168.0.177 slave-03

ZooKeeper采用一種稱為L(zhǎng)eader election的選舉算法。在整個(gè)集群運(yùn)行過(guò)程中,只有一個(gè)Leader,其他的都是Follower,如果ZooKeeper集群在運(yùn)行過(guò)程中Leader出了問(wèn)題,系統(tǒng)會(huì)采用該算法重新選出一個(gè)Leader。因此,各個(gè)結(jié)點(diǎn)之間要能夠保證互相連接,必須配置上述映射。

ZooKeeper集群?jiǎn)?dòng)的時(shí)候,會(huì)首先選出一個(gè)Leader,在Leader election過(guò)程中,某一個(gè)滿足選舉算的結(jié)點(diǎn)就能成為L(zhǎng)eader。整個(gè)集群的架構(gòu)可以參考http://zookeeper.apache.org/doc/trunk/zookeeperOver.html#sc_designGoals。

第二步:修改ZooKeeper配置文件

在其中一臺(tái)機(jī)器(slave-01)上,解壓縮zookeeper-3.3.4.tar.gz,修改配置文件conf/zoo.cfg,內(nèi)容如下所示:

tickTime=2000 dataDir=/home/hadoop/storage/zookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=slave-01:2888:3888 server.2=slave-02:2888:3888 server.3=slave-03:2888:3888

上述配置內(nèi)容說(shuō)明,可以參考http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。

第三步:遠(yuǎn)程復(fù)制分發(fā)安裝文件

上面已經(jīng)在一臺(tái)機(jī)器slave-01上配置完成ZooKeeper,現(xiàn)在可以將該配置好的安裝文件遠(yuǎn)程拷貝到集群中的各個(gè)結(jié)點(diǎn)對(duì)應(yīng)的目錄下:

cd /home/hadoop/installation/ scp -r zookeeper-3.3.4/ hadoop@slave-02:/home/hadoop/installation/ scp -r zookeeper-3.3.4/ hadoop@slave-03:/home/hadoop/installation/

第四步:設(shè)置myid

在我們配置的dataDir指定的目錄下面,創(chuàng)建一個(gè)myid文件,里面內(nèi)容為一個(gè)數(shù)字,用來(lái)標(biāo)識(shí)當(dāng)前主機(jī),conf/zoo.cfg文件中配置的server.X中X為什么數(shù)字,則myid文件中就輸入這個(gè)數(shù)字,例如:

hadoop@slave-01:~/installation/zookeeper-3.3.4$ echo "1" > /home/hadoop/storage/zookeeper/myid hadoop@slave-02:~/installation/zookeeper-3.3.4$ echo "2" > /home/hadoop/storage/zookeeper/myid hadoop@slave-03:~/installation/zookeeper-3.3.4$ echo "3" > /home/hadoop/storage/zookeeper/myid

按照上述進(jìn)行配置即可。

第五步:?jiǎn)?dòng)ZooKeeper集群

在ZooKeeper集群的每個(gè)結(jié)點(diǎn)上,執(zhí)行啟動(dòng)ZooKeeper服務(wù)的腳本,如下所示:

hadoop@slave-01:~/installation/zookeeper-3.3.4$ bin/zkServer.sh start hadoop@slave-02:~/installation/zookeeper-3.3.4$ bin/zkServer.sh start hadoop@slave-03:~/installation/zookeeper-3.3.4$ bin/zkServer.sh start

以結(jié)點(diǎn)slave-01為例,日志如下所示:

  hadoop@slave-01:~/installation/zookeeper-3.3.4$ tail -500f zookeeper.out 2012-01-08 06:51:19,117 - INFO [main:QuorumPeerConfig@90] - Reading configuration from: /home/hadoop/installation/zookeeper-3.3.4/bin/../conf/zoo.cfg 2012-01-08 06:51:19,133 - INFO [main:QuorumPeerConfig@310] - Defaulting to majority quorums 2012-01-08 06:51:19,167 - INFO [main:QuorumPeerMain@119] - Starting quorum peer 2012-01-08 06:51:19,227 - INFO [main:NIOServerCnxn$Factory@143] - binding to port 0.0.0.0/0.0.0.0:2181 2012-01-08 06:51:19,277 - INFO [main:QuorumPeer@819] - tickTime set to 2000 2012-01-08 06:51:19,278 - INFO [main:QuorumPeer@830] - minSessionTimeout set to -1 2012-01-08 06:51:19,279 - INFO [main:QuorumPeer@841] - maxSessionTimeout set to -1 2012-01-08 06:51:19,281 - INFO [main:QuorumPeer@856] - initLimit set to 5 2012-01-08 06:51:19,347 - INFO [Thread-1:QuorumCnxManager$Listener@473] - My election bind port: 3888 2012-01-08 06:51:19,393 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumPeer@621] - LOOKING 2012-01-08 06:51:19,396 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FastLeaderElection@663] - New election. My id = 1, Proposed zxid = 0 2012-01-08 06:51:19,400 - INFO [WorkerReceiver Thread:FastLeaderElection@496] - Notification: 1 (n.leader), 0 (n.zxid), 1 (n.round),
LOOKING (n.state), 1 (n.sid), LOOKING (my state) 2012-01-08 06:51:19,416 - WARN [WorkerSender Thread:QuorumCnxManager@384] - Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:340) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:360) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:333) at java.lang.Thread.run(Thread.java:662) 2012-01-08 06:51:19,420 - WARN [WorkerSender Thread:QuorumCnxManager@384] - Cannot open channel to 3 at election address slave-03/192.168.0.177:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:340) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:360) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:333) at java.lang.Thread.run(Thread.java:662) 2012-01-08 06:51:19,612 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] -
Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:51:19,615 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] -
Cannot open channel to 3 at election address slave-03/192.168.0.177:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:51:19,616 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FastLeaderElection@697] - Notification time out: 400 2012-01-08 06:51:20,019 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] -
Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:51:20,021 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] -
Cannot open channel to 3 at election address slave-03/192.168.0.177:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:51:20,022 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FastLeaderElection@697] - Notification time out: 800 2012-01-08 06:51:20,825 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] -
Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:51:20,827 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] -
Cannot open channel to 3 at election address slave-03/192.168.0.177:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:51:20,828 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FastLeaderElection@697] - Notification time out: 1600 2012-01-08 06:51:22,435 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] -
Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:51:22,439 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] -
Cannot open channel to 3 at election address slave-03/192.168.0.177:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:51:22,441 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FastLeaderElection@697] - Notification time out: 3200 2012-01-08 06:51:22,945 - INFO [WorkerReceiver Thread:FastLeaderElection@496] -
Notification: 2 (n.leader), 0 (n.zxid), 1 (n.round), LOOKING (n.state), 2 (n.sid), LOOKING (my state) 2012-01-08 06:51:22,946 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FastLeaderElection@721] - Updating proposal 2012-01-08 06:51:22,949 - WARN [WorkerSender Thread:QuorumCnxManager@384] -
Cannot open channel to 3 at election address slave-03/192.168.0.177:3888 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:340) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:360) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:333) at java.lang.Thread.run(Thread.java:662) 2012-01-08 06:51:22,951 - INFO [WorkerReceiver Thread:FastLeaderElection@496] -
Notification: 2 (n.leader), 0 (n.zxid), 1 (n.round), LOOKING (n.state), 1 (n.sid), LOOKING (my state) 2012-01-08 06:51:23,156 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumPeer@643] - FOLLOWING 2012-01-08 06:51:23,170 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Learner@80] - TCP NoDelay set to: true 2012-01-08 06:51:23,206 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] -
Server environment:zookeeper.version=3.3.3-1203054, built on 11/17/2011 05:47 GMT 2012-01-08 06:51:23,207 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:host.name=slave-01 2012-01-08 06:51:23,207 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:java.version=1.6.0_30 2012-01-08 06:51:23,208 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:java.vendor=Sun Microsystems Inc. 2012-01-08 06:51:23,208 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] -
Server environment:java.home=/home/hadoop/installation/jdk1.6.0_30/jre 2012-01-08 06:51:23,209 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] -
Server environment:java.class.path=/home/hadoop/installation/zookeeper-3.3.4/bin/../build/classes:/home/hadoop/installation/
zookeeper-3.3.4/bin/../build/lib/*.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../zookeeper-3.3.4.jar:/home/hadoop/installation/
zookeeper-3.3.4/bin/../lib/log4j-1.2.15.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/jline-0.9.94.jar:/home/hadoop/installation/
zookeeper-3.3.4/bin/../lib/commons-lang-2.4.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/commons-collections-3.2.jar:/home/hadoop/
installation/zookeeper-3.3.4/bin/../lib/commons-cli-1.1.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/apache-rat-tasks-0.6.jar:/home/
hadoop/installation/zookeeper-3.3.4/bin/../lib/apache-rat-core-0.6.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../src/java/lib/*.jar:
/home/hadoop/installation/zookeeper-3.3.4/bin/../conf:/home/hadoop/installation/jdk1.6.0_30/lib/*.jar:/home/hadoop/installation/jdk1.6.0_30/
jre/lib/*.jar 2012-01-08 06:51:23,210 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:java.library.path=
/home/hadoop/installation/jdk1.6.0_30/jre/lib/i386/client:/home/hadoop/installation/jdk1.6.0_30/jre/lib/i386:
/home/hadoop/installation/jdk1.6.0_30/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib 2012-01-08 06:51:23,210 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:java.io.tmpdir=/tmp 2012-01-08 06:51:23,212 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:java.compiler=<NA> 2012-01-08 06:51:23,212 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:os.name=Linux 2012-01-08 06:51:23,212 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:os.arch=i386 2012-01-08 06:51:23,213 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:os.version=3.0.0-14-generic 2012-01-08 06:51:23,213 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:user.name=hadoop 2012-01-08 06:51:23,214 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:user.home=/home/hadoop 2012-01-08 06:51:23,214 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Environment@97] - Server environment:user.dir=/home/hadoop/
installation/zookeeper-3.3.4 2012-01-08 06:51:23,223 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:ZooKeeperServer@151] -
Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /home/hadoop/storage/zookeeper/version-2 snapdir
/home/hadoop/storage/zookeeper/version-2 2012-01-08 06:51:23,339 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Learner@294] - Getting a snapshot from leader 2012-01-08 06:51:23,358 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:Learner@325] - Setting leader epoch 1 2012-01-08 06:51:23,358 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FileTxnSnapLog@254] - Snapshotting: 0 2012-01-08 06:51:25,511 - INFO [WorkerReceiver Thread:FastLeaderElection@496] - Notification: 3 (n.leader), 0 (n.zxid), 1 (n.round),
LOOKING (n.state), 3 (n.sid), FOLLOWING (my state) 2012-01-08 06:51:42,584 - INFO [WorkerReceiver Thread:FastLeaderElection@496] - Notification: 3 (n.leader), 0 (n.zxid), 2 (n.round),
LOOKING (n.state), 3 (n.sid), FOLLOWING (my state)

我啟動(dòng)的順序是slave-01>slave-02>slave-03,由于ZooKeeper集群?jiǎn)?dòng)的時(shí)候,每個(gè)結(jié)點(diǎn)都試圖去連接集群中的其它結(jié)點(diǎn),先啟動(dòng)的肯定連不上后面還沒(méi)啟動(dòng)的,所以上面日志前面部分的異常是可以忽略的。通過(guò)后面部分可以看到,集群在選出一個(gè)Leader后,最后穩(wěn)定了。

其他結(jié)點(diǎn)可能也出現(xiàn)類似問(wèn)題,屬于正常。

第六步:安裝驗(yàn)證

可以通過(guò)ZooKeeper的腳本來(lái)查看啟動(dòng)狀態(tài),包括集群中各個(gè)結(jié)點(diǎn)的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集群中的每個(gè)結(jié)點(diǎn)上查詢的結(jié)果:

hadoop@slave-01:~/installation/zookeeper-3.3.4$ bin/zkServer.sh status JMX enabled by default Using config: /home/hadoop/installation/zookeeper-3.3.4/bin/../conf/zoo.cfg Mode: follower hadoop@slave-02:~/installation/zookeeper-3.3.4$ bin/zkServer.sh status JMX enabled by default Using config: /home/hadoop/installation/zookeeper-3.3.4/bin/../conf/zoo.cfg Mode: leader hadoop@slave-03:~/installation/zookeeper-3.3.4$ bin/zkServer.sh status JMX enabled by default Using config: /home/hadoop/installation/zookeeper-3.3.4/bin/../conf/zoo.cfg Mode: follower

通過(guò)上面狀態(tài)查詢結(jié)果可見(jiàn),slave-02是集群的Leader,其余的兩個(gè)結(jié)點(diǎn)是Follower。

另外,可以通過(guò)客戶端腳本,連接到ZooKeeper集群上。對(duì)于客戶端來(lái)說(shuō),ZooKeeper是一個(gè)整體(ensemble),連接到ZooKeeper集群實(shí)際上感覺(jué)在獨(dú)享整個(gè)集群的服務(wù),所以,你可以在任何一個(gè)結(jié)點(diǎn)上建立到服務(wù)集群的連接,例如:

hadoop@slave-03:~/installation/zookeeper-3.3.4$ bin/zkCli.sh -server slave-01:2181 Connecting to slave-01:2181 2012-01-08 07:14:21,068 - INFO [main:Environment@97] - Client environment:zookeeper.version=3.3.3-1203054, built on 11/17/2011 05:47 GMT 2012-01-08 07:14:21,080 - INFO [main:Environment@97] - Client environment:host.name=slave-03 2012-01-08 07:14:21,085 - INFO [main:Environment@97] - Client environment:java.version=1.6.0_30 2012-01-08 07:14:21,089 - INFO [main:Environment@97] - Client environment:java.vendor=Sun Microsystems Inc. 2012-01-08 07:14:21,095 - INFO [main:Environment@97] - Client environment:java.home=/home/hadoop/installation/jdk1.6.0_30/jre 2012-01-08 07:14:21,104 - INFO [main:Environment@97] - Client environment:java.class.path=/home/hadoop/installation/zookeeper-3.3.4/bin/../
build/classes:/home/hadoop/installation/zookeeper-3.3.4/bin/../build/lib/*.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../zookeeper-3.3.4.jar:
/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/log4j-1.2.15.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/jline-0.9.94.jar:/
home/hadoop/installation/zookeeper-3.3.4/bin/../lib/commons-lang-2.4.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/
commons-collections-3.2.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/commons-cli-1.1.jar:/home/hadoop/installation/zookeeper-3.3.4/
bin/../lib/apache-rat-tasks-0.6.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../lib/apache-rat-core-0.6.jar:/home/hadoop/installation/
zookeeper-3.3.4/bin/../src/java/lib/*.jar:/home/hadoop/installation/zookeeper-3.3.4/bin/../conf:/home/hadoop/installation/jdk1.6.0_30/lib/*.jar:
/home/hadoop/installation/jdk1.6.0_30/jre/lib/*.jar 2012-01-08 07:14:21,111 - INFO [main:Environment@97] - Client environment:java.library.path=/home/hadoop/installation/jdk1.6.0_30/jre/lib/
i386/client:/home/hadoop/installation/jdk1.6.0_30/jre/lib/i386:/home/hadoop/installation/jdk1.6.0_30/jre/../lib/i386:/
usr/java/packages/lib/i386:/lib:/usr/lib 2012-01-08 07:14:21,116 - INFO [main:Environment@97] - Client environment:java.io.tmpdir=/tmp 2012-01-08 07:14:21,124 - INFO [main:Environment@97] - Client environment:java.compiler=<NA> 2012-01-08 07:14:21,169 - INFO [main:Environment@97] - Client environment:os.name=Linux 2012-01-08 07:14:21,175 - INFO [main:Environment@97] - Client environment:os.arch=i386 2012-01-08 07:14:21,177 - INFO [main:Environment@97] - Client environment:os.version=3.0.0-14-generic 2012-01-08 07:14:21,185 - INFO [main:Environment@97] - Client environment:user.name=hadoop 2012-01-08 07:14:21,188 - INFO [main:Environment@97] - Client environment:user.home=/home/hadoop 2012-01-08 07:14:21,190 - INFO [main:Environment@97] - Client environment:user.dir=/home/hadoop/installation/zookeeper-3.3.4 2012-01-08 07:14:21,197 - INFO [main:ZooKeeper@379] - Initiating client connection, connectString=slave-01:2181 sessionTimeout=30000
watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@bf32c 2012-01-08 07:14:21,305 - INFO [main-SendThread():ClientCnxn$SendThread@1061] - Opening socket connection to server slave-01/192.168.0.179:2181 Welcome to ZooKeeper! 2012-01-08 07:14:21,376 - INFO [main-SendThread(slave-01:2181):ClientCnxn$SendThread@950] - Socket connection established to
slave-01/192.168.0.179:2181, initiating session JLine support is enabled [zk: slave-01:2181(CONNECTING) 0] 2012-01-08 07:14:21,872 - INFO [main-SendThread(slave-01:2181):ClientCnxn$SendThread@739] -
Session establishment complete on server slave-01/192.168.0.179:2181, sessionid = 0x134bdcd6b730000, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: slave-01:2181(CONNECTED) 0] ls / [zookeeper]

當(dāng)前根路徑為/zookeeper。

總結(jié)說(shuō)明

主機(jī)名與IP地址映射配置問(wèn)題

啟動(dòng)ZooKeeper集群時(shí),如果ZooKeeper集群中slave-01結(jié)點(diǎn)的日志出現(xiàn)如下錯(cuò)誤:

java.net.SocketTimeoutException at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:109) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:37:46,026 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2181:FastLeaderElection@697] - Notification time out: 6400 2012-01-08 06:37:57,431 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] - Cannot open channel to 2 at election address
slave-02/202.106.199.35:3888 java.net.SocketTimeoutException at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:109) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622) 2012-01-08 06:38:02,442 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@384] - Cannot open channel to 3 at election address
slave-03/202.106.199.35:3888

很顯然,slave-01在啟動(dòng)時(shí)連接集群中其他結(jié)點(diǎn)(slave-02、slave-03)時(shí),主機(jī)名映射的IP與我們實(shí)際配置的不一致,所以集群中各個(gè)結(jié)點(diǎn)之間無(wú)法建立鏈路,整個(gè)ZooKeeper集群?jiǎn)?dòng)是失敗的。

上面錯(cuò)誤日志中slave-02/202.106.199.35:3888實(shí)際應(yīng)該是slave-02/202.192.168.0.178:3888就對(duì)了,但是在進(jìn)行域名解析的時(shí)候映射有問(wèn)題,修改每個(gè)結(jié)點(diǎn)的/etc/hosts文件,將ZooKeeper集群中所有結(jié)點(diǎn)主機(jī)名到IP地址的映射配置上。

分享名稱:ZooKeeper-3.3.4集群安裝配置-創(chuàng)新互聯(lián)
本文URL:http://muchs.cn/article34/djicpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、移動(dòng)網(wǎng)站建設(shè)、Google品牌網(wǎng)站設(shè)計(jì)、ChatGPT、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)