搭建时间服务器并配置集群自动时钟同步
一、搭建时间服务器
(一)为什么要搭建时间服务器
因为Hadoop 对集群中各个机器的时间同步要求比较高, 要求各个机器的系统时间不能相差太多, 不然会造成很多问题。比如,最常见的连接超时问题。所以需要配置集群中各个机器和互联网的时间服务器进行时间同步, 但是在实际生产环境中, 集群中大部分服务器是不能连接外网的, 这时候可以在内网搭建一个自己的时间服务器( NTP 服务器),然后让集群的各个机器与这个时间服务器定时的进行时间同步。
(二)如何搭建时间服务器
以主机名为node01的机器为例。
1、首先查看一下该机器的时间
输入命令date即可。
从结果可以看到当前时间为EST(东部标准时间,即纽约时间),我们处在中国,所以可以把时间改为CST(中部标准时间,即上海时间)。
2、如何修改时间标准?
只需要在所有节点执行命令:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime即可。实际上就是把Shanghai时间的文件复制到localtime中。
注意:上面操作在3个节点都要执行,保证系统当前时间标准为上海时间。
OK,接下来进行时钟同步的配置。
3、配置 NTP 服务器
我们选择第一台机器(node01)为 NTP 服务器,其他机器和这台机器进行定时的时间同步。
(1) 检查 NTP 服务是否已经安装
输入命令:rpm -qa | grep ntp即可。
如果没有安装就输入命令yum install -y ntp进行安装。
实际上就是安装两个软件,其中 ntpdate-4.2.6p5-1.el6.centos.x86_64 是用来和某台服务器进行同步的
ntp-4.2.6p5-1.el6.centos.x86_64 是用来提供时间同步服务的。
(2)修改配置文件 ntp.conf
输入命令:vi /etc/ntp.conf,然后进行如下修改:
1) 启用 restrict,限定该机器网段 ,具体操作如下:
将restrict 192.168.74.136 mask 255.255.255.0 nomodify notrap行的注释去掉,并且将网段改为自己本机的网段,我们这里是 74 网段。当然也可以直接输入本机的IP地址。
2) 注释掉 server 域名配置
#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
以上4个server是时间服务器的域名,这里不需要连接互联网,所以将他们注释掉。
3) 在该文件中添加下边两行,让本机和本地硬件时间同步。
server 127.127.1.0
fudge 127.127.1.0 stratum 10
默认的配置文件里这两个是被注释掉的。NTP服务器会根据这里的配置,把自己的时间作为NTP服务器的时间,即和自己同步。考虑到有的局域网里不可以访问外网,所有这里需要配置该配置项。
(3) 启动NTP服务
输入命令chkconfig ntpd on即可
这样每次机器启动时,NTP服务都会自动启动。
4、配置其他机器的定时时间同步
实际上配置其他机器的时间服务器时钟同步并不难,只需要在对应机器输入命令:crontab -e即可,然后在会话中输入0-59/10 * * * * /usr/sbin/ntpdate node01
下面对这行内容的含义进行简要的解释:
(1)其中0-59/10 * * * * 表示每隔10分钟进行一次时钟同步,空格隔开的五段是crontab语法格式中时间段,一共5段,其中*号表示任意时间,每一段时间的具体含义如下:
(2)其中/usr/sbin/ntpdate node01表示执行的命令,即本机和主机名为node01的机器进行定时的时钟同步。
(3)在其他节点进行同样的操作,然后过10分钟之后再次查看3台机器的时间,如果3台机器的时间一致就表示实现了时间的定时同步。