2023年InfoQ 主办的最后一场会议——QCon 全球软件开发大会·上海站,正在热卖中! 了解详情
写点什么

使用 Apache Kylin 和 Amazon EMR 进行云上大数据 OLAP 分析

  • 2019-11-14
  • 本文字数:3530 字

    阅读完需:约 12 分钟

使用Apache Kylin和Amazon EMR进行云上大数据OLAP分析

作者:史少锋 Kyligence 资深架构师,Apache Kylin committer & PMC

公司简介


上海跬智信息技术有限公司 (Kyligence) 是由 Apache Kylin (首个来自中国的 Apache 软件基金会顶级开源项目) 核心团队组建,专注于大数据分析领域创新的数据科技公司。Apache Kylin 是近两年迅速崛起的开源分布式大数据分析引擎,它充分利用 Hadoop MapReduce,HBase,Spark 等成熟技术,对超大数据集进行预计算(构建 Cube),从而当在线查询请求到来时,通过检索 Cube 以亚秒级低延迟返回结果,实现真正的大数据上的交互式分析。对于用户来说,Kylin 屏蔽了底层平台的技术细节,用户只需要掌握多维模型、数据仓库、SQL 等知识,就可以通过 Kylin 的 Web 界面进行建模,Kylin 将自动生成任务对数据进行计算。计算完成后用户即可通过各类可视化工具连入 Kylin 进行分析,易用性非常高。今天,Apache Kylin 已经在众多企业得到广泛应用,如今日头条等。

解决方案

Kyligence 为各行各业的客户提供基于 AWS 公有云平台的 Hadoop 数据仓库解决方案。Elastic MapReduce (Amazon EMR) 是 AWS 推出的云上 Hadoop 方案,这一方案使得 Hadoop 的部署、监控、扩容变的非常灵活方便。Amazon EMR 将计算和存储分离,可以使用 S3 做数据存储,用户可随需启停 Hadoop 而不用担心数据丢失,用户只需为运行时使用的资源付费,从而大大减少运维成本。以最近发布的 Apache Kylin v2.0 和 Amazon EMR 5.5(海外版)为例,在 AWS 云上使用 Kylin 是非常简单快速的。

1. 启动 EMR 集群

如果您已经有在运行的,包含了 HBase 1.x 服务的 EMR 集群,那么这一步可以跳过,您可以使用现有集群进行此实验。


EMR 的启动非常简单,登录 AWS 控制台,选择 Amazon 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 到 Amazon EMR 的方法;点击“Master public DNS”旁边的 SSH 链接,即可获得,如下图所示:



SSH 登录到 master 节点后,创建一个 Kylin 安装目录,下载并解压 Apache Kylin 2.0 的二进制包:


sudo mkdir /usr/local/kylin


sudo chown hadoop /usr/local/kylin


cd /usr/local/kylin


wget http://www-us.apache.org/dist/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 官网寻找并使用更接近的下载镜像。


由于一个已知的问题KYLIN-2587,您需要手动在 Kylin 里设置一个参数:用编辑器打开/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>


(注意请使用在您环境中真实获得的 zookeeper 地址)

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

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



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



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


5. 构建 Sample Cube

登录 Kylin 后,选择“learn_kylin”的项目,就会看到“kylin_sales”的样例 Cube。此 Cube 模拟一个电商对其销售记录从多维度进行分析的场景,维度包括了时间(天,周,年)、区域、卖家、买家、商品分类等。



此时 Cube 只有定义,还没有加载数据,状态是“disabled”,需要触发一次 Build。点击“Actions”,“Build”,然后选择一个时间范围,Kylin 会以此条件从 Hive 加载数据进行一系列计算(样例数据已经导入到 Hive):



所有的 MapReduce, Spark, 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 随即执行并显示结果,如下图所示:



至此您已经完成了在 AWS 上运行 Hadoop + Kylin 的任务!从上图可以看出,Kylin 的执行只耗费了 0.61 秒,接下来您使用可视化工具如 Tableau, Excel, Saiku, Zeppelin, SmartBI 等通过 Kylin 的 ODBC/JDBC 驱动连接 Kylin server,体验交互式 OLAP 分析。


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

成功案例

