hadoop 2.7.1 jdk 1.7 時區問題以及解決方案.

hackeruncle發表於2016-03-22
安裝搭建hadoop 2.7.1  不在支援jdk 1.6 了,  採用了jdk1.7.0_45  .
在系統搭建後後出現一個奇怪的現象. 

hadoop 日誌,  hhbase 等這些java 應用的日誌無一例外的都採用了UTC 時間,而不是東8區.

[code]

2015-11-03 06:24:16,129 INFO  
[master/hadoop52/192.168:16000-SendThread(hadoop54:2181)]
[/code]


主機的時間設定是沒有問題,都是設定為 GTM+8  而主機時間實際是 14點 相差8個小時.  可以猜測 是時區設定的問題, 

首先把目標放在了java 的問題上,

經過調查,發現 java 會去讀系統的時區的資訊, 

在hadoop 的env 檔案裡 在 opts 引數上制定 java 的時區資訊  "-Duser.timezone=GMT+08 "    強制 java 使用 東8區 也可以解決問題.

再進一步調查 發現java 是透過讀取環境變數的時區資訊來確定時區的,如果環境變數中沒有設定TZ 變數, 那麼java 就會讀取UTC 時間. 


export TZ="Asia/Shanghai"  

再執行java  時間久正確了. 



[code]

cpu time               (seconds, -t) unlimitedmax user processes              (-u) 53248virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited

2015-11-03 14:25:11,559 INFO  [main] util.VersionInfo: HBase 1.1.2
2015-11-03 14:25:11,559 INFO  [main] util.VersionInfo: Source code repository git://hw11397.local/Volumes/hbase-1.1.2RC2/hbase revision=cc2b70cf03e3378800661ec5cab11eb43fafe0fc

[/code]


再個硬體組同事, 一起測試了下, 發現 

設定 /etc/sysconfig/clock
設定為東八區 是不起作用的, 

只有設定TZ 環境變數才行. 


看來就只有設定 /etc/sysconfig/i18n
 這裡加一個環境變數了. 







來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2062009/,如需轉載,請註明出處,否則將追究法律責任。

相關文章