Kylin4.0.3安装

Apache Kylin是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay开发并贡献至开源社区。它能在亚秒内查询巨大的表。

Apache Kyin4.0是Apache Kylin3.x之后一次重大的版本更新,它采取了全新的Spark构建引擎和Parquet作为存储,同时使用Spark作为查询引擎

依赖

  • java 1.8.0_201
  • hadoop 3.3.4
  • hive 3.1.3
  • mysql 5.7.41
  • spark 3.1.3

安装

下载解压

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#下载kylin4.0.3
wget https://dlcdn.apache.org/kylin/apache-kylin-4.0.3/apache-kylin-4.0.3-bin-spark3.tar.gz --no-check-certificate

#解压到hadoop用户的目录下
tar -zxvf apache-kylin-4.0.3-bin-spark3.tar.gz -C /home/hadoop/software/

#将目录设置为hadoop用户所属
chown -R hadoop:hadoop /home/hadoop/software/apache-kylin-4.0.3-bin-spark3/

##目录结构说明
bin: 包含了启动和停止kylin服务的脚本,例如kylin.sh
conf: 包含了kylin的配置文件,用于配置kylin的各种参数和选项。该目录中,你可以找
到kylin.properties文件,用于配置kylin的全局设置
lib: 包含了kylin运行所需的依赖库和驱动程序。
sample_cube:  包含了示例Cube的定义文件,用于学习和参考。
tomcat: 包含了Kylin内置的Tomcat服务器,用于提供Kylin Web UI。
tool:  包含了一些用于kylin管理和维护的工具脚本。

###配置环境变量
export KYLIN_HOME=/home/hadoop/software/apache-kylin-4.0.3-bin-spark3
export PATH=$PATH:$KYLIN_HOME/bin:$PATH

下载配置spark

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
### 在bin下有个脚本download-spark.sh,不过此脚本默认下载的是hadoop2.x的spark 3.13
### 我这里的是hadoop 3.x,所以需要自己单独下载hadoop3.x的spark
wget https://archive.apache.org/dist/spark/spark-3.1.3/spark-3.1.3-bin-hadoop3.2.tgz

#解压重命名
tar -zxvf spark-3.1.3-bin-hadoop3.2.tgz -C $KYLIN_HOME
mv $KYLIN_HOME/spark-3.1.3-bin-hadoop3.2 $KYLIN_HOME/spark

#删除spark中未使用的组件
rm -rf spark/lib/spark-examples-*
rm -rf spark/examples
rm -rf spark/data
rm -rf spark/R


#下载log4j-core依赖包到spark/jars中
wget -P $KYLIN_HOME/spark/jars https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.6.2/log4j-core-2.6.2.jar

#为了spark能直接查询hive的各种数据,将hive-site.xml复制到spark/conf下
cp /home/hadoop/software/apache-hive-3.1.3-bin/conf/hive-site.xml  $KYLIN_HOME/spark/conf

下载配置mysql驱动包

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#创建ext目录用于存放mysql驱动包
mkdir $KYLIN_HOME/ext &&  cd $KYLIN_HOME/ext

#下载mysql驱动包
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar
curl -o $KYLIN_HOME/ext/mysql-connector-java-5.1.41.jar https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar

#在之前准备好的mysql创建对应数据库
create database kylin;

注意:mysql里会存储kylin的元数据,保存一个json,字节数比较大。可能会出现Packet for query is too large (7155962 > 419434). You can change this value on the server by setting the max_allowed_packet' variable.错误,解决办法如下:

1
2
3
#编辑mysql的配置文件my.conf
[mysqld]
max_allowed_packet = 24M

配置kylin

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#编辑conf/kylin.properties
vim kylin.properties
......
kylin.metadata.url=kylin_metadata@jdbc,driverClassName=com.mysql.jdbc.Driver,url=jdbc:mysql://172.16.77.64:3308/kylin,username=root,password=bnsbdlmysql,maxActive=10,maxIdle=10
kylin.env.hdfs-working-dir=/kylintest
kylin.env.zookeeper-base-path=/kylintest
kylin.env.zookeeper-is-local=false
kylin.env.zookeeper-connect-string=172.16.88.156:2181,172.16.88.157:2181,172.16.88.158:2181
kylin.server.mode=all
kylin.server.cluster-servers=172.16.88.157:7070
kylin.web.timezone=GMT+8
kylin.job.scheduler.default=100

kylin.env.hadoop-conf-dir=/home/hadoop/software/hadoop-3.3.4/etc/hadoop

kylin.query.auto-sparder-context-enabled=false
kylin.canary.sparder-context-canary-enabled=false

