Zookeeper 初体验之——伪分布式安装(转)

原文地址: http://blog.csdn.net/salonzhou/article/details/47401069

简介

Apache Zookeeper 是由 Apache Hadoop 的 Zookeeper 子项目发展而来,现在已经成为了 Apache 的顶级项目。Zookeeper 为分布式系统提供了高效可靠且易于使用的协同服务,它可以为分布式应用提供相当多的服务,诸如统一命名服务,配置管理,状态同步和组服务等。Zookeeper 接口简单,开发人员不必过多地纠结在分布式系统编程难于处理的同步和一致性问题上,你可以使用 Zookeeper 提供的现成(off-the-shelf)服务来实现分布式系统的配置管理,组管理,Leader 选举等功能。

Zookeeper 维护了大规模分布式系统中的常用对象,比如配置信息,层次化命名空间等,本文将从开发者的角度详细介绍 Zookeeper 的配置信息的意义以及 Zookeeper 的典型应用场景(配置文件的管理、集群管理、分布式队列、同步锁、Leader 选举、队列管理等)。

Zookeeper 安装与配置

本文采用 Zookeeper-3.4.0 以基础介绍它的安装步骤以及配置信息,最新的代码可以到 Zookeeper 的官网http://zookeeper.apache.org/下载。Zookeeper功能强大,但是安装却十分简单,下面重点以伪分布式模式来介绍 Zookeeper 的安装。

伪分布式模式安装

Zookeeper 安装模式包括:单机模式,伪分布式模式和完全的集群模式。单机模式最简单,本文将跳过单机模式安装(单机模式安装步骤参见 Zeekeeper 官方文档http://zookeeper.apache.org/doc/current/zookeeperStarted.html),伪分布式模式与集群模式配置差别不大,由于手头机器有限,所以本文采用了在单台机器上伪分布式安装。

本文在Ubuntu 12.04上操作,Java 环境为 OpenJDK 1.7。安装 Zookeeper 前首先下载你需要的版本,暂时解压到指定目录(本文解压至~/zookeeper/目录下),并修改配置(可能需要多次修改配置文件),本次伪分布式模拟 5 个 Zookeeper 节点,事先在/tmpzookeeper目录下建立5个文件夹,分别命名为:server001,server002,server003,server004,server005,然后在每个server00#文件夹下面新建 data 和 logs 子文件夹。

Zookeeper 的配置文件主要在 conf 目录,包括zoo.cfg (zoo_sample.cfg)和log4j.properties,修改 zoo_sample.cfg,重命名为zoo.cgf,打开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 an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

将内容修改为(server001节点的配置文件):

# 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 an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper/server001/data
dataLogDir=/tmp/zookeeper/server001/logs
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
server.4=127.0.0.1:8884:7774
server.5=127.0.0.1:8885:7775

  • tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
  • dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
  • clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
  • initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
  • syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
  • server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

然后将此 zookeeper 包拷贝至 /tmp/zookeeper/server001/ 目录下,并在 /tmp/zookeeper/server001/data/ 下建立一个myid文件,文件内容为 1,

echo "1" >> /tmp/zookeeper/server001/data/myid

继续修改~/zookeeper/目录中的zookeeper配置文件文件(server002的配置文件,注意 clientPort=2182,与 server001 中的 clientPort=2181 不同,后续修改配置均需设置不同的 clientPort),内容如下:

# 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 an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper/server002/data
dataLogDir=/tmp/zookeeper/server002/logs
# the port at which the clients will connect
clientPort=2182
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
server.4=127.0.0.1:8884:7774
server.5=127.0.0.1:8885:7775

然后将此 zookeeper 包拷贝至 /tmp/zookeeper/server002/ 目录下,并在 /tmp/zookeeper/server002/data/ 下建立一个myid文件,文件内容为 2,

echo "2" >> /tmp/zookeeper/server001/data/myid

依次修改配置文件,建立 server003,server004,server005节点文件夹,完成上述步骤后/tmp/zookeeper目录结构如下:

[email protected]:/tmp/zookeeper$ tree -d -L 2
.
├── server001
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.0
├── server002
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.0
├── server003
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.0
├── server004
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.0
└── server005
    ├── data
    ├── logs
    └── zookeeper-3.4.0

然后依次进入每个文件夹节点的zookeeper目录中,启动zookeeper服务,

$ bin/zkServer.sh start

前面两个起的时候可能会有错误提示:

2012-11-21 01:28:12,848 - WARN  [QuorumPeer:/0:0:0:0:0:0:0:0:2184:[email protected]] - Cannot open channel to 3 at election address localhost/127.0.0.1:3890
Java.NET.ConnectException: Connection refused

2012-11-21 01:28:12,847 - WARN  [QuorumPeer:/0:0:0:0:0:0:0:0:2184:[email protected]] - Cannot open channel to 2 at election address localhost/127.0.0.1:3889
java.net.ConnectException: Connection refused

这个可以不用管,等服务都起来之后就不会有这个提示了.

如果一切顺利,Zookeeper 伪分布式模式安装成功,下面验证 Zookeeper 安装的正确性。

进入任意一个文件夹节点的zookeeper包所在的目录,执行一下命令:

$ bin/zkCli.sh  -server 127.0.0.1:2181

执行成功后:

[email protected]:/tmp/zookeeper/server001/zookeeper-3.4.0$ bin/zkCli.sh  -server 127.0.0.1:2181
Connecting to 127.0.0.1:2181

Welcome to ZooKeeper!

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: 127.0.0.1:2181(CONNECTED) 0]

help 帮助:

