问题导读:
1.什么是Kylin? 2.怎样搭建Kylin环境? 3.Kylin工作原理是什么?
Kylin是一个开源的分布式的OLAP分析引擎,基于Hadoop提供SQL接口和OLAP接口,支持TB到PB级别的数据量。Kylin环境搭建前,需要安装JDK,MySQL,Tomcat,Hadoop,HBase,Hive,ZooKeeper等软件。由于我们使用Ambari对集群进行管理,所以这些工作已经做好,只简单介绍Kylin环境搭建。
一. Kylin环境搭建
下载apache-kylin-1.5.1-bin.tar.gz并且解压,配置Tomcat和Kylin的环境变量。然后主要是配置kylin.properties,比如kylin.rest.servers等。最后kylin.sh start启动Kylin,kylin.sh stop关闭Kylin。登陆http://hostname:7070/kylin访问Kylin应用程序,用户名和密码分别为ADMIN,KYLIN。
说明:需要说明的是apache-kylin-1.5.1-bin.tar.gz中已经包含Tomcat。
Kylin的一些特性,如下所示:
- 超级快的 OLAP 引擎,具备可伸缩性
- 为 Hadoop 提供 ANSI-SQL 接口
- 交互式查询能力
- MOLAP Cube
- 可与其它BI工具无缝集成,比如Tableau,而Microstrategy和Excel将很快推出
- 作业管理和监控
- 压缩和编码的支持
- Cube 的增量更新
- Leverage HBase Coprocessor for query latency
- Approximate Query Capability for distinct Count (HyperLogLog)
- 易用的Web管理、构建、监控和查询Cube的接口
- Security capability to set ACL at Cube/Project Level
- 支持LDAP集成
二. Kylin Cube建立和Job监控
我们使用官方自带的例子sample.sh进行学习,如下所示:
1.运行${KYLIN_HOME}/bin/sample.sh,并重启Kylin。
解析:
在Hive默认数据库下面生成了三张表,分别为kylin_cal_dt,kylin_category_groupings,kylin_sales。
2.登陆http://hostname:7070/kylin,并选择工程"learn_kylin"。
3.点击Model页面中Actions选项中的Build。
说明:点击END DATE输入框选择增量构建这个cube的结束日期,并Submit提交请求。
4.点击Monitor页面
提交请求成功后,将会看到新建了job。点击job详情按钮查看显示于右侧的详细信息。如下所示:
说明:job详细信息为跟踪一个job提供了它的每一步记录。可以将光标停放在一个步骤状态图标上查看基本状态和信息。点击每个步骤显示的图标按钮查看详情:Parameters、Log、MRJob、EagleMonitoring。
5.点击Insight页面中的New Query选项
解析:
select part_dt, sum(price) as total_selled, count(distinct seller_id) as sellers from kylin_sales group by part_dt order by part_dt
三. Kylin Cube权限授予
点击+Grant按钮进行授权。一个cube有四种不同的权限,分别是CUBE QUERY,CUBE OPERATION,CUBE MANAGEMENT,CUBE ADMIN。授权对象也有两种:User和Role。Role是指一组拥有同样权限的用户。
1. 授予用户权限
解析:
选择User类型,输入你想要授权的用户的用户名并选择相应的权限。选择User类型,输入你想要授权的用户的用户名并选择相应的权限。然后点击Grant按钮提交请求。在这一操作成功后,便会在表中看到一个新的表项。可以选择不同的访问权限来修改用户权限。点击Revoke按钮可以删除一个拥有权限的用户。
2. 授予角色权限
选择Role类型,通过点击下拉按钮选择你想要授权的一组用户并选择一个权限。然后点击Grant按钮提交请求。在这一操作成功后,便会在表中看到一个新的表项。可以选择不同的访问权限来修改组权限。点击Revoke按钮可以删除一个拥有权限的组。
四. Kylin工作原理
Kylin OLAP引擎基础框架,包括元数据(Metadata)引擎,查询引擎,Job引擎及存储引擎等,同时包括REST服务器以响应客户端请求。Apache Kylin概览,如下所示:
- REST Server:提供一些RESTFul接口,例如创建Cube、构建Cube、刷新Cube、合并Cube等Cube的操作,Project、Table、Cube等元数据管理、用户访问权限、系统配置动态修改等。除此之外还可以通过该接口实现SQL的查询,这些接口一方面可以通过第三方程序的调用,另一方也被Kylin的Web界面使用。
- JDBC/ODBC接口:Kylin提供了JDBC的驱动,驱动的CLASSNAME为org.apache.kylin.jdbc.Driver,使用URL的前缀jdbc:kylin:,使用JDBC接口的查询走的流程和使用RESTFul接口查询走的内部流程是相同的。这类接口也使得Kylin很好的兼容Tebleau甚至Mondrian。
- Query引擎:Kylin使用一个开源的Calcite框架实现SQL的解析,相当于SQL引擎层。
- Routing:该模块负责将解析SQL生成的执行计划转换成Cube缓存的查询,Cube是通过预计算缓存在HBase中,这部分查询是可以在秒级甚至毫秒级完成,而还有一些操作使用过查询原始数据(存储在Hadoop上通过Hive上查询),这部分查询的延迟比较高。
- Metadata:Kylin中有大量的元数据信息,包括Cube的定义,星状模型的定义、Job的信息、Job的输出信息、维度的Directory信息等等,元数据和Cube都存储在HBase中,存储的格式是JSON字符串,除此之外,还可以选择将元数据存储在本地文件系统。
- Cube构建引擎:这个模块是所有模块的基础,它负责预计算创建Cube,创建的过程是通过Hive读取原始数据,然后通过一些MapReduce计算生成HTable然后加载到HBase中。
Kylin使用Hive和MR来构建Cube,Hive用作预链接,MR用作预聚合,HDFS用来储存构建Cube时的中间文件,HBase用来存储Cube,HBase的Coprocessor(协处理器)用来响应查询。
|