将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,执行构建,可以运行了。