Apache Kylin : Analytical Data Warehouse for Big Data

Page tree

Welcome to Kylin Wiki.

参考 issue: KYLIN-5069 - Getting issue details... STATUS

一、背景

目前,kylin4.0 中仍然需要通过 hiveClient 去获取 hive meta 信息来 load hive table,load hive table 时需要从 $HIVE_HOME/lib 下将 hive_dependency 加载到 kylin 环境中,通过用户反馈发现,由于用户使用的 hive 版本各异,hive_dependency 也会各不相同,在 load hive table 时经常会出现类冲突问题。

此外,由于 kylin 会加载 hadoop classpath 的所有类到环境中,然后在 kylin 运行时再通过 SparkClassLoader 对 kylin 环境中的所有 dependency 做过滤加载,使用过滤完的 classpath 作为启动 sparder 的环境,这个过程可以简化为只加载需要的类到 kylin 环境中,去除 SparkClassLoader 的类加载过程。

为了解决此类问题,我们计划将加载 dependency 的过程统一通过 spark 管理

  1. 从 kylin4.0 中去除 hive dependency,使用 SparkSession 来获取 hive meta 信息。
  2.  整理hadoop classpath,只加载 kylin4.0 真正需要的 hadoop 相关 jar 包到 kylin4.0 环境中,去除 SparkClassLoader。

二、开发计划

需要做的事情如下:

1. 从 kylin 启动脚本 kylin.sh 中去除加载 hive dependency 的过程;

2. 为避免 kylin 启动脚本 kylin.sh 中将 hadoop lib 目录下的所有 jar 包都加入 classpath,对 hadoop lib 下的 jar 包做整理和筛选,并将需要的 jar 包 copy 到 $SPARK_HOME/jars 目录下(仅当 $SPARK_HOME 路径为 $KYLIN_HOME/spark 时);

3. 在 kylin.sh 中对 kylin 要加载的 classpath 进行修改:之前的 classpath 包括 kylin server classpath、${KYLIN_HOME}/conf、${KYLIN_HOME}/lib/*、${KYLIN_HOME}/ext/*、hadoop classpath、hive classpath,修改之后的 class path 只包括 kylin server classpath、${KYLIN_HOME}/conf、${KYLIN_HOME}/lib/*、${KYLIN_HOME}/ext/*、${KYLIN_HOME}/hadoop_conf/*、${SPARK_HOME}/jars/*。之前的 hadoop classpath 和 hive classpath 由 ${SPARK_HOME}/jars/ 代替;

4. 继承 IHiveClient 接口实现 SparkHiveClient 类,使用 SparkSession 实现其中的方法;

5. 将 Kylin 4.0 中使用到原有 CLIHiveCLient/BeelineHiveClient 类的地方均替换为使用 SparkHiveClient 类;

6. 清理相关无用代码。

三、配置项变更

kylin.source.hive.client:原默认值为 cli,可配置为 cli 和 beeline;修改之后默认值为 spark_catalog。原来使用 cli 和 beeline 的用户均改变为使用 spark_catalog 来访问 hive meta。

四、测试

代码完成后,在 kylin4 支持的各个环境中进行兼容性测试,主要测试构建、查询和 load hive table。最终在以下环境通过测试:

Hadoop DistributionSparkHadoopHiveCluster Manager

Distributed Filesystem

Verified ?Comment
CDH 5.72.4.7/3.1.12.6.0-cdh5.7.61.1.0-cdh5.7.6YARNHDFS
  • verified
无需额外步骤
HDP 2.42.4.7/3.1.12.7.1.2.4.0.0-161.2.1000.2.4.0.0-16YARNHDFS
  • verified
无需额外步骤
AWS EMR 5.33.02.4.7/3.1.1

2.10.1-amzn-1

Hive 2.3.7-amzn-4

YARNHDFS/S3
  • verified
无需额外步骤
CDH 6.2.02.4.7/3.1.13.0.0-cdh6.2.02.1.1-cdh6.2.0YARNHDFS
  • verified
需要准备jar包放在指定目录:Deploy Kylin 4 on CDH 6
AWS EMR 6.3.03.1.1

3.2.1-amzn-3

3.1.2-amzn-4YARNHDFS/S3
  • verified
无需额外步骤
Apache3.1.13.2.02.3.9YARN, StandaloneS3
  • verified
http://kylin.apache.org/docs40/install/deploy_without_hadoop.html
  • No labels