1 Kylin 简介
1.1 Kylin 定义
Apache Kylin 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay Inc 开发并贡献至开源社区。
它能在亚秒内查询巨大的 Hive 表。
1.2 Kylin 架构
1)REST Server
REST Server 是一套面向应用程序开发的入口点,旨在实现针对 Kylin 平台的应用开发工作。 此类应用程序可以提供查询、获取结果、触发 cube 构建任务、获取元数据以及获取
用户权限等等。另外可以通过 Restful 接口实现 SQL 查询。
2)查询引擎(Query Engine)
当 cube 准备就绪后,查询引擎就能够获取并解析用户查询。它随后会与系统中的其它组件进行交互,从而向用户返回对应的结果。
3)路由器(Routing)
在最初设计时曾考虑过将 Kylin 不能执行的查询引导去 Hive 中继续执行,但在实践后发现 Hive 与 Kylin 的速度差异过大,导致用户无法对查询的速度有一致的期望,很可能大
多数查询几秒内就返回结果了,而有些查询则要等几分钟到几十分钟,因此体验非常糟糕。最后这个路由功能在发行版中默认关闭。
4)元数据管理工具(Metadata)
Kylin 是一款元数据驱动型应用程序。元数据管理工具是一大关键性组件,用于对保存在 Kylin 当中的所有元数据进行管理,其中包括最为重要的 cube 元数据。其它全部组件的
正常运作都需以元数据管理工具为基础。 Kylin 的元数据存储在 hbase 中。
5)任务引擎(Cube Build Engine)
这套引擎的设计目的在于处理所有离线任务,其中包括 shell 脚本、Java API 以及 MapReduce 任务等等。任务引擎对 Kylin 当中的全部任务加以管理与协调,从而确保每一项任务
都能得到切实执行并解决其间出现的故障。
1.3 Kylin 特点
Kylin 的主要特点包括支持 SQL 接口、支持超大规模数据集、亚秒级响应、可伸缩性、高吞吐率、BI 工具集成等。
1)标准 SQL 接口:Kylin 是以标准的 SQL 作为对外服务的接口。
2)支持超大数据集:Kylin 对于大数据的支撑能力可能是目前所有技术中最为领先的。早在 2015 年 eBay 的生产环境中就能支持百亿记录的秒级查询,之后在移动的应用场景中又有了千亿记录秒级查询的案例。
3)亚秒级响应:Kylin 拥有优异的查询相应速度,这点得益于预计算,很多复杂的计算,比如连接、聚合,在离线的预计算过程中就已经完成,这大大降低了查询时刻所需的计算量,提高了响应速度。
4)可伸缩性和高吞吐率:单节点 Kylin 可实现每秒 70 个查询,还可以搭建 Kylin 的集群。
5)BI 工具集成
Kylin 可以与现有的 BI 工具集成,具体包括如下内容。
ODBC:与 Tableau、Excel、PowerBI 等工具集成
JDBC:与 Saiku、BIRT 等 Java 工具集成
RestAPI:与 JavaScript、Web 网页集成
Kylin 开发团队还贡献了 Zepplin 的插件,也可以使用 Zepplin 来访问 Kylin 服务。
2 Kylin 搭建
2.1 Kylin 依赖环境
安装 Kylin 前需先部署好 Hadoop、Hive、Zookeeper、HBase,并且需要在/etc/profile 中配置以下环境变量 HADOOP_HOME,HIVE_HOME,HBASE_HOME,记得 source 使其生效。
2.2 Kylin 搭建
1)上传 Kylin 安装包 apache-kylin-3.0.1-bin.tar.gz
2)解压 apache-kylin-3.0.1-bin.tar.gz 到/opt/module
[atguigu@hadoop102 sorfware]$ tar -zxvf apache-kylin-3.0.1-bin.tar.gz -C /opt/module/
[atguigu@hadoop102 module]$ mv /opt/module/apache-kylin-3.0.1-bin /opt/module/kylin
2.3 Kylin 兼容性问题解决
1.kylin 启动时会从 hbase classpath 命令的输出中寻找 hbase-common-*.jar。但是自 hbase2.1
之 后 , hbase classpath 的 输 出 不 在 包 含 hbase-common-*.jar , 取 而 代 之 的 是
hbase-shaded-client*.jar,故需要做以下修改。
1)修改/opt/module/kylin/bin/find-hbase-dependency.sh
[atguigu@hadoop102 sorfware]$ vim /opt/module/kylin/bin/find-hbase-dependency.sh
修改内容如下:
2.Kylin 启动之后的 classpath 会包含 hbase lib 目录下的所有 jar 包,由于之前安装 phoenix 时,向 hbase 的 lib 目录中加入了 phoenix 的 jar 包,导致 kylin 与其发生冲突,故需要做以下修
改,将 phoenix 的 jar 包排除在 kylin 的 classpath 之外。
1)复制/opt/module/hbase/bin/hbase 脚本,命名为 hbase_kylin
cp /opt/module/hbase/bin/hbase /opt/module/hbase/bin/hbase_kylin
2)修改/opt/module/hbase/bin/hbase_kylin,内容如下
3)修改/opt/module/kylin/bin/kylin.sh
2.4 Kylin 启动
(1)启动 Kylin 之前,需先启动 Hadoop(hdfs,yarn,jobhistoryserver)、Zookeeper、Hbase
(2)启动 Kylin
[atguigu@hadoop102 kylin]$ bin/kylin.sh start
启动之后查看各个节点进程:
在 http://hadoop102:7070/kylin 查看 Web 页面
用户名为:ADMIN,密码为:KYLIN
5)关闭 Kylin
[atguigu@hadoop102 kylin]$ bin/kylin.sh stop