ZooKeeper-3.4.10分布式安装指南

目录

目录 1html

1. 前言 1java

2. 约定 1apache

3. 安装步骤 2bash

3.1. 配置/etc/hosts 2服务器

3.2. 设置myid 2session

3.3. 修改conf/zoo.cfg 2app

3.4. 修改/bin/zkEnv.sh 3ssh

3.5. 修改conf/log4j.properties 3分布式

3.6. 修改conf/java.env 3oop

3.7. 设置PATH 4

4. 启动ZooKeeper集群 4

5. 安装验证 4

6. 基本命令 5

7. 只启一台zookeeper会如何? 6

8. 如何扩容zookeeper 7

9. 四字命令 7

10. 相关文档 8

11. 结束语 8

 

1. 前言

介绍ZooKeeper-3.4.6版本的分布式安装,力求细致,提供精确的安装指导。本文的安装环境是64位的SuSE 10.1 Linux,也适用于ZooKeeper-3.4.8

ZooKeeper节点间不须要互登陆,所以不用配置免密码登陆。

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. 安装步骤

Zookeeper机器间不须要设置免密码登陆,其它hadoop也能够不设置,只要不使用hadoop-daemons.sh来启动、中止进程,注意不是hadoop-daemon.sh,而是带“s”的那个,带“s”的会读取hadoopsalves文件,远程ssh启动DataNode和备NameNode等。

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

标识数值(取值范围为1~255)

10.12.154.77

1

10.12.154.78

2

10.12.154.79

3

 

可使用echo命令直接写进去,如:

echo 1 > myidecho 1 > /data/hadoop/zookeeper/data/myid

3.3. 修改conf/zoo.cfg

按下述内容,修改ZooKeeper配置文件(3台机器都须要,能够先配置好一台,而后经过scp等命令复制到其它机器上):

tickTime=2000

dataDir=/data/hadoop/zookeeper/data

dataLogDir=/data/hadoop/zookeeper/datalog

clientPort=2181

initLimit=5

syncLimit=2

autopurge.snapRetainCount=10

autopurge.purgeInterval=1

server.1=DEVNET-154-77:2888:3888

server.2=DEVNET-154-78:2888:3888

server.3=DEVNET-154-79:2888:3888

 

server.N中的N值必须和myid保持相同。

以上内容的配置,参照了ZooKeeper的官方文档:zookeeperStarted.htmlserver.X用来配置ZooKeeper集群中的各节点,并建议X的值和myid保持一致。

端口2181用于监听客户端的链接,端口2888用于Leader监听Follower的链接,而3888则用于Leader选举。

dataDir用来指定快照文件存放目录,dataLogDir用来指定事务日志文件存放目录。若是只指定了dataDir,而没指定dataLogDir,则事务日志文件也存放于dataDir指定的目录。

默认,autopurge的两个参数是被注释的。

“autopurge.purgeInterval”指定自动清理快照文件和事务日志文件的时间,单位为小时,默认为0表示不自动清理,这个时候可使用脚本zkCleanup.sh手动清理。不清理的结果是占用的磁盘空间愈来愈大。

“autopurge.snapRetainCount”用于指定保留快照文件和事务日志文件的个数,默认为3

3.4. 修改/bin/zkEnv.sh

设置环境变量ZOO_LOG_DIRzookeeper的日志存放目录,如:

export ZOO_LOG_DIR=/data/hadoop/zookeeper/log

可将这一行放在ZOOKEEPER_PREFIX以后。

 

再修改下ZOO_LOG4J_PROP,以让日志不是输出到zookeeper.out,而是写入到日志文件,将:ZOO_LOG4J_PROP="INFO,CONSOLE",改为:

ZOO_LOG4J_PROP="INFO,ROLLINGFILE"

3.5. 修改conf/log4j.properties

log4j.appender.ROLLINGFILE.MaxFileSize=100MB

log4j.appender.ROLLINGFILE.MaxBackupIndex=10

设置每一个日志文件大小为100M,滚动10个。

3.6. 修改conf/java.env

打开文件bin/zkEnv.sh,能够看到它有引用conf/java.env。能够在java.env中设置JAVA_HOME这个环境变量,如:export JAVA_HOME=/data/jdk

仅在/etc/profile等处设置JAVA_HOME,可能并无论用。若是无论用,查看log/zookeeper.out,能够看到错误“nohup: failed to run command 'java': No such file or directory”。

3.7. 设置PATH

