Kyligence Copilot - AI 数智助理,以 AI 变革企业经营与管理! 立即了解更多

【技术帖】使用Apache Kylin和AWS EMR进行云上大数据OLAP分析

Kyligence
2017年 5月 10日

Apache Kylin是这几年迅速崛起的开源分布式大数据查询引擎,它依托Hadoop MapReduce,HBase,Spark,Kafka等技术的强大能力,能对超大数据集进行预计算(构建Cube),从而当在线查询请求到来时,以亚秒级低延迟返回结果。Apache Kylin已经在众多企业得到广泛应用,如百度[1],京东[2],美团[3],唯品会[4],网易[5],今日头条[6]等等。Kylin连续两年获得InfoWorld评选的最佳开源大数据工具奖[7][8],足以彰显其实力。特别要指出的是, Kylin技术不仅可以运用在企业的私有集群上,还可以在公有云如AWS, Azure, 阿里云上快速部署实施。本文将以最近推出的Kylin 2.0和AWS EMR 5.5(海外版)为例,手把手教你在云上快速使用Kylin。

1、启动EMR集群

EMR是AWS提供的云上可伸缩Hadoop方案,与AWS的各项云服务如S3有很好的集成。利用EMR,用户可以按需创建分布式Hadoop,递交MapReduce, Hive, Spark等应用或脚本对数据进行加工处理。处理完成后将数据保存在S3上,随后关闭集群以节省成本。

启动EMR非常简单,登录AWS控制台,选择EMR服务,点击“Create Cluster”,选择最新的5.5版本,类型为HBase:

这里您可以选择合适的硬件配置;默认是m3.xlarge 3个节点,其中1个节点为master,另外两个为core节点。选择合适的EC2 key pair,随后点击“Create cluster”,AWS便会开始自动安装和配置Hadoop/HBase集群。

大约20分钟后,集群状态显示为“Waiting Cluster ready”,就意味着集群准备就绪可以使用了。

2、安装Apache Kylin 2.0

Apache Kylin以Hadoop client的方式运行,使用标准协议/API与集群交互。您可以将它安装在集群的任意节点上,通常建议安装在一个单独的client节点上。在这里我们为了简单,就把Kylin安装在master节点上。

在AWS控制台上,您可以获取SSH到EMR的方法;点击“Master public DNS”旁边的SSH链接,即可获得,如下图所示:

