0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
mhr18 2024-10-05 17:39 60 浏览 0 评论
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
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的新功能
》和《
0486-如何将Kerberos的CDH5.16.1从Oracle JDK 1.8迁移至OpenJDK 1.8
》。同时12月19日发布的《
0487-CDH6.1的新功能
》和《
0488-Cloudera Manager6.1的新功能
》,也开始支持OpenJDK。本文Fayson主要介绍如何将CDH6.1从Oracle JDK迁移到OpenJDK。
JDK的迁移需要重启整个集群,所以对于所有主机的重启你需要规划停机时间。如果你的集群启用了HDFS HA,可以使用滚动重启而不用规划停机时间。本文的方式会直接重启集群,如果是生产系统,需要规划停机时间。
- 内容概述
1.CDH各版本的JDK支持说明
2.迁移JDK
3.检查JDK的使用版本
4.组件功能校验
5.总结
- 测试环境
1.CM和CDH版本为6.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-6-83 shell]# sh ssh_do_all.sh node.list "yum list installed |grep oracle"
可以注意到Fayson集群的的4个节点既安装了Oracle JDK1.7也安装了1.8。
2.我们在Cloudera Manager的页面上确认集群目前在使用的JDK版本。进入Cloudera Manager主页,然后点击“Support > About”。
集群使用的JDK是Oracle JDK1.8
3.安装Redhat自带的OpenJDK到各台节点,使用yum命令进行安装。
[root@ip-172-31-6-83 shell]# sh ssh_do_all.sh node.list "yum -y install java-1.8.0-openjdk-devel"
4.登录到Cloudera Manager节点,编辑以下目录的文件
/etc/default/cloudera-scm-server
增加以下内容:
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk"
注意:OpenJDK的安装目录根据实际情况可能不同,请根据实际情况调整。
5.重启Cloudera Manager Server
[root@ip-172-31-6-83 shell]# systemctl restart cloudera-scm-server
6.查看Cloudera Manager已经使用的是OpenJDK
7.移除所有节点的Oracle JDK
[root@ip-172-31-6-83 shell]# sh ssh_do_all.sh node.list "yum -y remove oracle-j2sdk1.7"
[root@ip-172-31-6-83 shell]# sh ssh_do_all.sh node.list "yum -y remove oracle-j2sdk1.8"
8.重启Cloudera Management Service
重启整个集群服务
4
检查JDK的使用版本
1.以Cloudera Management Service的其中一个服务Alert Publisher为例进行查看,首先我们在Cloudera Manager的界面查看进程ID
到后台查看该进程的环境变量
可以发现已经是openJDK
2.再以YARN的ResourceManager服务为例查看使用的JDK版本,我们依旧到Cloudera Manager上查看进程ID
到后台终端确认ResourceManger服务的环境变量
可以看到已经是使用的OpenJDK
5
组件功能校验
1.Kerberos环境下提交MapReduce作业
[root@ip-172-31-6-83 java]# kinit fayson JAR does not exist or is not a normal file: /opt/cloudera/parcels/CDH-6.1.0-1.cdh6.1.0.p0.770702/lib/hadoop-0.20-mapreduce/hadoop-examples.jar [root@ip-172-31-6-83 java]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: fayson@FAYSON.COM Valid starting Expires Service principal 12/29/2018 21:37:16 12/30/2018 21:37:16 krbtgt/FAYSON.COM@FAYSON.COM renew until 01/05/2019 21:37:16 [root@ip-172-31-6-83 java]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 1
作业执行成功
2.运行Hive作业
[root@ip-172-31-6-83 java]# beeline WARNING: Use "yarn jar" to launch YARN applications. SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-6.1.0-1.cdh6.1.0.p0.770702/jars/log4j-slf4j-impl-2.8.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-6.1.0-1.cdh6.1.0.p0.770702/jars/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] Beeline version 2.1.1-cdh6.1.0 by Apache Hive beeline> !connect jdbc:hive2://localhost:10000/;principal=hive/ip-172-31-6-83.ap-southeast-1.compute.internal@FAYSON.COM Connecting to jdbc:hive2://localhost:10000/;principal=hive/ip-172-31-6-83.ap-southeast-1.compute.internal@FAYSON.COM Connected to: Apache Hive (version 2.1.1-cdh6.1.0) Driver: Hive JDBC (version 2.1.1-cdh6.1.0) Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://localhost:10000/> show tables; INFO : Compiling command(queryId=hive_20181229214127_90e75174-6be5-4579-bd84-b4f336a7fe94): 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_20181229214127_90e75174-6be5-4579-bd84-b4f336a7fe94); Time taken: 1.189 seconds INFO : Executing command(queryId=hive_20181229214127_90e75174-6be5-4579-bd84-b4f336a7fe94): show tables INFO : Starting task [Stage-0:DDL] in serial mode INFO : Completed executing command(queryId=hive_20181229214127_90e75174-6be5-4579-bd84-b4f336a7fe94); Time taken: 0.079 seconds INFO : OK +-----------+ | tab_name | +-----------+ | t1 | +-----------+ 1 row selected (2.031 seconds) 0: jdbc:hive2://localhost:10000/> select count(*) from test; Error: Error while compiling statement: FAILED: SemanticException [Error 10001]: Line 1:21 Table not found 'test' (state=42S02,code=10001) 0: jdbc:hive2://localhost:10000/> select count(*) from t1; INFO : Compiling command(queryId=hive_20181229214145_7e6b27e8-dac8-4529-85e0-ec3b6ce6c9c2): select count(*) from t1 INFO : Semantic Analysis Completed INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:_c0, type:bigint, comment:null)], properties:null) INFO : Completed compiling command(queryId=hive_20181229214145_7e6b27e8-dac8-4529-85e0-ec3b6ce6c9c2); Time taken: 0.445 seconds INFO : Executing command(queryId=hive_20181229214145_7e6b27e8-dac8-4529-85e0-ec3b6ce6c9c2): select count(*) from t1 WARN : INFO : Query ID = hive_20181229214145_7e6b27e8-dac8-4529-85e0-ec3b6ce6c9c2 INFO : Total jobs = 1 INFO : Launching Job 1 out of 1 INFO : Starting task [Stage-1:MAPRED] in serial mode INFO : Number of reduce tasks determined at compile time: 1 INFO : In order to change the average load for a reducer (in bytes): INFO : set hive.exec.reducers.bytes.per.reducer=<number> INFO : In order to limit the maximum number of reducers: INFO : set hive.exec.reducers.max=<number> INFO : In order to set a constant number of reducers: INFO : set mapreduce.job.reduces=<number> INFO : number of splits:1 INFO : Submitting tokens for job: job_1546090332827_0002 INFO : Executing with tokens: [Kind: HDFS_DELEGATION_TOKEN, Service: 172.31.6.83:8020, Ident: (token for fayson: HDFS_DELEGATION_TOKEN owner=fayson, renewer=yarn, realUser=hive/ip-172-31-6-83.ap-southeast-1.compute.internal@FAYSON.COM, issueDate=1546090906263, maxDate=1546695706263, sequenceNumber=10, masterKeyId=5), Kind: HIVE_DELEGATION_TOKEN, Service: HiveServer2ImpersonationToken, Ident: 00 06 66 61 79 73 6f 6e 06 66 61 79 73 6f 6e 3e 68 69 76 65 2f 69 70 2d 31 37 32 2d 33 31 2d 36 2d 38 33 2e 61 70 2d 73 6f 75 74 68 65 61 73 74 2d 31 2e 63 6f 6d 70 75 74 65 2e 69 6e 74 65 72 6e 61 6c 40 46 41 59 53 4f 4e 2e 43 4f 4d 8a 01 67 fa 32 82 0e 8a 01 68 1e 3f 06 0e 01 01] INFO : The url to track the job: http://ip-172-31-6-83.ap-southeast-1.compute.internal:8088/proxy/application_1546090332827_0002/ INFO : Starting Job = job_1546090332827_0002, Tracking URL = http://ip-172-31-6-83.ap-southeast-1.compute.internal:8088/proxy/application_1546090332827_0002/ INFO : Kill Command = /opt/cloudera/parcels/CDH-6.1.0-1.cdh6.1.0.p0.770702/lib/hadoop/bin/hadoop job -kill job_1546090332827_0002 INFO : Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1 INFO : 2018-12-29 21:41:55,587 Stage-1 map = 0%, reduce = 0% INFO : 2018-12-29 21:42:03,810 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.91 sec INFO : 2018-12-29 21:42:09,965 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 4.35 sec INFO : MapReduce Total cumulative CPU time: 4 seconds 350 msec INFO : Ended Job = job_1546090332827_0002 INFO : MapReduce Jobs Launched: INFO : Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 4.35 sec HDFS Read: 7955 HDFS Write: 101 HDFS EC Read: 0 SUCCESS INFO : Total MapReduce CPU Time Spent: 4 seconds 350 msec INFO : Completed executing command(queryId=hive_20181229214145_7e6b27e8-dac8-4529-85e0-ec3b6ce6c9c2); Time taken: 25.491 seconds INFO : OK +------+ | _c0 | +------+ | 1 | +------+ 1 row selected (26.088 seconds)
作业执行成功
6
常见错误
1.在卸载完所有节点的Cloudera提供的Oracle JDK1.7/1.8后,重启完Cloudera Manager Server后,在界面上重启Cloudera Management Service时报错如下:
报错如下:
Error: dl failure on line 893 Error: failed /usr/java/jdk1.8.0_131/jre/lib/amd64/server/libjvm.so, because /usr/java/jdk1.8.0_131/jre/lib/amd64/server/libjvm.so: cannot open shared object file: Permission denied
发现是因为Fayson集群的Cloudera Manager节点的/usr/java目录还有之前安装的一个jdk,CMS服务会默认先去找这个目录下的JDK。
直接删除这个文件夹,再次重启CMS,成功。
7
总结
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.如果你的环境中在/usr/java目录下还有其他的JDK1.7或者1.8,注意要清理干净,否则有可能CMS或者Hadoop集群服务依旧没有使用OpenJDK,参考第6章常见错误。
本文迁移过程参考:
https://www.cloudera.com/documentation/enterprise/upgrade/topics/ug_jdk8.html#concept_ct4_ppr_55
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
相关推荐
- SpringBoot 各种分页查询方式详解(全网最全)
-
一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...
- 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
-
《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...
- LoadRunner(loadrunner录制不到脚本)
-
一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...
- Redis数据类型介绍(redis 数据类型)
-
介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...
- RMAN备份监控及优化总结(rman备份原理)
-
今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...
- 备份软件调用rman接口备份报错RMAN-06820 ORA-17629 ORA-17627
-
一、报错描述:备份归档报错无法连接主库进行归档,监听问题12541RMAN-06820:WARNING:failedtoarchivecurrentlogatprimarydatab...
- 增量备份修复物理备库gap(增量备份恢复数据库步骤)
-
适用场景:主备不同步,主库归档日志已删除且无备份.解决方案:主库增量备份修复dg备库中的gap.具体步骤:1、停止同步>alterdatabaserecovermanagedstand...
- 一分钟看懂,如何白嫖sql工具(白嫖数据库)
-
如何白嫖sql工具?1分钟看懂。今天分享一个免费的sql工具,毕竟现在比较火的NavicatDbeaverDatagrip都需要付费才能使用完整功能。幸亏今天有了这款SQLynx,它不仅支持国内外...
- 「开源资讯」数据管理与可视化分析平台,DataGear 1.6.1 发布
-
前言数据齿轮(DataGear)是一款数据库管理系统,使用Java语言开发,采用浏览器/服务器架构,以数据管理为核心功能,支持多种数据库。它的数据模型并不是原始的数据库表,而是融合了数据库表及表间关系...
- 您还在手工打造增删改查代码么,该神器带你脱离苦海
-
作为Java开发程序,日常开发中,都会使用Spring框架,完成日常的功能开发;在相关业务系统中,难免存在各种增删改查的接口需求开发。通常来说,实现增删改查有如下几个方式:纯手工打造,编写各种Cont...
- Linux基础知识(linux基础知识点及答案)
-
系统目录结构/bin:命令和应用程序。/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev:dev是Device(设备)的缩写,该目录...
- PL/SQL 杂谈(二)(pl/sql developer使用)
-
承接(一)部分。我们从结构和功能这两个方面展示PL/SQL的关键要素。可以看看PL/SQL的优雅的代码。写出一个好的代码,就和文科生写出一篇优秀的作文一样,那么赏心悦目。1、与SQL的集成PL/S...
- 电商ERP系统哪个好用?(电商erp哪个好一点)
-
电商ERP系统哪个好用?做电商的,谁还没被ERP折腾过?有老板说:“我们早就上了ERP,订单、库存、财务全搞定,系统用得飞起。”也有运营吐槽:“系统是上了,可库存老不准,订单漏单错单天天有,财务对账还...
- 汽车检测线系统实例,看集中控制与PLC分布控制
-
PLC可编程控制器,上个世纪70年代初,为取代早期继电器控制线路,开始采取存储指令方式,完成顺序控制而设计的。开始仅有逻辑运算、计时、计数等简单功能。随着微处理的发展,PLC可编程能力日益提高,已经能...
- 苹果五件套成公司年会奖品主角,几大小技巧教你玩转苹果新品
-
钱江晚报·小时新闻记者张云山随着春节的临近,各家大公司的年会又将陆续上演。上周,各大游戏公司的年会大奖,苹果五件套又成了标配。在上海的游戏公司中,莉莉丝奖品列表拉得相当长,从特等奖到九等奖还包含了特...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)