hadoop 2.7.1 jdk 1.7 时区问题以及解决方案.

转载自:http://blog.itpub.net/133735/viewspace-1821635/ 作者 babyyellow

安装搭建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
 这里加一个环境变量了. 
posted @ 2016-09-19 15:39  goto_217  阅读(375)  评论(0编辑  收藏  举报