这步不是必须的,可是推荐将zookeeper/bin加入到环境变量PATH,这样操做zookeeper会方便些,如:export PATH=/data/zookeeper/bin:$PATH

若是计划设置,修改当前用户的.profile.bashrc便可,而不是/etc/profile等。

4. 启动ZooKeeper集群

登陆全部ZooKeeper节点,使用bin目录下的脚本zkServer.sh用来启动ZooKeeper集群,但须要带一个start参数,如:

cd /data/hadoop/zookeeper/bin&&./zkServer.sh start

 

中止参数为stop,重启参数为restart,如:./zkServer.sh restart

因为启动时,每一个节点都会试图去链接其它节点,所以先启动的刚开始会链接不上其它的,致使日志中会包含错误信息,在未全启动以前,这个属正常现象。

5. 安装验证

脚本zkServer.sh不但能够用来启动ZooKeeper,还能够用来查看状态。使用方式为带一个status参数,如:

./zkServer.sh 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. 基本命令

进入ZooKeeperbin目录,执行zkCli.sh进入ZooKeeper的命令行操做界面。

./zkCli.sh -server 10.12.154.78:2181

 

参数“-server”中只含一个“-”,用以指定被链接的ZooKeeper节点,能够为Leader,也能够为Follower,“10.12.154.78”为LeaderFollowerIP或主机名,“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]

 

测试建立一个目录:

[zk: DEVNET-154-79:2181(CONNECTED) 2] create /test test

Created /test

 

[zk: DEVNET-154-79:2181(CONNECTED) 2] ls /

[zookeeper, test]

 

上面能够看到有HBase,是由于基于它部署了一套HBase,若未基于它安装HBase,则不会有这个条目。

7. 只启一台zookeeper会如何?

若是只启动一台,执行zkServer.sh status查看状态时,报以下错误:

$ zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /data/zookeeper/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

 

若是再启一台zookeeper,会发现一个成了leader,另外一个成了follower(经测试两台zookeeper即能正常工做):

$ zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /data/zookeeper/bin/../conf/zoo.cfg

Mode: follower

 

$ zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /data/zookeeper/bin/../conf/zoo.cfg

Mode: leader

8. 如何扩容zookeeper

只须要将已有的zookeeper打包复制到新的机器上,而后修改myid文件并设置好,而后启动zookeeper便可。

9. 四字命令

用户在客户端能够经过telnetncZooKeeper提交相应的命令。ZooKeeper经常使用四字命令见下表:

命令

说明

conf

输出相关服务配置的详细信息

cons

列出全部链接到服务器的客户端的彻底的链接、会话的详细信息,包括接受、发送的包数量、会话ID、操做延迟、最后的操做执行等等信息

dump

列出未经处理的会话和临时节点

envi

输出关于服务环境的详细信息

reqs

列出未经处理的请求

ruok

测试服务是否处于正确状态。若是确实如此,那么服务返回“imok”,不然不作任何相应

stat

输出关于性能和链接的客户端的列表

wchs

列出服务器watch的详细信息

wchc

经过session列出服务器 watch 的详细信息,它的输出是一个与watch相关的会话的列表

wchp

经过路径列出服务器 watch 的详细信息,它输出一个与 session 相关的路径

 

使用示例:

$ echo ruok|nc 127.0.0.1 2181

$ telnet 127.0.0.1 2181  

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

stat

Zookeeper version: 3.4.8--1, built on 02/06/2016 03:18 GMT

Clients:

  /127.0.0.1:34711[0](queued=0,recved=1,sent=0)

  /10.43.36.23:43303[1](queued=0,recved=225666,sent=225666)

 

Latency min/avg/max: 0/0/19

Received: 313930

Sent: 313929

Connections: 2

Outstanding: 0

Zxid: 0x60000cfe4

Mode: follower

Node count: 183

Connection closed by foreign host.

10. 相关文档

HBase-0.98.0分布式安装指南》

Hive 0.12.0安装指南》

ZooKeeper-3.4.6分布式安装指南》

Hadoop 2.3.0源码反向工程》

《在Linux上编译Hadoop-2.4.0

Accumulo-1.5.1安装指南》

Drill 1.0.0安装指南》

Shark 0.9.1安装指南》

 

更多,敬请关注技术博客:http://aquester.cublog.cn

11. 结束语

至此,ZooKeeper分布式安装大告成功!更多细节,请浏览官方文档:http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html

相关文章
相关标签/搜索