首页 > 网络 > 云计算 >

Hadoop-Zookeeper集群搭建

2016-11-21

在安装Zookeeper之前,首先需要确保的就是主机名称(可选)、hosts都已经更改,并且JDK成功安装。

在安装Zookeeper之前,首先需要确保的就是主机名称(可选)、hosts都已经更改,并且JDK成功安装。

1、安装Zookeeper

使用命令“tar -zxvf”命令将gz压缩文件解压。笔者Zookeeper的安装目录为:“/home/Hadoop”,解压后的Hadoop目录为/home/hadoop/zookeeper-3.4.6”,最好确保Master、Slave1、Slave2机器上的Zookeeper安装路径一致。

2、配置Zookeeper的环境变量

成功安装Zookeeper后,接下来要做的事情就是配置Zookeeper的环境变量,并通过命令“source “/etc/profile”命令使修改后的配置生效,如下所示:

Shell代码

#ZOOKEEPER

ZOOKEEPER=/home/hadoop/zookeeper-3.4.6

PATH=$PATH:$ZOOKEEPER/bin

3、修改Zookeeper的配置文件

首先将/home/hadoop/zookeeper-3.4.6/conf/zoo_sample.cfg文件复制一份,并更名为zoo.cfg,如下所示:

Shell代码

#Thenumberofmillisecondsofeachtick

tickTime=2000

#Thenumberofticksthattheinitial

#synchronizationphasecantake

initLimit=10

#Thenumberofticksthatcanpassbetween

#sendingarequestandgettinganacknowledgement

syncLimit=5

#thedirectorywherethesnapshotisstored.

#donotuse/tmpforstorage,/tmphereisjust

#examplesakes.

dataDir=/home/hadoop/zk/data

dataLogDir=/home/hadoop/zk/log

#theportatwhichtheclientswillconnect

clientPort=2181

#themaximumnumberofclientconnections.

#increasethisifyouneedtohandlemoreclients

#maxClientCnxns=60

#

#Besuretoreadthemaintenancesectionofthe

#administratorguidebeforeturningonautopurge.

#

#http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

#ThenumberofsnapshotstoretainindataDir

#autopurge.snapRetainCount=3

#Purgetaskintervalinhours

#Setto"0"todisableautopurgefeature

#autopurge.purgeInterval=1

server.1=Master:3333:4444

server.2=Slave1:3333:4444

server.3=Slave2:3333:4444

server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

根据dataDir和dataLogDir变量创建相应的目录。

4、创建myid文件

在dataDir目录下创建一个myid文件,然后分别在myid文件中按照zoo.cfg文件的server.A中A的数值,在不同机器上的该文件中填写相应的值。

5、启动Zookeeper

执行命令“zkServer.sh start”将会启动Zookeeper。在此大家需要注意,和在Master启动Hadoop不同,不同节点上的Zookeeper需要单独启动。而执行命令“zkServer.sh stop”将会停止Zookeeper。

开发人员可以使用命令“JPS”查看Zookeeper是否成功启动,以及执行命令“zkServer.sh status”查看Zookeeper集群状态,如下所示:

Shell代码

#192.168.1.224

JMXenabledbydefault

Usingconfig:/home/hadoop/zookeeper-3.4.6/bin/../conf/zoo.cfg

Mode:follower

#192.168.1.225

JMXenabledbydefault

Usingconfig:/home/hadoop/zookeeper-3.4.6/bin/../conf/zoo.cfg

Mode:leader

#192.168.1.226

JMXenabledbydefault

Usingconfig:/home/hadoop/zookeeper-3.4.6/bin/../conf/zoo.cfg

Mode:follower

Zookeeper集群在启动的过程中,查阅zookeeper.out,会有如下异常:

Java代码

java.net.ConnectException:Connectionrefused

atjava.net.PlainSocketImpl.socketConnect(NativeMethod)

atjava.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)

atjava.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)

atjava.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)

atjava.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

atjava.net.Socket.connect(Socket.java:579)

atorg.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368)

atorg.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:341)

atorg.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:449)

atorg.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:430)

atjava.lang.Thread.run(Thread.java:745)

上述异常可以忽略,因为集群环境中某些子节点还没有启动zookeeper。

细节问题

Zookeeper在运行过程中,会产生大量的快照文件,若长时间不清理,则会降低性能和占用大量的磁盘空间,从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,通过配置 autopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。这两个参数都是在zoo.cfg中配置的:

autopurge.purgeInterval这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。

autopurge.snapRetainCount这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。

相关文章
最新文章
热点推荐