ZooKeeper 3.4.5 分布式环境搭建详解

概述

上一篇中,我们说到了关于 Hadoop-2.2.0 集群的搭建。在这个系列中,Zookeeper 是必不可少的。本文会介绍 Zookeeper-3.4.5 的安装,后面会介绍 HBase-0.96 的安装。希望于你有益。


版权说明

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
本文作者:Q-WHai
发表日期: 2016年5月18日
本文链接:http://blog.csdn.net/lemon_tree12138/article/details/51445689
来源:CSDN
更多内容:分类 >> 大数据之 Hadoop


环境说明

  1. CentOS release 6.5 (Final) ( master )
  2. CentOS release 6.5 (Final) ( slave1 )
  3. CentOS release 6.5 (Final) ( slave2 )
  4. JDK-1.8.0_92 ( Oracle )
  5. Hadoop-2.2.0
  6. 虚拟机环境: VMware® Workstation 12 Pro
序号虚拟机 IPhostname
1172.16.2.117master
2172.16.2.115slave1
3172.16.2.116slave2

Zookeeper 环境搭建

下载

http://zookeeper.apache.org/releases.html
进入 Apache 的官网下载一个合适的 Zookeeper 版本进行安装。

$ tar -zxvf zookeeper-3.4.5.tar.gz
$ mv zookeeper-3.4.5 ~/zookeeper

配置环境变量

$ sudo vim /etc/profile

在文件的末尾处,添加如下信息

export ZOOKEEPER_HOME=/home/hadoop/zookeeper
export PATH=$PATH:${ZOOKEEPER_HOME}/bin

设置上面的配置立即生效

$ source /etc/profile

配置 zoo.cfg

配置 zoo.cfg 的路径是 ${ZOOKEEPER_HOME}/conf/zoo.cfg,不过一般情况下,这个文件是不存在的,需要从 zoo_sample.cfg 复制获得

$ cp zoo_smaple.cfg zoo.cfg
$ vim zoo.cfg

配置文件中的内容如下

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/data/zookeeper
clientPort=2181

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

配置防火墙

这里选择关闭防火墙

$ sudo service iptables stop
$ sudo chkconfig iptables off  # 设置防火墙不随系统启动,这一条你可以选择性添加

配置 myid

[hadoop@master ~]$ echo 1 > /home/hadoop/data/zookeeper/myid
[hadoop@slave1 ~]$ echo 2 > /home/hadoop/data/zookeeper/myid
[hadoop@slave2 ~]$ echo 3 > /home/hadoop/data/zookeeper/myid

注意这里 myid 的路径要与上面 zoo.cfg 中 dataDir 的路径一致。否则你的 Zookeeper 将无法启动。
另外上面的三条指令实际上是在三台虚拟机上完成的,这里需要注意,别傻乎乎地在同一台虚拟机上搞得起劲。

配置下发

$ scp -r zookeeper/ slave1:~/
$ scp -r zookeeper/ slave2:~/

这里与 Hadoop 中的下发一样,将整个文件夹下发到你想要安放的目录。只是,这里需要在 scp 后面加上一个 -r,不然你就需要将 zookeeper 文件先压缩,再下发,再在各个子节点下再解压。麻烦死了~,还不如一个 -r 把控全局来得爽。

节点配置修改

这里主要有两个地方需要修改

  1. myid
  2. dataDir
    myid 不用再说了,上面已经讲过了。这里的 dataDir 路径,你必须保证它存在,所以你要去创建它。

启动测试

$ zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

需要注意的是,要在每一台机器上都启动 zookeeper 才可以。

启动验证

$ jps
[hadoop@master ~]$ jps
6888 QuorumPeerMain
7353 Jps

如果这里存在 QuorumPeerMain 进程的话,就说明 Zookeeper 启动成功了。

功能验证

上面的启动验证只是说明了你的 Zookeeper 已经启动了,并不能说明,你的 Zookeeper 启动成功了。我们需要使用下面的指令查看 Zookeeper 是否启动成功。

$ zkServer.sh status
[hadoop@master ~]$ zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

