于Hadoop集群上进行的zookeeper配置、时间同步

大部分转载自学长的博客:
zookeeper的配置和zookeeper集群的时间同步设置

zookeeper介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。它还支持Java和C语言。

以下是Zookeeper原理图:

在这里插入图片描述

前置条件

首先我们需要一个hadoop集群,如果不知道如何搭建一个小型的hadoop集群的同学可以查看我上一篇的博文:
Hadoop的安装、配置、初步使用!(附加集群)

安装包

在这里插入图片描述
有需要的小伙伴可以在评论区留言!

老样子,让我们用tarmv命令,对安装包解压、移动并重命名

环境变量

export ZK_HOME=/opt/zk    <---这里为zookeeper的路径,因人而异
export PATH=$PATH:$ZK_HOME/bin    <---如果已经有PATH,请添加在其中

修改后,我的profile文件如下图所示:

在这里插入图片描述
最后别忘了source /etc/profile使其生效

zookeeper配置

第一步

进入zookeeper目录下的conf文件夹cd /opt/zk/conf,我们会发现一个名为zoo_sample.cfg的样本文件,这是给我们的一个模板。可以在这个文件里进行添加,但是要记得保存退出后,将文件名改为zoo.cfg

或者你也可以跟着我,新建一个名为zoo.cfg的文件

添加的具体内容如下:

# The number of milliseconds of each tick
tickTime=2000
#最大访问数:不限制
maxClientCnxns=0
# The number of ticks that the initial
# synchronization phase can take
#初始化最小进程数:50
initLimit=50
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
#数据目录
dataDir=/opt/zk/zkdata    <---zookeeper目录/zkdata,目前还没有zkdata这个文件,我们一会来创建它
#日志目录
dataLogDir=/opt/zk/zkdatalog    <---同上
# the port at which the clients will connect
clientPort=2181
#配置三台以上的奇数台可用机器主机名或者ip,注如果不配集群不需要添加以下内容,2888是通信端口,3888是选举通信端口
server.1=hadoop01:2888:3888    <---这里的主机名请根据个人实际情况修改
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

第二步

保存退出后,返回到/opt/zkzookeeper目录下,使用mkdir命令,创建数据目录和日志目录,注意这里的目录名要和刚才在zoo.cfg里的保持一致,这里的操作在集群内的另外几台机器上也要实行

另外,我们可以使用scp /opt/zk.conf/zoo.cfg root@hadoop02:/opt/zk/conf将配置好的zoo文件发送给集群内的其他机器

第三步

进入刚才建好的/opt/zk/conf目录,创建myid文件vi myid,在文件内输入刚才对应server.的后面的数字

比如我现在在hadoop01上修改,刚才zoo.cfg里
在这里插入图片描述

hadoop01的前面是server.1,那么myid里就是1,以此类推,在其他机器上也进行同样的操作

配置集群的时间同步

第一步

首先,先确认是否安装过ntp: rpm -qa | grep ntp,如果有的话使用yum -y remove相关文件名命令卸载

安装ntpyum -y install ntp

第二步

修改所有节点的ntp配置文件vi /etc/ntp.conf,添加如下内容:

#当前节点IP地址
restrict 192.168.23.50 nomodify notrap nopeer noquery
#集群所在网段的网关Gateway,子网掩码Genmask
restrict 192.168.23.1 mask 255.255.255.0 nomodify notrap    <---这里为IP地址,最后一位为1

第三步

选择一个机器作为主节点,修改其/etc/ntp.conf,内容如下:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

其他机器修改/etc/ntp.conf,将server指向主节点,内容如下:

server 192.168.23.50    <---被设为主节点的IP地址
fudge 192.168.23.50 stratum 10

其中,不管为主节点还是子节点,都要注释如下内容:
在这里插入图片描述

第四步

  • 启动ntp服务service ntpd start
  • 设置开机自启动chkconfig ntpd on
  • 查看ntp状态ntpstat,除主机器外出现如下画面即同步成功:
    在这里插入图片描述
    如果是如下,请耐心等待若干分钟(笔者装了几次,体感大约10分钟才能同步好):
    在这里插入图片描述

启动和关闭ZooKeeper并验证

启动命令zkServer.sh start
关闭命令zkServer.sh stop

输入jps查看进程,如果出现QuorumPeerMain服务,即启动成功!

当所有机器执行完上述命令后,再在每台机器上执行zkServer.sh status查看每台机器的Zookerpeer状态,正确的状态是只有一台机器是leader,其余机器都显示follower,这是根据它们自己投票选举出来的!

示例:
在这里插入图片描述
在这里插入图片描述

总结

最后还是感谢学长博客提供的诸多帮助!

猜你喜欢

转载自blog.csdn.net/Helltaker/article/details/108421792