【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

使用 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:00634

评论

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

就这?多线程高并发分布式性能优化技术都不懂,你拿什么跳槽

Java 程序员 后端

已拿offer热乎乎的蚂蚁金服面经分享,建议收藏(Java岗、附答案)

Java 程序员 后端

干了这么多年的Java面试官,给大家分享我面试时最爱问的Java高频题

Java 程序员 后端

完美!字节3-1级别大佬把《数据结构与算法,linux翻墙教程视频

Java 程序员 后端

差点跳起来了!阿里首推22w字Java面试复盘宝典成功助我入职美团

Java 程序员 后端

已开源!阿里巴巴SpringCloud微服务原理与架构项目实战,请签收

Java 程序员 后端

年薪80W,Java高薪架构师成长背后血泪史,膜拜大佬

Java 程序员 后端

完美!字节3-1级别大佬把《数据结构与算法(1),mybatisorm原理

Java 程序员 后端

年末三面快手Java后端岗,没有刁难轻轻松松就拿下了意向书,分享面经

Java 程序员 后端

学生管理系统(SSM简易版)总结,斗鱼Java开发二面被刷

Java 程序员 后端

安利一款非常NICE的-API-敏捷开发工具,java注释快捷键视频

Java 程序员 后端

完全没想到,他竟然靠这个拿到了40万年薪的大厂AI岗offer!

Java 程序员 后端

少写点if-else吧,它的效率有多低你知道吗?,渣本二面阿里受挫

Java 程序员 后端

就这一次!详解操作系统底层原理的IO原理,提供高性能开发的多种实战案例

Java 程序员 后端

工商银行分布式服务 C10K 场景解决方案,java基础实战项目飞机大战

Java 程序员 后端

干货第一弹-教你如何利用阿里开源工具进行排查线上CPU居高问题

Java 程序员 后端

已拿offer热乎乎的蚂蚁金服面经分享,建议收藏(Java岗、附答案)(2)

Java 程序员 后端

并发编程专题三-JAVA线程的并发工具类,面试要掌握这几个关键点

Java 程序员 后端

学透这份java进阶笔记,才知道为什么能一起斩获几十家大厂offer一定是有原因的

Java 程序员 后端

Clickhouse技术分享

scalad

大数据 实时数仓 Clickhouse OLAP开源引擎

实现一个简单的HTTP,京东java面试问题大全及答案大全

Java 程序员 后端

小白必看!结合实际实例,理解事务,多线程面试题java

Java 程序员 后端

层层递进!MySQL性能优化步骤演进,一顿饭的时间我就会了

Java 程序员 后端

并发容器之BlockingQueue详解,深入linux内核架构中文pdf

Java 程序员 后端

完美!白嫖4份满分级“并发编程,java架构师技术栈

Java 程序员 后端

实现一个简单的“个人博客”项目,java基础大纲思维导图

Java 程序员 后端

对Stream-API的用法鼓吹够多了,但性能到底怎么样呢?,mybatis和spring集成原理

Java 程序员 后端

实习生想面阿里应该掌握掌握哪些知识点?给学弟学妹们支招

Java 程序员 后端

小白都能看懂的简单爬虫入门案例剖析(爬虫入门看它就够了!

Java 程序员 后端

已拿offer热乎乎的蚂蚁金服面经分享,建议收藏(Java岗、附答案)(1)

Java 程序员 后端

干货!使用Docker构建RabbitMQ高可用负载均衡集群,java面试题汇总及答案

Java 程序员 后端

使用Apache Kylin和Amazon EMR进行云上大数据OLAP分析_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章