一.NTP服务

NTP ( Network Time Protocol,网络时间协议)是使计算机时间同步化的- “种协议,可以使计算机对其服务器或时钟源进行同步化,提供高精准度的时间校正。安装步骤如下,查看是否存在对应服务
  1. rpm -qa | grep ntp
出现如图则有对应服务

第六章 时间同步 - 图1

没有则安装服务 1.安装NTP服务,如果配置了本地YUM源,可以直接使用命令安装NTP服务:
  1. yum install -y ntp
1.1.如果安装失败则需要重新挂载YUM源,命令如下:
  1. mount/dev/sr0/media

2.修改ntp.conf文件,使用命令打开/etc/ntp.conf

  1. vim /etc/ntp.conf
注释掉以server开头的行,并添加如下代码:

第六章 时间同步 - 图2

3.使用命令关闭防火墙并禁止开机自启动防火墙。(前面做了可跳过)
  1. systectl stop firewalld
  2. systemctl disable firewalld
4.启动NTP服务,启动过程如下
使用命令启动NTP服务:
  1. systectl start ntpd
  2. systemctl enable ntpd
再使用命令查看NTP服务状态:
  1. systemctl status ntpd

第六章 时间同步 - 图3

二.集群时间同步

完全分布式模式由多台主机组成,各个主机的时间可能存在较大差异。如果时间差异较大,执行MapReduce程序的时候会存在问题。如果服务器能连接外网,可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。

NTP服务通过获取网络时间使集群内不同主机的时间保持一致,如果系统未安装NTP服务需要进行安装。

安装流程:NTP服务安装流程

集群时间同步流程:

1.需求

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

第六章 时间同步 - 图4

2.**时间服务器配置(必须root用户)**

(1)查看所有节点ntpd服务状态和开机自启动状态
  1. $ sudo systemctl status ntpd
  2. $ sudo systemctl start ntpd
  3. $ sudo systemctl is-enabled ntpd
(2)修改hadoop102的ntp.conf配置文件
  1. $ sudo vim /etc/ntp.conf
修改内容如下
(a)修改1(授权192.168.10.0-192.168.10.255网段上的所有机器可以从这台机器上查询和同步时间)
  1. #解除注释
  2. #restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
(b)修改2(集群在局域网中,不使用其他互联网上的时间)
  1. # 打开注释
  2. #server 0.centos.pool.ntp.org iburst
  3. #server 1.centos.pool.ntp.org iburst
  4. #server 2.centos.pool.ntp.org iburst
  5. #server 3.centos.pool.ntp.org iburst
(c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
  1. server 127.127.1.0
  2. fudge 127.127.1.0 stratum 10
(3)修改hadoop102的/etc/sysconfig/ntpd 文件
  1. $ sudo vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
  1. SYNC_HWCLOCK=yes
(4)重新启动ntpd服务
  1. $ sudo systemctl start ntpd
(5)设置ntpd服务开机启动
  1. $ sudo systemctl enable ntpd

3.其他机器配置(必须root用户)

(1)关闭所有节点上ntp服务和自启动
  1. $ sudo systemctl stop ntpd
  2. $ sudo systemctl disable ntpd
(2)在其他机器配置1分钟与时间服务器同步一次
  1. $ sudo crontab -e
编写定时任务如下:
  1. */1 * * * * /usr/sbin/ntpdate hadoop102
(3)测试:修改任意机器时间
  1. sudo date -s "2022-9-30 09:18:45"
(4)1分钟后查看机器是否与时间服务器同步
  1. sudo date