升级CDH集群的JDK
更改所有节点的java命令
[root@a01 ~]# whereis java
java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java /usr/share/man/man1/java.1.gz
[root@a01 ~]# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 2月 10 2017 /usr/bin/java -> /etc/alternatives/java
[root@a01 ~]# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 46 2月 10 2017 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
[root@a01 ~]#
查看我的JDK发现 我的JDK链接到了/etc/alternatives/java
然后又去链接到这个/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
,终于这时候遇到真身了。就是这个openjdk下面的java
命令
那么这个alternatives
是个什么东西呢?
百度一下发现这个东西是一个版本管理器,它可以把一些服务注册到这个管理器上面。然后通过一些链接的指向进行管理。那么就搜一下他的用法
[root@a01 java]# alternatives --help
替换选择(alternatives)的版本 1.3.49.3 - 版权 (C) 1997-2000 Red Hat, Inc.
在 GNU 公共许可的条款下,本软件可以被自由发行。
用法:alternatives --install <link> <name> <path> <priority>
[--initscript <service>]
[--slave <link> <name> <path>]*
alternatives --remove <name> <path>
alternatives --auto <name>
alternatives --config <name>
alternatives --display <name>
alternatives --set <name> <path>
公用选项:--verbose --test --help --usage --version
--altdir <directory> --admindir <directory>
[root@a01 java]#
可以看到他的用法可以如上面所示,上面有点抽象,那么来一个具体的实例
比如:查看一下最近的java
命令的更改
[root@a01 ~]# alternatives --display java
java - 状态是自动。
链接目前指向 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - 优先度 1500
从 keytool:/usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
从 orbd:(null)
从 pack200:(null)
从 rmid:(null)
从 rmiregistry:/usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry
从 servertool:(null)
从 tnameserv:(null)
从 unpack200:(null)
从 jre_exports:/usr/lib/jvm-exports/jre-1.5.0-gcj
从 jre:/usr/lib/jvm/jre-1.5.0-gcj
从 java.1.gz:(null)
从 keytool.1.gz:(null)
从 orbd.1.gz:(null)
从 pack200.1.gz:(null)
从 rmid.1.gz:(null)
从 rmiregistry.1.gz:(null)
从 servertool.1.gz:(null)
从 tnameserv.1.gz:(null)
从 unpack200.1.gz:(null)
/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java - 优先度 170009
从 keytool:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/keytool
从 orbd:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/orbd
从 pack200:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/pack200
从 rmid:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/rmid
从 rmiregistry:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/rmiregistry
从 servertool:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/servertool
从 tnameserv:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/tnameserv
从 unpack200:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/unpack200
从 jre_exports:/usr/lib/jvm-exports/jre-1.7.0-openjdk.x86_64
从 jre:/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
从 java.1.gz:/usr/share/man/man1/java-java-1.7.0-openjdk.1.gz
从 keytool.1.gz:/usr/share/man/man1/keytool-java-1.7.0-openjdk.1.gz
从 orbd.1.gz:/usr/share/man/man1/orbd-java-1.7.0-openjdk.1.gz
从 pack200.1.gz:/usr/share/man/man1/pack200-java-1.7.0-openjdk.1.gz
从 rmid.1.gz:/usr/share/man/man1/rmid-java-1.7.0-openjdk.1.gz
从 rmiregistry.1.gz:/usr/share/man/man1/rmiregistry-java-1.7.0-openjdk.1.gz
从 servertool.1.gz:/usr/share/man/man1/servertool-java-1.7.0-openjdk.1.gz
从 tnameserv.1.gz:/usr/share/man/man1/tnameserv-java-1.7.0-openjdk.1.gz
从 unpack200.1.gz:/usr/share/man/man1/unpack200-java-1.7.0-openjdk.1.gz
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java - 优先度 16000
从 keytool:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/keytool
从 orbd:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/orbd
从 pack200:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/pack200
从 rmid:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmid
从 rmiregistry:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmiregistry
从 servertool:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/servertool
从 tnameserv:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/tnameserv
从 unpack200:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/unpack200
从 jre_exports:/usr/lib/jvm-exports/jre-1.6.0-openjdk.x86_64
从 jre:/usr/lib/jvm/jre-1.6.0-openjdk.x86_64
从 java.1.gz:/usr/share/man/man1/java-java-1.6.0-openjdk.1.gz
从 keytool.1.gz:/usr/share/man/man1/keytool-java-1.6.0-openjdk.1.gz
从 orbd.1.gz:/usr/share/man/man1/orbd-java-1.6.0-openjdk.1.gz
从 pack200.1.gz:/usr/share/man/man1/pack200-java-1.6.0-openjdk.1.gz
从 rmid.1.gz:/usr/share/man/man1/rmid-java-1.6.0-openjdk.1.gz
从 rmiregistry.1.gz:/usr/share/man/man1/rmiregistry-java-1.6.0-openjdk.1.gz
从 servertool.1.gz:/usr/share/man/man1/servertool-java-1.6.0-openjdk.1.gz
从 tnameserv.1.gz:/usr/share/man/man1/tnameserv-java-1.6.0-openjdk.1.gz
从 unpack200.1.gz:/usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz
当前“最佳”版本是 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java。
[root@a01 ~]#
得到目前最新的版本为java7,他的优先级为 170009
那么就需要更改本地java版本了
# 安装JAVA8。你可以自己上传安装也可以通过yum进行安装,这里不演示流程
# 我的java8安装的目录为/usr/java/jdk8
# 于是因此我可以使用如下命令更改
alternatives --install /usr/bin/java java /usr/java/jdk8/bin/java 170010
参数解析:
--install 表示安装
/usr/bin/java 表示命令存在的公共链接(必须绝对路径)
java 表示安装的命令名称
/usr/java/jdk8/bin/java 表示命令实际上指向的位置
170010 表示命令的优先级,如果你设置的优先级低于上一个版本的优先级,那么他依旧会执行上一个版本的命令
这里只是第一步,此时java命令可以使用了。并且更新为了java8的命令,但是你还需要修改一些/etc/profile的环境变量。
比如我的在/etc/profile
下添加了以下内容
export JAVA_HOME=/usr/java/jdk8
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
! ! !记得新的JDK一定要在所有节点上面都安装 ! ! !
更改Cloudera Manager Server 的java 环境
- 关闭所有服务,不仅包括hdfs,hive等服务,而且包含cloudera server和agent的服务。
service cloudera-scm-agent stop
service cloudera-scm-server stop
- 在Cloudera Manager Server 主机上修改
/etc/default/cloudera-scm-server
添加export JAVA_HOME=/usr/java/jdk8
- 启动 Cloudera Manager Server 使用命令
service cloudera-scm-server start
- 更改网页上面的配置java_home 点击顺序【主机】->【所有主机】->【配置】->【高级】
- 启动其他agent节点