这里是一份从下载安装到体验亚秒级查询的完整流程,你可以按照文章里的步骤对kylin进行初步的了解和体验,掌握kylin的基本使用技能,然后结合自己的业务场景使用kylin来设计模型,加速查询。

基于hadoop环境安装使用kylin

对于已经有稳定hadoop环境的用户,可以下载kylin的二进制包将其部署安装在自己的hadoop集群。安装之前请根据以下要求进行环境检查:

  • 前置条件:
    Kylin 依赖于 Hadoop 集群处理大量的数据集。您需要准备一个配置好 HDFS,YARN,MapReduce,Hive,Zookeeper 和其他服务的 Hadoop 集群供 Kylin 运行。
    Kylin 可以在 Hadoop 集群的任意节点上启动。方便起见,您可以在 master 节点上运行 Kylin。但为了更好的稳定性,我们建议您将 Kylin 部署在一个干净的 Hadoop client 节点上,该节点上 Hive,HDFS 等命令行已安装好且 client 配置(如 core-site.xml,hive-site.xml及其他)也已经合理的配置且其可以自动和其它节点同步。
    运行 Kylin 的 Linux 账户要有访问 Hadoop 集群的权限,包括创建/写入 HDFS 文件夹,Hive 表的权限。

  • 硬件要求:
    运行 Kylin 的服务器建议最低配置为 4 core CPU,16 GB 内存和 100 GB 磁盘。

  • 操作系统要求:
    CentOS 6.5+ 或Ubuntu 16.0.4+

  • 软件要求:

    • Hadoop 2.7+,3.0
    • Hive 0.13+,1.2.1+
    • Spark 2.4.6
    • JDK: 1.8+

建议使用集成的Hadoop环境进行kylin的安装与测试,比如Hortonworks HDP 或Cloudera CDH ,kylin发布前在 Hortonworks HDP 2.4, Cloudera CDH 5.7 and 6.0, AWS EMR 5.31 and 6.0, Azure HDInsight 4.0 上测试通过。

当你的环境满足上述前置条件时 ,你可以开始安装使用kylin。

step1、下载kylin压缩包

Apache Kylin Download Site下载 kylin4.0 的二进制文件。
cd /usr/local/ wget http://apache.website-solution.net/kylin/apache-kylin-4.0.0/apache-kylin-4.0.0-bin.tar.gz

step2、解压kylin

解压下载得到的kylin压缩包,并配置环境变量KYLIN_HOME指向解压目录:

tar -zxvf  apache-kylin-4.0.0-bin.tar.gz
cd apache-kylin-4.0.0-bin-cdh57
export KYLIN_HOME=`pwd`

step3、下载SPARK

Kylin4.0 使用 Spark 作为查询和构建引擎,所以你需要设置SPARK_HOME指向自己的spark安装路径:

export SPARK_HOME=/path/to/spark

如果您没有已经下载好的Spark环境,也可以使用kylin自带脚本下载spark:

$KYLIN_HOME/bin/download-spark.sh

脚本会将解压好的spark放在$KYLIN_HOME目录下,如果系统中没有设置SPARK_HOME,启动kylin时会自动找到$KYLIN_HOME目录下的spark。

step4、配置 Mysql 元数据

Kylin 4.0 使用 Mysql 作为元数据存储,需要在kylin.properties做如下配置:

$xslt kylin.metadata.url=kylin_metadata@jdbc,driverClassName=com.mysql.jdbc.Driver,url=jdbc:mysql://localhost:3306/kylin_database,username=,password= kylin.env.zookeeper-connect-string=ip:2181

你需要修改其中的 Mysql 用户名和密码,以及存储元数据的database和table。请参考 配置 Mysql 为 Metastore 了解 Mysql 作为 Metastore 的详细配置。

step5、环境检查

Kylin 运行在 Hadoop 集群上,对各个组件的版本、访问权限及 CLASSPATH 等都有一定的要求,为了避免遇到各种环境问题,您可以执行

$KYLIN_HOME/bin/check-env.sh

来进行环境检测,如果您的环境存在任何的问题,脚本将打印出详细报错信息。如果没有报错信息,代表您的环境适合 Kylin 运行。

step6、启动kylin

运行如下命令来启动kylin:

$KYLIN_HOME/bin/kylin.sh start 

如果启动成功,命令行的末尾会输出如下内容:

A new Kylin instance is started by root. To stop it, run 'kylin.sh stop'
Check the log at /usr/local/apache-kylin-4.0.0-bin/logs/kylin.log
Web UI is at http://<hostname>:7070/kylin

step7、访问kylin

Kylin 启动后您可以通过浏览器 http://:port/kylin 进行访问。 其中 为具体的机器名、IP 地址或域名,port为kylin端口,默认为7070。 初始用户名和密码是 ADMIN/KYLIN。 服务器启动后,可以通过查看 $KYLIN_HOME/logs/kylin.log 获得运行时日志。

