Hadoop集群时间同步

如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;

如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。

1、需求

已有集群服务器,node01、node02、node03。

找一个机器(node01),作为时间服务器,所有的机器与这台集群时间进行定时的同步,生产环境根据任务对时间的准确程度要求周期同步。测试环境为了尽快看到效果,采用1分钟同步一次。

2、时间服务器配置(node01)

#安装 ntpd和 ntpdate
$ sudo rpm -y install ntpd ntpdate

#启动ntpd并且设置为开机自启状态
$ sudo systemctl start ntpd
$ sudo systemctl is-enabled ntpd
#查看ntpd状态
$ sudo systemctl status ntpd

修改node01的ntp.conf配置文件

$ sudo vim /etc/ntp.conf

#修改内容如下:
#1、授权192.168.10.0-192.168.10.255网段上的所有机器可以从这台机器上查询和同步时间
#将#restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap改为

restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

#2、集群在局域网中,不使用其他互联网上的时间
#将以下内容全部注释掉

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

#3、当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步,添加
server 127.127.1.0
fudge 127.127.1.0 stratum 10

修改node01的/etc/sysconfig/ntpd 文件

$ sudo vim /etc/sysconfig/ntpd

#增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes

重启ntpd服务

$ sudo systemctl restart ntpd

3、其它服务器节点配置

关闭所有其它节点上ntpd服务和自启动

$ sudo systemctl stop ntpd
$ sudo systemctl disable ntpd

在其他机器配置1分钟与时间服务器同步一次

$ sudo crontab -e

#添加以下内容
#node02是节点名(即hostname)
*/1 * * * * /usr/sbin/ntpdate node02

修改任意机器时间,然后1分钟后查看机器是否与时间服务器同步

$ sudo date -s "2022-2-11 11:11:11"
$ sudo date

4、可能存在问题:(隔一分钟会发一次邮件,比较烦)

  “您在 /var/spool/mail/root 中有新邮件”问题

 

解决

  1. 使用root用户登录,进入/var/spool/mail目录下;
  2. 删除邮件:cat /dev/null > /var/spool/mail/root;
  3. 禁止系统启动邮件检查:echo "unset MAILCHECK" >> /etc/profile

 

上一篇:建造者模式


下一篇:Hadoop完全分布式环境搭建(nat模式)