如何在香港服务器中搭建Zookeeper
zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为两个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本作用,第二部分介绍ZooKeeper的安装。
首先我们来说一下Zookeeper
如果是一台服务器配置各种文件很容易,如果配置文件很多,或者有很多服务器都要配置文件,这就需要寻找一个几种管理配置的工具。Zookeeper就是这种服务,它使用Zab这种一致性协议来提供一致性。现在有很多开源项目使用Zookeeper来维护配置,比如在HBase中,客户端就是连接一个Zookeeper,获得必要的HBase集群的配置信息,然后才可以进一步操作。还有在开源的消息队列Kafka中,也使用Zookeeper来维护broker的信息。在Alibaba开源的SOA框架Dubbo中也广泛的使用Zookeeper管理一些配置来实现服务治理。
名字服务很好理解,就是需要域名来访问,但是域名对应的IP地址会变,尤其是服务特别多的时候,在本地保存服务地址很不方便,这里我们只需要访问一个大家都熟知的访问点,提供统一的入口,那么维护起来就方便多了。
Zookeeper是一个分布式协调服务。这样我们就可以利用Zookeeper来协调多个分布式进程之间的活动。为了提高可靠性,我们的集群的每台服务器上都部署着同样的服务。但是,一件事情如果集群中的每个服务器都进行的话,那相互之间就要协调,编程起来将非常复杂。而如果我们只让一个服务进行操作,那又存在单点。通常还有一种做法就是使用分布式锁,在某个时刻只让一个服务去干活,当这台服务出问题的时候锁释放,立即fail over到另外的服务。
在分布式的集群中,经常会由于各种原因,比如硬件故障,软件故障,网络问题,有些节点会进进出出。有新的节点加入进来,也有老的节点退出集群。这个时候,集群中其他机器需要感知到这种变化,然后根据这种变化做出对应的决策。比如我们是一个分布式存储系统,有一个中央控制节点负责存储的分配,当有新的存储进来的时候我们要根据现在集群目前的状态来分配存储节点。这个时候我们就需要动态感知到集群目前的状态。还有,比如一个分布式的SOA架构中,服务是一个集群提供的,当消费者访问某个服务时,就需要采用某种机制发现现在有哪些节点可以提供该服务(这也称之为服务发现,比如Alibaba开源的SOA框架Dubbo就采用了Zookeeper作为服务发现的底层机制)。还有开源的Kafka队列就采用了Zookeeper作为Cosnumer的上下线管理。
下面我们来说一下Zookeeper集群的具体搭建
1.1 修改 Linux 主机名
1.2 修改 IP
1.3 修改主机名和 IP 的映射关系, 至少需要 3 台
如果租用的服务器或是使用的云主机 /etc/hosts 里面要配置的是内网 IP 地址和主机名的映射关系
1.4 关闭防火墙
1.5 ssh 免登陆
1.6 安装 JDK,配置环境变量等
1.7 设置时间不能超过 3 秒钟
(2)安装配置 zooekeeper 集群
2.1 解压
tar -zxvf zookeeper-3.4.5.tar.gz -C /YBZ/
2.2 修改配置
cd /YBZ/zookeeper-3.4.5/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg
修改:
dataDir=/YBZ/zookeeper-3.4.5/data(快照文件)
dataLogDir=/YBZ/zookeeper-3.4.5/dataLog(日志文件)
注意。 先创建 zookeeper 里面的日志文件和快照文件。
mkdir /YBZ/zookeeper-3.4.5/data
mkdir /YBZ/zookeeper-3.4.5/dataLog
去掉两个#
第一个: #autopurge.snapRetainCount=3
这个是每隔一段时间在去检查日志文件和快照文件。只让他保留
最新的 3 份
第二个: #autopurge.purgeInterval=1
每隔的时间单位去检查日志文件和快照文件
2.2.1 其中各配置项的含义,解释如下:
2.2.1.1 tickTime:CS 通信心跳时间
Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime 时间就会发送一个心跳。tickTime以毫秒为单位 tickTime=2000。
2.2.1.2 initLimit: LF 初始通信时限
集群中的 follower 服务器(F)与 leader 服务器(L)之间初始连接时能容忍的最
多心跳数( tickTime 的数量)。 initLimit=5
2.2.1.3 syncLimit: LF 同步通信时限
集群中的 follower 服务器与 leader 服务器之间请求和应答之间能容忍的最多心跳数( tickTime 的数量)。syncLimit=2
2.2.1.4 dataDir:数据文件目录
Zookeeper 保存数据的目录,默认情况下, Zookeeper 将写数据的日志文件也保存在这个目录里。
dataDir=/home/michael/opt/zookeeper/data
2.2.1.5 clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口, Zookeeper 会监听这个端口,接受客户端的访问请求。 clientPort=2181
2.2.1.6 服务器名称与地址
集群信息(服务器编号,服务器地址, LF 通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.1=YBZ01:2888:3888
server.2=YBZ02:2888:3888
server.3=YBZ03:2888:3888
server.A = B:C:D : A 表示这个是第几号服务器,B 是这个服务器的 ip 地址; C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口; D 表
示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader。
2.2.2 保存退出
然后创建一个 data 快照文件夹 mkdir /YBZ/zookeeper-3.4.5/data
再创建一个空文件 touch /YBZ/zookeeper-3.4.5/data/myid
最后向该文件写入 ID echo "1" > /YBZ/zookeeper-3.4.5/data/myid
2.3
scp -r / YB Z/zookeeper- 3.4.5/ YBZ02 : /YBZ/
scp -r / YBZ /zookeeper- 3.4.5/ YBZ03 : /YBZ/
注意:修改 id 内容
YBZ02: echo "2" > /YBZ/zookeeper-3.4.5/data/myid YBZ03:
echo "3" > /YBZ/zookeeper-3.4.5/data/myid
2.4 启动 zookeeper 服务
输入 /YBZ / zookeeper-3.4.5/bin/./zkServer.sh start 启动。
输入 Jps 查看 1930 QuorumPeerMain(有它就说明启动成功) 1967 Jps。
注,启动 hadoop 需要同时启动。
本次讲解就到这里,相信小编已经给大家对于Hadoop的ZooKeeper的安装做了一些正确合理的普及,大家现在应该理解Hadoop的ZooKeeper的安装是如何完成的了,喜欢动手的朋友可以安装上述步骤自行安装一遍Zookeeper集群进行Hadoop框架研究(上述操作本人都亲自试验过)。
希望大家踊跃的购买我们公司的香港服务器,更好的进行hadoop相关的研究和实战。
如果还有什么不明确或者不懂的地方,欢迎来到新世界主机咨询了解,详情请咨询Skpey咨询:vpssj.net@hotmail.com, 。我们必将竭诚为您服务。