果然,这里的输出信息足以说明我们的 zookeeper 没有启动成功。百度了一通,完全无用!还有的一些完全是在胡说八道。

解决方案

在网上搜了很多的解决方案都不可行。也看了 zookeeper.out 信息,都没有什么发现。于是尝试着修改了 dataDir 的路径到 Zookeeper 的安装目录下(这是网上的教程中都用的目录),并重启计算机,问题解决。当然,我不能保证你按照我的步骤一定可以解决问题。只是把我解决此问题的过程分享给你而已,如果你未能解决它,可能你是另外的情况,但我希望你也可以不吝啬地把你的解决方案分享给大家。

验证结果
master

[hadoop@master zookeeper]$ zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Mode: leader

slave1

[hadoop@slave1 conf]$ zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Mode: follower

slave2

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

测试 zkClient

zkCli.sh -server master:2181
Connecting to master:2181
2016-05-18 09:48:28,985 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.5-1392090, built on 09/30/2012 17:52 GMT
2016-05-18 09:48:28,990 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=master
2016-05-18 09:48:28,990 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_92
( ... 此处省略 N 条 ... )
Welcome to ZooKeeper!
2016-05-18 09:48:29,095 [myid:] - INFO  [main-SendThread(master:2181):ClientCnxn$SendThread@966] - Opening socket connection to server master/172.16.2.117:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2016-05-18 09:48:29,309 [myid:] - INFO  [main-SendThread(master:2181):ClientCnxn$SendThread@849] - Socket connection established to master/172.16.2.117:2181, initiating session
2016-05-18 09:48:29,420 [myid:] - INFO  [main-SendThread(master:2181):ClientCnxn$SendThread@1207] - Session establishment complete on server master/172.16.2.117:2181, sessionid = 0x154c4bf7e640000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: master:2181(CONNECTED) 0]

至此,我们的 Zookeeper 终于搭建完成了。以下是搭建完成之后在 Zookeeper 里面的玩耍:

[zk: master:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: master:2181(CONNECTED) 1] create /newfile hello
Created /newfile
[zk: master:2181(CONNECTED) 2] ls /
[zookeeper, newfile]
[zk: master:2181(CONNECTED) 3] get /newfile
hello
cZxid = 0x200000002
ctime = Wed May 18 09:50:50 PDT 2016
mZxid = 0x200000002
mtime = Wed May 18 09:50:50 PDT 2016
pZxid = 0x200000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: master:2181(CONNECTED) 4] set /newfile gootday

WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/newfile
cZxid = 0x200000002
ctime = Wed May 18 09:50:50 PDT 2016
mZxid = 0x200000003
mtime = Wed May 18 09:53:55 PDT 2016
pZxid = 0x200000002
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
[zk: master:2181(CONNECTED) 7] get /newfile
gootday
cZxid = 0x200000002
ctime = Wed May 18 09:50:50 PDT 2016
mZxid = 0x200000003
mtime = Wed May 18 09:53:55 PDT 2016
pZxid = 0x200000002
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
[zk: master:2181(CONNECTED) 8] delete /newfile
[zk: master:2181(CONNECTED) 9] ls /
[zookeeper]
[zk: master:2181(CONNECTED) 10] quit
Quitting...
2016-05-18 09:56:03,079 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x154c4bf7e640000 closed
2016-05-18 09:56:03,080 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@509] - EventThread shut down

Ref

  • http://www.iteblog.com/archives/904

征集