参数解释

  • kylin.metadata.url:指定Kylin元数据存储的URL。这里使用的是mysql数据库,URL指定了数据库连接信息。
  • kylin.env.hdfs-working-dir:指定Kylin在HDFS上的工作目录。这个目录用于存储Kylin引擎的中间结果和元数据。
  • kylin.env.zookeeper-base-path:指定Kylin在zookeeper上的基础路径。kylin使用zookeeper来进行分布式协调和锁定。
  • kylin.env.zookeeper-is-local:指定是否使用本地模式的zookeeper。如果设置为true,则kylin将在本地启动一个嵌入式zookeeper服务器。
  • kylin.env.zookeeper-connect-string:指定zookeeper服务器的连接字符串。这个字符串列出了zookeeper服务器的IP地址和端口号。
  • kylin.server.mode:指定kylin服务器的模式。在这个例子中设置为all。表示所有Kylin服务器都处于活动状态。
  • kylin.server.cluster-servers:指定kylin服务器集群中的服务器地址和端口号。在这个例子中使用的是单个服务器。
  • kylin.web.timezone:指定kylin Web界面的时区。在这个配置中,设置为GMT+8,表示东八区的时区。
  • kylin.job.scheduler.default:指定kylin作业的默认调度器。在这个配置中,设置为100,表示使用默认的调度器。
  • kylin.env.hadoop-conf-dir:指定hadoop配置文件的目录。
  • kylin.query.auto-sparder-context-enabled:指定是否启用自动选择Sparder上下文。在这个配置中,设置为false,表示禁用自动选择。
  • kylin.canary.sparder-context-canary-enabled:指定是否启用Sparkder上下文的金丝雀功能。在这个配置中,设置为false,表示禁用金丝雀功能。

运行环境检查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#检查依赖的各个组件的版本、访问权限、CLASSPATH等是否符合要求
$KYLIN_HOME/bin/check-env.sh

Retrieving hadoop conf dir...
...................................................[PASS]
KYLIN_HOME is set to /home/hadoop/software/apache-kylin-4.0.3-bin-spark3
Checking hive
...................................................[PASS]
Checking hadoop shell
...................................................[PASS]
Checking hdfs working dir
...................................................[PASS]

Checking environment finished successfully. To check again, run 'bin/check-env.sh' manually.

ClassNotFound 类型报错

如果启动kylin时,出现以下类似错误

1
2
3
4
ERROR [localhost-startStop-1] context.ContextLoader:313 : Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.apache.kylin.rest.controller.AdminController] from ClassLoader [TomcatClassLoader
  context: kylin
  delegate: false

查看kylin4.0.3的pom.xml文件,发现使用的hadoop 2.10.2 。通过下载kylin源码,然后使用Maven命令mvn dependency:tree查看依赖树情况,得到hadoop 2.10.2依赖commons-configuration-1.6.jar,而我们现在使用的是hadoop3.3.4,所以需要下载commons-configuration-1.6.jar到$KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/lib目录下,该目录需要启动kylin后才会创建。

下面的操作可以在kylin首次启动前添加jar包

1
2
3
4
5
6
7
8
#先进入到webapps目录下创建kylin目录,然后进入到kylin目录去解压kylin.war包
cd $KYLIN_HOME/tomcat/webapps
mkdir kylin && cd kylin
jar -xvf ../kylin.war


#将jar下载到对应目录下
curl -o $KYLIN_HOME/tomcat/webapps/kylin/WEB-INF/lib/commons-configuration-1.6.jar  https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.6/commons-configuration-1.6.jar

启动

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#注意:为了防止以上的操作是在root进行的,再次将kylin目录设置hadoop用户所属
chown -R hadoop:hadoop /home/hadoop/software/apache-kylin-4.0.3-bin-spark3/

#切换用户
su - hadoop

#启动
$KYLIN_HOME/bin/kylin.sh start

Retrieving hadoop conf dir...
...................................................[PASS]
KYLIN_HOME is set to /home/hadoop/software/apache-kylin-4.0.3-bin-spark3
Checking hive
...................................................[PASS]
Checking hadoop shell
...................................................[PASS]
Checking hdfs working dir
...................................................[PASS]

Checking environment finished successfully. To check again, run 'bin/check-env.sh' manually.
Retrieving hadoop conf dir...
Retrieving Spark dependency...
Start replace hadoop jars under /home/hadoop/software/apache-kylin-4.0.3-bin-spark3/spark/jars.
Find platform specific jars:       , will replace with these jars under /home/hadoop/software/apache-kylin-4.0.3-bin-spark3/spark/jars.
Done hadoop jars replacement under /home/hadoop/software/apache-kylin-4.0.3-bin-spark3/spark/jars.
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Start to check whether we need to migrate acl tables
Not HBase metadata. Skip check.

A new Kylin instance is started by hadoop. To stop it, run 'kylin.sh stop'
Check the log at /home/hadoop/software/apache-kylin-4.0.3-bin-spark3/logs/kylin.log
Web UI is at http://k8s-88-157:7070/kylin


#使用jps查看一下
jps
.....
23780 Bootstrap
......

浏览器访问,账号密码为:ADMIN/KYLIN

655c86d448248f5446b53b28407191ac.png

07b5d7342ffd63c4bc9e105d4157a038.png

Buy me a coffee
支付宝
微信
0%