文
章
目
录
章
目
录
一、存在的问题
Hadoop在完全分布式下多个虚拟主机协同运行时,我们需要保证所有主机的时间一致,如果服务器时间不同步,在完全分布式环境下运行代码时可能会出现如下异常:
错误信息:org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container
再次先补充Linux中查看当前主机时间指令:
date
二、解决步骤:
采用NTP(Network Time Protocol)方式来实现, 选择一台机器, 作为集群的时间同步服务器, 然后分别配置服务端和集群其他机器。我这里以master机器时间为准,其他机器同这台机器时间做同步。
1.安装ntp服务
我们需要在每个节点安装ntp
服务
sudo yum install ntp -y
2.配置时间原点
配置master的/etc/ntp.conf
,这边采用本地机器作为时间的原点
1)只允许192.168.217.0网段的客户机进行时间同步
原:
现:
2)注释掉默认的server0~3,新增中国最活跃的时间服务器 : http://www.pool.ntp.org/zone/cn
server 210.72.145.44 perfer # 中国国家受时中心 server 202.112.10.36 # 1.cn.pool.ntp.org server 59.124.196.83 # 0.asia.pool.ntp.org
原:
现:
3) 允许上层时间服务器主动修改本机时间
新增如下:
restrict 210.72.145.44 nomodify notrap noquery restrict 202.112.10.36 nomodify notrap noquery restrict 59.124.196.83 nomodify notrap noquery
4)外部时间服务器不可用时,以本地时间作为时间服务
新增如下:
server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10
service ntpd start
3.临时同步时间
在其他节点slave1和slave2中同步主节点时间
sudo ntpdate master
4.定时同步时间
由于ntpdate只在开机运行,我们需要设置为1小时同步一次。在slave1和slave2中使用crontab来自动更新时间:
crontab -e
添加如下行:
* */1 * * * /usr/sbin/ntpdate master
5、验证是否一致
使用date
命令发现所有节点时间已经一致。