Hadoop 叢集中各結點系統時間匹配問題
由於近期專案需求,需要修改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的寫入時間(即叢集中檔案建立時間和系統時間都不相同,現在還不知道為什麼)