由于近期项目需求,需要修改hadoop 集群系统时间,从而测试一些跟当前系统时间有关的service,然而:
1、hadoop 集群的系统时间如何修改?
2、是否需要修改每一台机器的时间?并写入cmos?
3、是否需要严格匹配或同步?
4、hadoop内部机制中尤其是hdfs所采用的操作时间是系统时间呢还是cmos时间?
由于并没有搞清楚内部机制和原理,所以只能去尝试,以上问题我并没有完全搞懂,但是修改系统时间,并使得跟系统时间有关的service可以根据当前修改后的时间进行运行,这一需求我已实现。方法如下:(欢迎懂原理的童鞋朋友指教!)
1)修改service所在机器系统时间:date -s 10/30/2013(2013年10月30日)(这里不需要强行写入cmos)
2)重启hadoop(stop-all.sh ; start-all.sh)
3)由于重新启动后的一小段时间内,namenode还处于安全模式,此时不能写入hdfs,因此,如果想立即执行有写操作的命令,此时需要手动退出安全模式:
hdfs dfsadmin -safemode leave
4)修改完成
说明:由于我只是修改了某一台机器的系统时间,因此hadoop不同节点的系统时间并不相同。但是此时hadoop正常运行,而且hdfs的写入时间(即集群中文件创建时间和系统时间都不相同,现在还不知道为什么)