目录 目录 1 1. 前言 1 2. 约定 1 3. 安装步骤 2 3.1. 配置/etc/hosts 2 3.2. 设置myid 2 3.3. 修改conf/zoo.cfg 2 4. 启动ZooKeeper集群 3 5. 安装验证 3 6. 基本命令 4 7. 结束语 5
1. 前言介绍ZooKeeper-3.4.6版本的分布式安装,力求细致,提供精确的安装指导。本文的安装环境是64位的SuSE 10.1 Linux。 2. 约定将ZooKeeper安装在/data/hadoop/zookeeper目录,其中/data/hadoop/zookeeper是指向/data/hadoop/zookeeper-3.4.6的软链接。 ZooKeeper的数据目录设置为/data/hadoop/zookeeper/data。
本文使用了3台机器部署ZooKeeper集群,IP和主机名对应关系如下: IP | 主机名 | 10.12.154.77 | DEVNET-154-77 | 10.12.154.78 | DEVNET-154-70 | 10.12.154.79 | DEVNET-154-79 | 3. 安装步骤3.1. 配置/etc/hosts将3台机器的IP和主机名映射关系,在3台机器上都配置一下,亦即在3台机器的/etc/hosts文件中,均增加以下内容(可以先配置好一台,然后通过scp等命令复制到其它机器上): 10.12.154.77 DEVNET-154-77 10.12.154.78 DEVNET-154-70 10.12.154.79 DEVNET-154-79 | 3.2. 设置myid在dataDir指定的数据目录(/data/hadoop/zookeeper/data)下,创建文件myid,文件内容为一个正整数值,用来唯一标识当前机器,因此不同机器的数值不能相同,建议从1开始递增标识,以方便记忆和管理。本文约定如下: IP | 标识数值 | 10.12.154.77 | 1 | 10.12.154.78 | 2 | 10.12.154.79 | 3 |
可以使用echo命令直接写进去,如: echo 1 > myid或echo 1 > /data/hadoop/zookeeper/data/myid | 3.3. 修改conf/zoo.cfg按下述内容,修改ZooKeeper配置文件(3台机器都需要,可以先配置好一台,然后通过scp等命令复制到其它机器上): tickTime=2000 dataDir=/data/hadoop/zookeeper/data clientPort=2181 initLimit=5 syncLimit=2 server.1=DEVNET-154-77:2888:3888 server.2=DEVNET-154-78:2888:3888 server.3=DEVNET-154-79:2888:3888 |
以上内容的配置,参照了ZooKeeper的官方文档:zookeeperStarted.html。server.X用来配置ZooKeeper集群中的各节点,并建议X的值和myid保持一致。 端口2181用于监听客户端的连接,端口2888用于Leader监听Follower的连接,而3888则用于Leader选举。 4. 启动ZooKeeper集群bin目录下的脚本zkServer.sh用来启动ZooKeeper集群,但需要带一个start参数,如: cd /data/hadoop/zookeeper/bin&&./zkServer.sh start |
由于启动时,每个节点都会试图去连接其它节点,因此先启动的刚开始会连接不上其它的,导致日志中会包含错误信息,在未全启动之前,这个属正常现象。 5. 安装验证脚本zkServer.sh不但可以用来启动ZooKeeper,还可以用来查看状态。使用方式为带一个status参数,如:
如遇到以下错误,请稍安勿躁,过会再试,可能是因为还未完全起来: [hadoop@DEVNET-154-77 ~/zookeeper/bin]$ ./zkServer.sh status JMX enabled by default Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg Error contacting service. It is probably not running. |
集群成功启动后,将有且只会有一个成为leader,其它是follower: [hadoop@DEVNET-154-79 ~/zookeeper/bin]$ ./zkServer.sh status JMX enabled by default Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg Mode: leader
[hadoop@DEVNET-154-70 ~/zookeeper/bin]$ ./zkServer.sh status JMX enabled by default Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg Mode: follower
[hadoop@DEVNET-154-77 ~/zookeeper/bin]$ ./zkServer.sh status JMX enabled by default Using config: /data/hadoop/zookeeper/bin/../conf/zoo.cfg Mode: follower | 6. 基本命令进入ZooKeeper的bin目录,执行zkCli.sh进入ZooKeeper的命令行操作界面。 ./zkCli.sh -server 10.12.154.78:2181 |
参数“-server”中只含一个“-”,用以指定被连接的ZooKeeper节点,可以为Leader,也可以为Follower,“10.12.154.78”为Leader或Follower的IP或主机名,“2181”为ZooKeerp提供的客户端服务端口。
进入ZooKeeper命令行操作界面后,输入help然后回车,可以看到ZooKeeper支持的命令列表: [zk: DEVNET-154-79:2181(CONNECTED) 0] help ZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|-b] path ls2 path [watch] setAcl path acl setquota -n|-b val path history redo cmdno printwatches on|off delete path [version] sync path listquota path rmr path get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port |
“ls”有点像HDFS中的“ls”,随便测试下: [zk: DEVNET-154-79:2181(CONNECTED) 1] ls / [zookeeper, hbase] |
再测试下: [zk: DEVNET-154-79:2181(CONNECTED) 2] ls /hbase [replication, meta-region-server, rs, splitWAL, backup-masters, table-lock, region-in-transition, online-snapshot, master, running, recovering-regions, draining, namespace, hbaseid, table] |
再测试一下: [zk: DEVNET-154-79:2181(CONNECTED) 4] ls /hbase/backup-masters [VM-40-171-sles10-64,60000,1398162436871] |
上面可以看到有HBase,是因为基于它部署了一套HBase,若未基于它安装HBase,则不会有这个条目。 7. 结束语
下载pdf版:
http://yunpan.cn/QisTeciaWdCdz (提取码:1766)
|