kylin4.0在CDH6.3.2及Hadoop3.0环境部署避坑

本文描述了在CDH6.3.2环境中部署Kylin4.0时遇到的Spark版本兼容性问题。在尝试使用kylin自带工具下载Spark后,构建cube时出现错误,因为Spark不支持CDH的Hadoop3.0。通过替换为Hadoop2.7版本的jar包并修改Kylin配置,以及禁用CDH检查,最终成功解决了Kylin的构建错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将kylin4.0部署在CDH6.3.2环境的某个节点上,当启动Kylin后,kylin会自动查找CDH的hadoop环境,并将其需要的配置文件等同步到hadoop_conf目录下。
在这里插入图片描述这时用kylin自带的spark下载工具进行spark下载,下载后spark的jars包里会有一组与CDH匹配的jar包
在这里插入图片描述
看起来没有问题,但是在执行cube构建时,发现会报错:

Exception in thread "main" java.lang.ExceptionInInitializerError at org.apache.hadoop.hive.conf.HiveConf.<clinit>(HiveConf.java:105) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at org.apache.spark.util.Utils$.classForName(Utils.scala:238) at org.apache.spark.sql.SparkSession$.hiveClassesArePresent(SparkSession.scala:1117) at org.apache.spark.sql.SparkSession$Builder.enableHiveSupport(SparkSession.scala:866) at com.tyx.ml.Run$.main(Run.scala:26) at com.tyx.ml.Run.main(Run.scala) Caused by: java.lang.IllegalArgumentException: Unrecognized Hadoop major version number: 3.0.0-cdh6.3.2 at org.apache.hadoop.hive.shims.ShimLoader.getMajorVersion(ShimLoader.java:174) at org.apache.hadoop.hive.shims.ShimLoader.loadShims(ShimLoader.java:139) at org.apache.hadoop.hive.shims.ShimLoader.getHadoopShims(ShimLoader.java:100) at org.apache.hadoop.hive.conf.HiveConf$ConfVars.<clinit>(HiveConf.java:368) ... 8 more
也就是当前的spark 版本应该是不支持hadoop3.0的,当然这里也可以尝试去自己编译个spark,通过修改pom文件去支持3.0,但是感觉太麻烦。
于是在本地解压了hadoop 2.7的包,将kylin和spark中的hadoop路径指向了这个2.7

在这里插入图片描述
在这里插入图片描述
但是执行过程中仍然会报错,查看kylin日志,发现报错时会打印出spark-submit的命令行。
在这里插入图片描述在spark安装包中直接运行命令,发现只有kylin下会报错,其他非kylin环境(例如airflow)是能够正常执行的。于是将spark的jars包中3.0的包替换成2.7的,
在这里插入图片描述终于在spark下直接执行命令没问题了

但是在kylin上还是报缺少包的错误,日志中提示缺少hadoop3.0的包,因此在Kylin/bin中的hadoop检查脚本中,注释上对CDH的检查
在这里插入图片描述再次重启kylin,执行构建,可以运行了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值