0
点赞
收藏
分享

微信扫一扫

0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​​https://github.com/fayson/cdhproject​​


提示:代码块部分可以左右滑动查看噢


1

文档编写目的


受前段时间Oracle官宣的从2019年1月之后将不再提供免费的的JDK商业版本的影响,Cloudera开始开发基于OpenJDK的Hadoop平台,参考Fayson之前的文章《​​Java收费,Hadoop怎么办?​​》。今年11月29日,Cloudera才发布不久的CDH5.16.1正式提供OpenJDK的支持,参考Fayson之前的文章《​​0466-CDH5.16.1和CM5.16.1的新功能​​》。本文Fayson主要介绍如何将CDH从Oracle JDK迁移到OpenJDK。


JDK的迁移需要重启整个集群,所以对于所有主机的重启你需要规划停机时间。如果你的集群启用了HDFS HA,可以使用滚动重启而不用规划停机时间。


  • 内容概述

1.CDH各版本的JDK支持说明

2.迁移JDK

3.检查JDK的使用版本

4.组件功能校验

5.总结


  • 测试环境

1.CM和CDH版本为5.16.1

2.采用root用户操作

3.Redhat7.4


2

CDH各版本的JDK支持说明


Cloudera Manager和CDH需要所有节点都安装了受支持的Java Development Kit (JDK) ,具体受支持的版本如下:


Cloudera  Enterprise Version

Supported  JDK

5.3  -5.15

Oracle  JDK 1.7, Oracle JDK 1.8

5.16

Oracle  JDK 1.7, Oracle JDK 1.8, OpenJDK 1.8

6.0

Oracle  JDK 1.8

6.1

Oracle  JDK 1.8, OpenJDK 1.8


3

迁移JDK


1.首先我们确认一下CDH集群的各个节点的JDK安装情况


[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "yum list installed |grep oracle"


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive


可以注意到Fayson集群的的5个节点既安装了Oracle JDK1.7也安装了1.8。


2.我们在Cloudera Manager的页面上确认集群目前在使用的JDK版本。进入Cloudera Manager主页,然后点击“Support > About”。


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_02


集群使用的JDK是Oracle JDK1.7


3.安装Redhat自带的OpenJDK到各台节点,使用yum命令进行安装。


[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "yum -y install java-1.8.0-openjdk-devel"


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_cloudera_03


4.登录到Cloudera Manager节点,编辑以下目录的文件


/etc/default/cloudera-scm-server


增加以下内容:


export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk"


注意:OpenJDK的安装目录根据实际情况可能不同,请根据实际情况调整。


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_oracle_04


5.重启Cloudera Manager Server


[root@ip-172-31-13-38 ~]# systemctl restart cloudera-scm-server


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_cloudera_05


6.查看Cloudera Manager已经使用的是OpenJDK


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_oracle_06


7.移除所有节点的Oracle JDK


[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "yum -y remove oracle-j2sdk1.7"


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_07


[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "yum -y remove oracle-j2sdk1.8"


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_08


8.重启Cloudera Management Service


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_09

0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_cloudera_10


9.重启整个集群服务


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_cloudera_11

0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_oracle_12


4

检查JDK的使用版本


1.以Cloudera Management Service的其中一个服务Alert Publisher为例进行查看,首先我们在Cloudera Manager的界面查看进程ID


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_cloudera_13


到后台查看该进程的环境变量


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_cloudera_14


可以发现已经是openJDK


2.再以YARN的ResourceManager服务为例查看使用的JDK版本,我们依旧到Cloudera Manager上查看进程ID


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_cloudera_15


到后台终端确认ResourceManger服务的环境变量


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_16


可以看到已经是使用的OpenJDK


5

组件功能校验


1.Kerberos环境下提交MapReduce作业


[root@ip-172-31-13-38 ~]# kinit fayson
Password for fayson@FAYSON.COM:
[root@ip-172-31-13-38 ~]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-0.20-mapreduce/hadoop-examples.jar pi 10 1


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_17


作业执行成功


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_18


2.运行Hive作业


[root@ip-172-31-13-38 ~]# beeline
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
Beeline version 1.1.0-cdh5.16.1 by Apache Hive
beeline> !connect jdbc:hive2://localhost:10000/;principal=hive/ip-172-31-13-38.ap-southeast-1.compute.internal@FAYSON.COM
scan complete in 1ms
Connecting to jdbc:hive2://localhost:10000/;principal=hive/ip-172-31-13-38.ap-southeast-1.compute.internal@FAYSON.COM
Connected to: Apache Hive (version 1.1.0-cdh5.16.1)
Driver: Hive JDBC (version 1.1.0-cdh5.16.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000/> show tables;
INFO : Compiling command(queryId=hive_20181218114444_886ca312-f81a-41ef-a299-0e2242c6f593): show tables
INFO : Semantic Analysis Completed
INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:tab_name, type:string, comment:from deserializer)], properties:null)
INFO : Completed compiling command(queryId=hive_20181218114444_886ca312-f81a-41ef-a299-0e2242c6f593); Time taken: 0.596 seconds
INFO : Executing command(queryId=hive_20181218114444_886ca312-f81a-41ef-a299-0e2242c6f593): show tables
INFO : Starting task [Stage-0:DDL] in serial mode
INFO : Completed executing command(queryId=hive_20181218114444_886ca312-f81a-41ef-a299-0e2242c6f593); Time taken: 0.161 seconds
INFO : OK
+---------------------+--+
| tab_name |
+---------------------+--+
| kudu_decimal_table |
| test |
+---------------------+--+
2 rows selected (1.136 seconds)
0: jdbc:hive2://localhost:10000/> select count(*) from test;


0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_19

0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_oracle_20


作业执行成功


6

总结


1.默认的OpenJDK安装路径是/usr/lib/jvm,只要你根据操作系统的yum命令默认安装的,无论是Cloudera Management Service还是Hadoop其他的服务都不需要额外配置Java Home,Cloudera Manager会帮你默认使用正确的OpenJDK,但你最好先卸载所有节点上的所有Oracle JDK。


2.Cloudera Manager Server服务需要单独配置Java Home才能保证启动Manager的服务使用的环境变量为OpenJDK。


3.如果你的OpenJDK不是安装在默认目录,需要单独配置Java Home,依旧可以在Cloudera Manage界面上完成,参考《​​如何将Kerberos环境下CDH集群JAVA升级至JDK8​​》。


4.注意本文在从Oracle JDK迁移到OpenJDK过程,你需要先卸载所有机器上的Oracle JDK,然后使用默认方式安装OpenJDK后,再重启Cloudera Management Service和整个Hadoop集群服务。


5.虽然是Kerberos环境,我们本次迁移到OpenJDK,没有再专门拷贝Java的无限制加密文件jce,因为OpenJDK默认包含了,相应可以参考Fayson之前的文章《​​如何将Kerberos环境下CDH集群JAVA升级至JDK8​​》从JDK7升级到JDK8有专门拷贝整个文件。


6.目前CDSW不支持OpenJDK,所以Fayson的集群在迁移OpenJDK成功,并且验证各个组件功能没问题后,CDSW服务没办法正常启动,如下:

0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_21

Cloudera官网已经对该限制进行了说明:


The entire CDH cluster, including Cloudera Data Science Workbench gateway nodes, must use Oracle JDK. OpenJDK is not currently supported by Cloudera Data Science Workbench.


参考:

​​https://www.cloudera.com/documentation/data-science-workbench/latest/topics/cdsw_requirements_supported_versions.html#jdk_req​​




提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8_hive_22


举报

相关推荐

0 条评论