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]
[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
这里加一个环境变量了.