1、下载软件
1.1 下载官方软件,因为我们这里是hadoop3.X, CDH是6.0/1的。所以选择图中红框相应下载既可, 我们使用最新的稳定版v3.0.1 下载地址: https://kylin.apache.org/download/
1.2 linux 环境下载:
wget https://mirror.bit.edu.cn/apache/kylin/apache-kylin-3.0.1/apache-kylin-3.0.1-bin-cdh60.tar.gz1.3 解压查看软件目录
tar zcvf apache-kylin-3.0.1-bin-cdh60.tar.gz
cd apache-kylin-3.0.1-bin-cdh60
ll2、配置环境
2.1 配置kylin环境,一定要看清楚并理解官方给出一软硬要求,特别是环境要求
2.2 配置环境变量(这一步最容易爬坑,我爬了一天)
tail -10 /etc/profile
#这里xxx/path 是CDH软件包的目录,当时安装在哪就写哪
export KYLIN_HOME=/xxx/path/apache-kylin-3.0.1-bin-cdh60
export SPARK_HOME=/xxx/path/CDH/lib/spark
export HBASE_HOME=/xxx/path/CDH/lib/hbase
export CDH_HOME=/xxx/path/CDH
export ZOOKEEPER_HOME=/xxx/path/CDH/lib/zookeeper/
export HIVE_HOME=/xxx/path/parcels/CDH/lib/hive/接下来更改hbase的jar引用,此处是一个issue,官网有提到: issues.apache.org/jira/browse…
编辑hbase脚本 将classpath增加自身的lib引用
vim /xxx/path/CDH/lib/hbase/bin/hbase
##原先的
CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar
##修改为
CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar:/xxx/path/CDH/lib/hbase/lib/*3、启动软件
3.1 在启动之前要先检查一个环境,先执行以下命令:
./bin/check-env.sh3.2 如果上面命令执行没有报错,开始启动kylin
./bin/kylin.sh start3.3 此时控制台会输出启动成功,但当你访问页面时会报404或者打不开,根据官方issue提示,应该要下载一个common包放到 kylin的lib目录中
包下载地址: https://archive.apache.org/dist/commons/configuration/binaries/commons-configuration-1.6.tar.gz
wget https://archive.apache.org/dist/commons/configuration/binaries/commons-configuration-1.6.tar.gz
tar zxvf commons-configuration-1.6.tar.gz
mv commons-configuration-1.6/commons-configuration-1.6.jar kylin/lib/
至少为什么版本是1.6.详见官方issue:
issues.apache.org/jira/projec…
3.4 将commons包放到kylin lib目录后重启kylin 然后访问 : http://IP:7070/kylin
默认账密: ADMIN/KYLIN
4、测试例子
4.1 登陆kylin UI之后,我们需要执行一个测试例子
./bin/sample.sh执行完上面脚本后,会生成一些测试数据,然后重启一下kylin或者在ui界面system 页面上点一下reload metedate 然后返回Model页就可以看见数据了
4.2 此时再选择kylin_sales_model build一下,如果成功就能在Insight看见多个表了
如果在build过程报如下错误:
java.lang.ClassCastException: org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$GetContentSummaryRequestProto cannot be cast to org.apache.phoenix.shaded.com.google.protobuf.Message
这是因为我们的hbase集成了phoenix, 所以需要在配置hbase脚本时,将phoenx相关的包先移动走,等启动好kylin之后再将包移回hbase的lib目录下
vim /xxx/path/CDH/lib/hbase/bin/hbase 查看引用的classpath
4.3 Insight页面可以看见表了
Kylin的示例是销售业务分析
- KYLIN_SALES 事实表,存有销售订单的详细信息(卖家,商品分类,订单金额,商品数量等)
- KYLIN_COUNTRY 维度表,存有国家信息(简写,名称等)
- KYLIN_CATEGORY_GROUPINGS 维度表,存有商品分类的详细介绍(分类名称等)
- KYLIN_CAL_DT 维度表,存有时间扩展信息(日期所在年始,月始,周始,年份,月份等)
- KYLIN_ACCOUNT 维度表,存有账户信息(账户id,卖家等级,买家等级,国家等)
4.4 查询例子
执行 select count(1) from kylin_sales 点击submit,下方会显示执行结果
4.5 执行复杂查询
select sum(KYLIN_SALES.PRICE)
as price_sum,KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME,KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME
from KYLIN_SALES inner join KYLIN_CATEGORY_GROUPINGS
on KYLIN_SALES.LEAF_CATEG_ID = KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID and
KYLIN_SALES.LSTG_SITE_ID = KYLIN_CATEGORY_GROUPINGS.SITE_ID
group by KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME,KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME
order by KYLIN_CATEGORY_GROUPINGS.META_CATEG_NAME asc,KYLIN_CATEGORY_GROUPINGS.CATEG_LVL2_NAME desc
5. 启用spark引擎
- 注意* kylin的配置文件注释是没用的。一定要删除掉相关行,所以在操作之前一定要备份这个 配置文件
- 注意* 官方给的配置 kylin.engine.spark-conf.spark.history.fs.logDirectory 这一行要删除掉。不然跑的时候会报 没有lib包相关exception
- 注意* 更改配置不需要重启kylin 在界面system 点reload 既可
- 编辑配置文件: vim kylin.properties 找到SPARK ENGINE CONFIGS这一段之后加入 以下配置:
kylin.engine.spark-conf.spark.master=yarn
kylin.engine.spark-conf.spark.submit.deployMode=cluster
kylin.engine.spark-conf.spark.dynamicAllocation.enabled=true
kylin.engine.spark-conf.spark.dynamicAllocation.minExecutors=1
kylin.engine.spark-conf.spark.dynamicAllocation.maxExecutors=10
kylin.engine.spark-conf.spark.dynamicAllocation.executorIdleTimeout=300
kylin.engine.spark-conf.spark.yarn.queue=default
kylin.engine.spark-conf.spark.driver.memory=2G
kylin.engine.spark-conf.spark.executor.memory=8G
kylin.engine.spark-conf.spark.yarn.executor.memoryOverhead=1024
kylin.engine.spark-conf.spark.executor.cores=4
kylin.engine.spark-conf.spark.network.timeout=600
kylin.engine.spark-conf.spark.shuffle.service.enabled=true
kylin.engine.spark-conf.spark.eventLog.enabled=true
kylin.engine.spark-conf.spark.executor.instances=1
kylin.engine.spark-conf.spark.hadoop.dfs.replication=2
kylin.engine.spark-conf.spark.hadoop.mapreduce.output.fileoutputformat.compress=true
kylin.engine.spark-conf.spark.hadoop.mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.DefaultCodec
kylin.engine.spark-conf.spark.io.compression.codec=org.apache.spark.io.SnappyCompressionCodec
kylin.engine.spark-conf.spark.eventLog.dir=hdfs\:///kylin/spark-history
kylin.engine.spark-conf.spark.history.fs.logDirectory=hdfs\:///kylin/spark-history