Strikingly 基于 AWS 公有云和 Kylin 搭建了大数据解决方案。Strikingly (https://strikingly.com/)是一个简单、易用、美观的 Web 建站平台,产品中有一个面向用户的 Web Analytics Dashboard,它从各个维度以及不同时间尺度上展现了用户网站包括 Unique View, Geo Distribution 等数据,如下图所示。



用户数据查询的类型主要集中于对于各个维度数据的 group by 和 count distinct,都是比较耗时的查询操作。随着数据规模不断增长,以往的解决办法面临性能瓶颈。研究之后,Strikingly 采用了 Kylin + Amazon EMR 的方案:每隔 5 分钟将原始数据备份到指定的 S3 bucket 上。通过预先定义好的 Lambda 函数对原始数据进行处理,转换成 Kylin + Amazon EMR 可以处理的数据格式,然后交由 Kylin + Amazon EMR 计算。通过引入 Kylin,成功将数据查询的延迟从 5~10 秒降低到了 1 秒以内。当数据量增加的时候,可以通过 Amazon EMR 控制台动态添加 core machine 横向扩展服务,提高吞吐能力,这保证了可以对未来一段时间内可以预见的数据规模增加提供足够的技术支撑。

总结

借助于独有的分布式预计算技术,Apache Kylin 比其它各类 OLAP 引擎能提供更高的查询性能和并发能力,并且随着数据量增加,查询延迟依旧可以保持在亚秒级(参考 Kylin 的 SSB 测试:https://github.com/Kyligence/ssb-kylin)。近些年云计算技术日趋成熟,越来越多的企业正在将大数据分析迁移到云上,AWS无疑是很热门的选择,而在选择大数据OLAP方案时,低延迟、高并发、可扩展是重要的考虑因素,Kylin结合Amazon EMR 可以使云上的大数据分析变得简单而强大。


想要了解 Apache Kylin 的更多信息,您可以参考 Apache Kylin 官网(https://kylin.apache.org);如需要了解具体解决方案、商业版及专业服务,请联系 Kyligence。


作者介绍



史少锋,Kyligence 技术合伙人 &资深架构师。高级软件架构师,Apache Kylin 核心开发者和项目管理委员会成员(PMC),专注于大数据分析和云计算技术。曾任 eBay 全球分析基础架构部大数据高级工程师,IBM 云计算部门软件架构师;曾是 IBM 公有云 Bluemix dev&ops 团队核心成员,负责平台的规划、开发和运营。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/using-apache-kylin-and-amazon-emr-to-proceed-olap-analysis-on-cloudc/


2019-11-14 08:00587

评论

发布
暂无评论
发现更多内容

最佳实践:基于vite3的monorepo前端工程搭建 | 京东云技术团队

京东科技开发者

前端 vite Monorepo lodash vue3 vite 企业号 5 月 PK 榜

市场规模超百亿 低代码与传统IT开发有何不同

力软低代码开发平台

软件测试 | 软件危机的几个体现

测吧(北京)科技有限公司

测试

让初学者读懂代码的入门书

博文视点Broadview

软件测试/测试开发丨学习笔记之接口自动化测试

测试人

程序员 软件测试 自动化测试 接口测试 测试开发

华为仅用15小时,完成全球MeteERP替换

这我可不懂

华为 软件开发 低代码 ERP

架构实战营 模块1作业

吴俊

架构实战营

除了运行、休眠…进程居然还有僵尸、孤儿状态

华为云开发者联盟

Linux 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

Mac电脑上的系统监控工具:iStat Menus 中文激活版

真大的脸盆

Mac Mac 软件 系统监控

数字化转型,低代码开发真的靠谱?

引迈信息

低代码 数字化 JNPF

Musl libc 库成功适配到 openEuler Embedded,推动欧拉嵌入式生态发展

openEuler

Linux 操作系统 嵌入式 openEuler risc-v

了不起的互联网老男孩,在创业路上不掉队

HMS Core

HMS Core

全球化企业应如何统筹规划财务共享中心?

用友BIP

财务共享

财务共享服务中心建设流程是什么样的?

用友BIP

财务共享

【实践篇】手把手教你落地DDD | 京东云技术团队

京东科技开发者

DDD Archetype 企业号 5 月 PK 榜 三层架构

离线版Gerber查看器+PCB/PCBA检测神器新功能!

华秋PCB

工具 电路 元器件 PCB PCB设计

OpenAI如何让ChatGPT遵守了伦理道德的底线

陈磊@Criss

文件传输只是第一步,文件同步和备份的关键是

镭速

Flutter调优--深入探究MediaQuery引起界面Rebuild的原因及解决办法 | 京东云技术团队

京东科技开发者

flutter 企业号 5 月 PK 榜 MediaQuery rebuild

软件测试/测试开发丨学习笔记之用户端App自动化测试

测试人

程序员 软件测试 自动化测试 测试开发 app自动化测试

通义千问预体验,如何让 AI 模型应用“奔跑”在函数计算上?

Serverless Devs

携手共创开源新格局|2023开放原子全球开源峰会将于6月11日在京隆重开幕

开放原子开源基金会

大数据 开源 开放原子开源基金会 开放原子全球开源峰会 开放原子

亿级 GPS 数据如何实现高效存储和查询?不同类型数据库选型分析

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine taosdata

新手系列 I 如何使用 TDesign 轻松开发项目,秘诀都在这里

TDesign

#开源项目 项目搭建

GaussDB(DWS)迁移实践丨row_number输出结果不一致

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

“Fabarta 数据血缘治理解决方案”荣获“2023 鑫智奖”双料奖项

Fabarta

数据挖掘 数据分析 数据治理 图智能 血缘治理

惊!掌握通义千问的关键,从这些必知内容开始!

加入高科技仿生人

人工智能 低代码 ChatGPT 数字转型 通义千问

Python压缩JS文件,重点是 slimit

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

喜报!云智慧王海虎荣获中国信通院突出贡献专家奖

云智慧AIOps社区

大前端 低代码 数据可视化

深度解析如何通过财务共享建设助推企业数智化转型

用友BIP

财务共享

AIGC背后的技术分析 | 通过EBG学习概念cup

TiAmo

机器学习 AIGC 解释学习

  • 扫码添加小助手
    领取最新资料包
使用Apache Kylin和Amazon EMR进行云上大数据OLAP分析_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章