如果你也需要使用ProcessOn这款在线绘图工具,可以使用如下邀请链接进行注册:
https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 头歌zookeeper是一个分布式协调服务,用于管理和协调分布式系统中的各个节点。在搭建分布式环境时,可以使用头歌zookeeper来实现节点之间的通信和同步。 搭建头歌zookeeper分布式环境的步骤如下: 1. 下载并安装头歌zookeeper。 2. 配置zookeeper的配置文件,包括zookeeper的端口号、数据存储路径等。 3. 在每个节点上启动zookeeper服务。 4. 在每个节点上配置zookeeper的集群信息,包括集群中其他节点的IP地址和端口号。 5. 测试zookeeper集群的连接和同步功能。 需要注意的是,在搭建分布式环境时,要确保各个节点之间的网络连接稳定,并且zookeeper的配置文件和集群信息要保持一致。 ### 回答2: Zookeeper是一个分布式协调服务,可以为分布式应用程序提供一致性、可靠性和高效性。在分布式系统中,通常需要协调各个节点之间的任务分配、状态同步等,Zookeeper就是实现这个目的的工具之一。 要搭建分布式环境,首先需要在多台机器上安装ZookeeperZookeeper的安装可以采用源码编译安装或者直接使用二进制包安装。在安装时需要注意配置Zookeeper的数据目录、日志目录等信息,还需要创建一个Zookeeper的配置文件,用于指定端口、数据目录等参数。 安装完成后,需要启动每个Zookeeper实例。在启动时,需要指定Zookeeper的配置文件和服务器ID。服务器ID应该在每台机器上是唯一的,并且应该落在1~255之间。启动时可以输入命令“./zkServer.sh start”启动。 搭建分布式环境后,需要在Zookeeper中创建znodes。znode是Zookeeper中的数据节点,是分布式环境中数据交换、同步的基本单位。可以使用Zookeeper提供的命令行工具或者编写Java程序实现znode的创建、读取、更新、删除等操作。 创建完znode后,就可以在分布式应用程序中使用Zookeeper实现分布式协调了。例如,可以使用Zookeeper实现分布式锁、分布式任务分配等功能。在使用Zookeeper时,需要注意Zookeeper的一致性协议,避免出现数据不一致的情况。 总之,Zookeeper分布式环境搭建需要注意配置文件和服务器ID的设置,在使用中需要注意一致性问题,才能发挥出其实现分布式协调的能力。 ### 回答3: Zookeeper是一个分布式协调服务,为分布式应用提供一致性服务。对于分布式 系统来说,Zookeeper用于解决如何协调和管理各种分布式服务的问题,有效提 高了分布式系统的可靠性和可用性。 搭建Zookeeper分布式环境,需要以下步骤: 1. 下载和安装Zookeeper软件 从官方网站下载Zookeeper软件包,并解压到想要安装的目录。安装完成后,还可 以配置环境变量,使Zookeeper命令可以全局访问。 2. 配置Zookeeper 在安装Zookeeper后,需要对Zookeeper进行配置。在Zookeeper主目录下创建con f目录,并在其中创建zoo.cfg文件。在zoo.cfg文件中设置Zookeeper服务器的 参数,例如服务器的数量、端口号、数据目录位置等。 3. 启动Zookeeper集群 在配置完Zookeeper后,可通过启动Zookeeper集群来实现对分布式应用程序的协 调和管理。启动Zookeeper集群需要在各个节点主机上运行Zookeeper服务,不同节 点的id必须唯一,并且节点间需要配置相应的IP地址和端口号。 4. 验证Zookeeper集群 启动Zookeeper集群后,需要验证其是否正常工作。可以通过使用客户端连接到 Zookeeper服务器,执行相关的Zookeeper命令来验证Zookeeper集群的工作是否正 常。例如,可以使用"ls /"来列出Zookeeper根节点上的所有子节点,使用"create /temp "hello""创建一个名为temp的节点,并将其值设置为hello。 5. 集成Zookeeper 将程序集成到Zookeeper中需要进行三项基本工作:连接Zookeeper、注册/订阅 节点和断开连接。连接Zookeeper是第一步,每个节点都需要在启动时尝试连接到 一个或多个Zookeeper服务器。注册/订阅节点需要在连接到Zookeeper后进行,以确 保在每个节点上正确维护应用程序运行的状态。断开连接是最后一步,确保在程 序退出之前,关闭与Zookeeper的所有连接。 搭建Zookeeper分布式环境需要仔细配置和验证,确保可以正常工作。通过搭建 分布式环境,可以更好地实现对分布式应用程序的协调和管理,提高系统的可靠性 和可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值