一、基本架构及原理
实现:利用hadoop中MapReduce框架对hive表中的数据进行预计算,将预计算结果缓存至Hbase中,解决TB级数据分析需求
原理架构参考:https://www.cnblogs.com/tgzhu/p/6113334.html
解决问题:解决海量数据上进行快速查询的难题
解决方案:对于超大数据集的复杂查询,由于现场计算需要花费较长时间,根据空间换时间的原理,提前将所有可能的计算结果计算并存储下来,从而实现超大数据集的秒级多维分析查询。
基本架构:
1、支持的数据源:来自kafka的流数据和hive离线数据
2、计算框架:Spark/MapReduce (Spark引擎Kylin2.0引进的)目前主要用MapReduce,因为两者性能差不多
3、结果储存:预计算结果主要存储在Hbase中(json字符串的形式)
4、对外提供:kylin对外提供标准SQL接口(jdbc/odbc,Rest API),所以Kylin提供与BI工具的整合能力,如Tableau,PowerBI/Excel,MSTR,QlikSense,Hue和SuperSet
参考:https://www.jianshu.com/p/9d4e7c8a53a9
https://blog.csdn.net/lvguichen88/article/details/53054745
https://www.cnblogs.com/sh425/p/5845241.html
https://blog.csdn.net/yu616568/article/details/48103415
Kylin系统架构:
包括: 数据源(source),执行引擎(engine),存储(storage)
执行引擎包括:查询引擎和cube构建
基本实现:
Model:根据业务查询,抽取hive中所需要的列字段,根据Model筛选出来需要参加业务处理的数据,而不参加的会被去除
Cube创建:就是一个Hive表的数据按照指定维度与指标计算出的所有组合结果。
Cuboid:每一种维度组合称为cuboid,一个cuboid包含一种具体维度组合下所有指标的值。
如图,整个立方体称为1个cube,立方体中每个网格点称为1个cuboid,图中每个点代表一个cuboid,(A,B,C,D)称为Base cuboid。cube的计算过程是逐层计算的,首先计算Base cuboid,然后计算维度数依次减少,逐层向下计算每层的cuboid。
二、Kylin集群部署
环境准备:
Hadoop: 2.7+, 3.1+ (since v2.5)
Hive: 0.13 - 1.2.1+
HBase: 1.1+, 2.0 (since v2.5)
Spark (可选) 2.3.0+
Kafka (可选) 1.0.0+ (since v2.5)
ZooKeeper 3.3.6 (可选)
JDK: 1.8+ (since v2.5)
1、解压安装
下载地址:https://archive.apache.org/dist/kylin/
2、修改环境变量 vim ~/.bashrc
添加:
export JAVA_HOME=/opt/module/jdk1.8
export HADOOP_HOME=/opt/module/hadoop-2.7/hadoop
export HADOOP_CONF_DIR=/opt/module/hadoop-2.7/hadoop/etc/hadoop
export YARN_CONF_DIR=/opt/module/hadoop-2.7/hadoop/etc/hadoop
export HBASE_HOME=/opt/module/hbase
export HBASE_CONF_DIR=/opt/module/hbase/conf
export HIVE_HOME=/opt/module/hive
export HIVE_CONF_DIR=/opt/module/hive/conf
export KYLIN_HOME=/opt/module/kylin
export HCAT_HOME=/opt/module/hive/hcatalog
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_CONF_DIR:$HBASE_HOME/bin:$HBASE_CONF_DIR:$HIVE_HOME/