[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
    connect host:port
    get path [watch]
    ls path [watch]
    set path data [version]
    rmr path
    delquota [-n|-b] path
    quit
    printwatches on|off
    create [-s] [-e] path data acl
    stat path [watch]
    close
    ls2 path [watch]
    history
    listquota path
    setAcl path acl
    getAcl path
    sync path
    redo cmdno
    addauth scheme auth
    delete path [version]
    setquota -n|-b val path

至此,Zookeeper 安装完成

时间: 2024-10-06 04:01:35

Zookeeper 初体验之——伪分布式安装(转)的相关文章

(转)Zookeeper 初体验之——伪分布式安装

Zookeeper 初体验之——伪分布式安装 简介 Apache Zookeeper 是由 Apache Hadoop 的 Zookeeper 子项目发展而来,现在已经成为了 Apache 的顶级项目.Zookeeper 为分布式系统提供了高效可靠且易于使用的协同服务,它可以为分布式应用提供相当多的服务,诸如统一命名服务,配置管理,状态同步和组服务等.Zookeeper 接口简单,开发人员不必过多地纠结在分布式系统编程难于处理的同步和一致性问题上,你可以使用 Zookeeper 提供的现成(of

HBase基础和伪分布式安装配置

一.HBase(NoSQL)的数据模型 1.1 表(table),是存储管理数据的. 1.2 行键(row key),类似于MySQL中的主键,行键是HBase表天然自带的,创建表时不需要指定 1.3 列族(column family),列的集合. 一张表中有多个行健,一个行健读取出来的是一条记录,列族和MySQL中的列差不多,但是它是列的集合 HBase中列族是需要在定义表时指定的,列是在插入记录时动态增加的. HBase表中的数据存储在本地磁盘上的时候,每个列族单独一个作为文件存储. 上图表

Hbase伪分布式安装

前面的文章已经讲过hadoop伪分布式安装,这里直接介绍hbase伪分布式安装. 1. 下载hbase 版本hbase 1.2.6 2. 解压hbase 3. 修改hbase-env.sh 新增如下内容 export JAVA_HOME=/home/cauchy/software/jdk export HADOOP_HOME=/home/cauchy/software/hadoop export HBASE_HOME=/home/cauchy/software/hbase export HBAS

Hadoop伪分布式安装

本文介绍的主要是Hadoop的伪分布式的搭建以及遇到的相关问题的解决,做一下记录,jdk的安装这里就不做太多的介绍了,相信大家根据网上的安装介绍很快就能安装成功. 环境 操作系统 Oracle VM VirtualBox-rhel-6.4_64   本机名称 yanduanduan   本机IP 192.168.1.102   JDK 1.7.0_79   hadoop 2.7.3 点此下载 Hadoop 有两个主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比较老的教材

Hadoop学习笔记_4_实施Hadoop集群 --伪分布式安装

实施Hadoop集群 --伪分布式安装 准备与配置安装环境 安装虚拟机和linux,虚拟机推荐使用vmware,PC可以使用workstation,服务器可以使用ESXi,在管理上比较方便.ESXi还可以通过拷贝镜像文件复制虚拟机,复制后自动修改网卡号和ip,非常快捷.如果只是实验用途,硬盘大约预留20-30G空间. 以Centos为例,分区可以选择默认[如果想要手动分区,请参考博客:http://blog.csdn.net/zjf280441589/article/details/175485

Hadoop日记Day3---Hadoop的伪分布式安装

导录 比较仔细的读者可能发现,注意本章的图片又不太对劲的地方,那就是linux中的主机名有的是hadoop,有的是localhost,是由于使用的不同的电脑编辑的本文章,有的电脑上并没有修改主机名,一直使用默认的localhost主机名,不影响大家的学习,只是主机名不一样,其他的都一样,大家注意一下就可以了,自己是什么主机名,就把他看成自己的主机名就可以了,文章中的localhost和hadoop只是不同的主机名,他们的目录结构都是一样的.还有就是一下的软件下载地址:http://pan.bai

香蕉派(or 皮?)上手初体验 -- 外观鉴赏,安装,配置&总结

一.前言及简介 听到"派"或者是看到这幅图片,难免让你想到目前大名鼎鼎的"树莓派".而香蕉派(Banana Pi, 论坛上也有人称它香蕉皮)是一款国产的比树莓派性能更好的单板.开源的开发板.它可以运行Android 4.4系统.Debian.Raspbian以及Lubuntu等操作系统.它采用比较火的全志A20 SoC,1G 内存,从硬件性能上来说它要比树莓派更佳,但是事实真的就是硬件的叠加这么简单么? 我有幸在云汉芯城论坛上申请到一块香蕉派,于是下面我们来看看这个

hadoop伪分布式安装【翻译自hadoop1.1.2官方文档】

1.hadoop支持的平台: GNU/Linux平台是一个开发和生产的平台. hadoop已经被证明可以在GNU/Linux平台不是2000多个节点. win32是一个开发平台,分布式操作还没有在win32系统上很好的测试, 所以它不被作为生产环境. 2.安装hdoop需要的软件: linux和windows下安装hadoop需要的软件: 2.1从sun官网下载的1.6的jdk必须被安装. 2.2ssh 必须被安装 and ssh协议必须使用hadoop脚本用来管理远程的hadoop进程. 2.

【Hadoop】在Ubuntu系统下安装Hadoop单机/伪分布式安装

Ubuntu 14.10 前方有坑: 由于之前的分布式系统电脑带不动,所以想换一个伪分布式试一试.用的是Virtualbox + Ubuntu 14.10 .结果遇到了 apt-get 源无法更新的情况,以及安装包安装不全的情况.只好咬一咬牙,又重新把系统给更新一边. apt-get 源无法更新解决方案:传送门 首先先备份源列表: sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup 用编辑器打开: sudo gedit /etc/