安装ZooKeeper

ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(DistributedSynchronization)、命名服务(NamingService)、集群维护(GroupMaintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。具体ZooKeeper的介绍还有很多,这边就不一一介绍。

因为工作中需要使用ZooKeeper,因此这边简单介绍下,ZooKeeper的安装。

这边选择的3.4.6版的ZooKeeper,去官网下载

http://www.apache.org/dist/zookeeper/zookeeper-3.4.6/

一、单机安装ZooKeeper

单机配置十分简单,只需要解压缩后,简单配置一下即可以启动ZooKeeper服务器进程。

1、 先解压ZooKeeper,这边设安装路径为$ZOOKEEPER_HOME

2、  进入目录$ZOOKEEPER_HOME/conf生成以下配置文件zoo.cfg(基本内容都来自zoo_sample.cfg)

#配置文件名zoo.cfg
tickTime =2000  
dataDir=/usr/local/zookeeper_data
clientPort =2181  
initLimit=5  
syncLimit=2 

其中

tickTime是用来判断心跳与会话超时用的,默认是2

dataDir是存放数据的位置

clientPort是客户端侦听端口

下面是启动ZooKeeper服务器进程的命令

$ZOOKEEPER_HOME/bin/zkServer.sh start  

JPS命令可以看到QuorumPeerMain这个进程,这个就是ZooKeeper服务器进程。

下面是以客户端形式连接ZooKeeper服务器命令

bin/zkCli.sh -server $HOSTNAME:2181

然后客户端连接信息如下所示:

[hadoop@carl zookeeper-3.4.6]$ bin/zkCli.sh -server carl:2181 
Connecting to carl:2181
2014-11-05 16:12:33,925 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
2014-11-05 16:12:33,977 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=carl
2014-11-05 16:12:33,978 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.7.0_60
2014-11-05 16:12:34,019 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2014-11-05 16:12:34,022 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/local/jdk1.7/jre
2014-11-05 16:12:34,025 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper-3.4.6/bin/../build/classes:/usr/local/zookeeper-3.4.6/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/usr/local/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/usr/local/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.4.6/bin/../conf:.:/usr/local/jdk1.7/lib:/usr/local/jdk1.7/jre/lib::/usr/local/zookeeper-3.4.6/lib
2014-11-05 16:12:34,030 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2014-11-05 16:12:34,032 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2014-11-05 16:12:34,034 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2014-11-05 16:12:34,037 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2014-11-05 16:12:34,043 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2014-11-05 16:12:34,048 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=2.6.18-128.el5
2014-11-05 16:12:34,049 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=hadoop
2014-11-05 16:12:34,052 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/home/hadoop
2014-11-05 16:12:34,054 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper-3.4.6
2014-11-05 16:12:34,070 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=carl:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@28e13c84
Welcome to ZooKeeper!
2014-11-05 16:12:35,505 [myid:] - INFO  [main-SendThread(carl:2181):ClientCnxn$SendThread@975] - Opening socket connection to server carl/192.168.233.128:2181. Will not attempt to authenticate using SASL (unknown error)
2014-11-05 16:12:35,622 [myid:] - INFO  [main-SendThread(carl:2181):ClientCnxn$SendThread@852] - Socket connection established to carl/192.168.233.128:2181, initiating session
JLine support is enabled
2014-11-05 16:12:36,250 [myid:] - INFO  [main-SendThread(carl:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server carl/192.168.233.128:2181, sessionid = 0x1497e0e46a10000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

然后进入客户端后用help命令查看基本操作命令。

二、分布式安装ZooKeeper
1、配置IP映射。

在配置的ZooKeeper集群的时候,每一个结点的host到IP地址的映射都要配置上集群中其它结点的映射信息。官网说Zookeeper集群配置至少需要三台,所以这个不也是配置三台。请在每台主机文件/etc/hosts下进行配置

192.168.233.128 carl
192.168.233.129 slave1
192.168.233.130 slave2
2、修改配置文件

因为是集群的配置,因此需要添加内容,我们现在一台主机上进行配置。在$ZOOKEEPER_HOME/conf/zoo.cfg 文件中添加如下内容

#配置文件名zoo.cfg
tickTime=2000  
dataDir=/home/hadoop/storage/zookeeper  
clientPort=2181  
initLimit=5  
syncLimit=2  
server.1=carl:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

其中server.id=host:port:port,id是为每个Zookeeper节点的编号,保存在dataDir目录下的myid文件中,carl、slave1以及slave2表示各个Zookeeper节点的hostname,第一个port是用于连接leader的端口,第二个port是用于leader选举的端口

然后我们把现在配置的整个ZooKeeper目录,复制到其他主机上,这样就可以省略掉配置的步骤。

请敲命令

scp -r zookeeper-3.4.6/ hadoop@slave1:/usr/local/  
scp -r zookeeper-3.4.6/ hadoop@slave2:/usr/local/  

这里是将本机的Zookeeper文件全部复制到其他台=主机的/usr/local/目录下

3、设置myid

在dataDir目录下创建myid文件,文件中只包含一行,且内容为该节点conf/zoo.cfg文件中配置的server.id中的id编号

[hadoop@carl local]$ echo "1"  > /home/hadoop/storage/zookeeper/myid
[hadoop@slave1 local]$ echo "2"  > /home/hadoop/storage/zookeeper/myid
[hadoop@slave2 local]$ echo "2"  > /home/hadoop/storage/zookeeper/myid
4、启动ZooKeeper集群

在每台主机的$ZOOKEEPER_HOME下面执行集群启动命令

[hadoop@carl zookeeper-3.4.6]$ bin/zkServer.sh start 
[hadoop@slave1 zookeeper-3.4.6]$ bin/zkServer.sh start
[hadoop@slave2 zookeeper-3.4.6]$ bin/zkServer.sh start
5、查看启动结果

在每台主机的$ZOOKEEPER_HOME下面执行命令:bin/zkServer.sh status

[hadoop@carl zookeeper-3.4.6]$ bin/zkServer.sh status  
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

[hadoop @slave1 zookeeper-3.4.6]# bin/zkServer.sh status  
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader

[hadoop@slave2 zookeeper-3.4.6]$ bin/zkServer.sh status  
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

我们发现主机slave1被选举为Leader,其余的两个节点是Follower,这个是由其内部算法选举生成的。

至此,集群已经安装完毕,这个时候用客户端命令去访问则是访问的是整个Zookeeper集群。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值