SSH登录到master节点后,首先创建一个Kylin安装目录,用于下载和解压Apache Kylin 2.0的二进制包(注:具体下载地址请在https://kylin.apache.org/download/获取):

sudo mkdir /usr/local/kylin

sudo chown kylin /usr/local/kylin

cd /usr/local/kylin

wget https://dist.apache.org/repos/dist/dev/kylin/apache-kylin-2.0.0/apache-kylin-2.0.0-bin-hbase1x.tar.gz

tar –zxvf apache-kylin-2.0.0-bin-hbase1x.tar.gz

由于一个已知的问题KYLIN-2587,您需要手动设置一个参数:用编辑器打开/etc/hbase/conf/hbase-site.xml,在其中寻找到“hbase.zookeeper.quorum”这个参数,然后将它以及它的值,拷贝到Kylin目录下的conf/kylin_job_conf.xml文件中。如下所示:

<property>
<name>hbase.zookeeper.quorum</name>
<value>ip-nn-nn-nn-nn.ap-northeast-2.compute.internal</value>
</property>

3、创建sample cube并启动Kylin

Kylin自带了一个小的数据集以及定义好的cube,只需要运行bin/sample.sh就可以将数据导入到Hive和HBase中:

export KYLIN_HOME=/usr/local/kylin/apache-kylin-2.0.0-bin

$KYLIN_HOME/bin/sample.sh

随后,就可以启动Kylin了:

$KYLIN_HOME/bin/kylin.sh start

大约若干秒以后,Kylin服务就会完成启动,在7070端口等待用户请求。

4、修改安全组以允许访问Kylin

EMR默认创建了两个安全组,分别给EMR master和EMR core,要想从外网访问Kylin,需要设置相应规则;这里我们是将Kylin部署到了master节点,所以需要编辑master的安全组:

添加规则,允许7070端口从外面地址访问,为安全起见,建议只开放给最小的IP群,例如仅自己的地址:

接下来,在浏览器中输入https://<master-public-address>:7070/kylin,就会显示Kylin的登录页,使用默认账号ADMIN加密码KYLIN完成登录:

5、构建Sample Cube

登录Kylin后,选择“learn_kylin”的项目,就会看到“kylin_sales”的样例Cube。此Cube模拟一个电商对其销售记录从多维度进行分析的场景,维度包括了时间(天,周,年),区域、卖家、买家、商品分类等。此时Cube只有定义,还没有加载数据,状态是“disabled”,需要触发一次Build。点击“Actions”, “Build”,然后选择一个时间范围,Kylin会以此条件从Hive加载数据进行一系列计算(样例数据已经导入到Hive):

所有的MapReduce, HBase操作,Kylin会自动生成并依次执行。大约七八分钟后,任务进度到100%构建完成,接下来此Cube就可以使用了:

6、查询Cube

Cube构建完成后状态变更为“Ready”,可以使用SQL对其进行查询。虽然Kylin将原始数据构建成了多维Cube,但是对外的查询接口依旧是标准SQL,且表名、字段名依然是用原始的名称。这意味着用户一方面可以不用学习新的语言工具,另一方面以前在Hive中执行的查询语句,可以直接拿来在Kylin中执行。

在Kylin主页点击“Insight”,切换到查询视图。此时页面的左导航处显示可以通过Cube进行查询的表和列。这里您可以手写一条SQL,如下面的这条语句,按年计算交易总金额和记录数:

select YEAR_BEG_DT, sum(price), count(*) from kylin_sales inner join kylin_cal_dt on part_dt = cal_dt group by YEAR_BEG_DT;

点击“Submit”,Kylin随即执行并显示结果,如下图所示:

从上图可以看出,Kylin的执行只耗费了0.61秒,至此您已经完成了在AWS上运行Hadoop + Kylin的任务。

7、高级进阶

如果您想进一步深入使用Kylin和EMR,可以尝试完成这些任务:

  1. 使用s3作为HBase的存储,这样当EMR被关闭后,Cube以及Kylin的元数据不会丢失;随时您可以再次启动EMR以恢复服务;
  2. 创建使用s3为数据来源的Hive表,并使用Kylin对其进行建模和预计算,Kylin支持使用s3作为文件存储。
  3. 使用可视化工具如Tableau, Excel, Saiku, SmartBI等通过Kylin的ODBC/JDBC驱动连接Kylin server,实现真正交互式的OLAP分析。

使用完以后,记得关闭EMR集群以节省费用。

总结

借助于独有的分布式预计算技术,Kylin的查询性能比其它各类MPP的SQL引擎,例如Hive, Impala, Presto, SparkSQL等都要高出很多,并且随着数据量的增加,Kylin的查询延迟依旧可以保持在亚秒级[9]。近些年云计算发展势头迅猛,越来越多的企业正在将大数据分析迁移到云上,在选择OLAP方案时,低延迟、高并发、可扩展是重要的考虑因素,在这些方面Kylin具有独特优势,希望这篇文章能够帮助到大家。更多信息,请参考Apache Kylin官网[10],订阅社区邮件列表[11],如果需要企业版及专业服务,请联系Kyligence[12]。

百度[1],京东[2],美团[3],唯品会[4],今日头条[5]

[1] https://www.infoq.com/cn/articles/practis-of-apache-kylin-in-baidu-map

[2] https://www.csdn.net/article/2015-11-27/2826343

[3] https://www.infoq.com/cn/articles/kylin-apache-in-meituan-olap-scenarios-practice

[4] https://www.infoq.com/cn/articles/application-of-apache-kylin-in-vip-big-data

[5] https://www.bitstech.net/2016/01/04/kylin-olap/

[6] https://kylin.apache.org/community/poweredby.html

[7] https://www.infoworld.com/article/2982429/open-source-tools/bossie-awards-2015-the-best-open-source-big-data-tools.html

[8] https://www.infoworld.com/article/3120856/open-source-tools/bossie-awards-2016-the-best-open-source-big-data-tools.html

[9] https://github.com/Kyligence/ssb-kylin

[10] https://kylin.apache.org/

[11] https://kylin.apache.org/community/

[12] https://cn.kyligence.io/

添加企微

kyligence
关注我们

kyligence