step8、创建Sample Cube

Kylin提供了一个创建样例Cube的脚本,以供用户快速体验Kylin。
在命令行运行:

$KYLIN_HOME/bin/sample.sh

完成后登陆kylin,点击System->Configuration->Reload Metadata来重载元数据
元数据重载完成后你可以在左上角的Project中看到一个名为learn_kylin的项目,它包含kylin_sales_cube和kylin_streaming_cube, 它们分别为batch cube和streaming cube,不过 kylin4.0 暂时还不支持 streaming cube,你可以直接对kylin_sales_cube进行构建,构建完成后就可以查询。

当然,你也可以根据下面的教程来尝试创建自己的Cube。

step9、创建project

登陆kylin后,点击左上角的+号来创建Project:

step10、加载Hive表

点击Model->Data Source->Load Table From Tree,
Kylin会读取到Hive数据源中的表并以树状方式显示出来,你可以选择自己要使用的表,然后点击sync进行将其加载到kylin。

此外,Kylin4.0 还支持 CSV 格式文件作为数据源,你也可以点击 Model->Data Source->Load CSV File as Table 来加载 CSV 数据源。

本例中仍然使用 Hive 数据源进行讲解与演示。

step11、创建模型

点击Model->New->New Model:

输入Model Name点击Next进行下一步,选择Fact Table和Lookup Table,添加Lookup Table时需要设置与事实表的JOIN条件。

然后点击Next到下一步添加Dimension:

点击Next下一步添加Measure:

点击Next下一步跳转到设置时间分区列和过滤条件页面,时间分区列用于增量构建时选择时间范围,如果不设置时间分区列则代表该model下的cube都是全量构建。过滤条件会在打平表时用于where条件。

最后点击Save保存模型。

step12、创建Cube

选择Model->New->New Cube

点击Next到下一步添加Dimension,Lookup Table的维度可以设置为Normal(普通维度)或者Derived(衍生维度)两种类型,默认设置为衍生维度,衍生维度代表该列可以从所属维度表的主键中衍生出来,所以实际上只有主键列会被Cube加入计算。

点击Next到下一步,点击+Measure来添加需要预计算的度量。Kylin会默认创建一个Count(1)的度量。Kylin 4.x支持SUM、MIN、MAX、COUNT、COUNT_DISTINCT、TOP_N、PERCENTILE度量。请为COUNT_DISTINCT和TOP_N选择合适的返回类型,这关系到Cube的大小。添加完成之后点击ok,该Measure将会显示在Measures列表中

添加完所有Measure后点击Next进行下一步,这一页是关于Cube数据刷新的设置。在这里可以设置自动合并的阈值(Auto Merge Thresholds)、数据保留的最短时间(Retention Threshold)以及第一个Segment的起点时间。

点击Next跳转到下一页高级设置。在这里可以设置聚合组、RowKeys、Mandatory Cuboids、Cube Engine等。

关于高级设置的详细信息,可以参考create_cube 页面中的步骤5,其中对聚合组等设置进行了详细介绍。

关于更多维度优化,可以阅读aggregation-group

对于高级设置不是很熟悉时可以先保持默认设置,点击Next跳转到Kylin Properties页面,你可以在这里重写cube级别的kylin配置项,定义覆盖的属性,配置项请参考配置项

配置完成后,点击Next按钮到下一页,这里可以预览你正在创建的Cube的基本信息,并且可以返回之前的步骤进行修改。如果没有需要修改的部分,就可以点击Save按钮完成Cube创建。之后,这个Cube将会出现在你的Cube列表中。

step12、构建Cube

上一个步骤创建好的Cube只有定义,而没有计算好的数据,它的状态是‘DISABLED’,是不可以查询的。要想让Cube有数据,还需要对它进行构建。

Cube的构建方式通常有两种:全量构建和增量构建。

点击要构建的Cube的Actions列下的Action展开,选择Build,如果Cube所属Model中没有设置时间分区列,则默认全量构建,点击Submit直接提交构建任务。

如果设置了时间分区列,则会出现如下页面,在这里你要选择构建数据的起止时间:

设置好起止时间后,点击Submit提交构建任务。然后你可以在Monitor页面观察构建任务的状态。Kylin会在页面上显示每一个步骤的运行状态、输出日志。可以在${KYLIN_HOME}/logs/kylin.log中查看更详细的日志信息。

任务构建完成后,Cube状态会变成READY,并且可以看到Segment的信息。

step13、查询Cube

Cube构建完成后,在Insight页面的Tables列表下面可以看到构建完成的Cube的table,并可以对其进行查询.查询语句击中Cube后会返回存储在HDFS中的预计算结果。

恭喜,进行到这里你已经具备了使用Kylin的基本技能,可以去发现和探索更多更强大的功能了。