文档章节

【技术帖】使用KyBot寻找Apache Kylin离线构建瓶颈

ApacheKylin
 ApacheKylin
发布于 2017/07/18 16:39
字数 1962
阅读 217
收藏 0

Apache Kylin是当今最流行的OLAP on Hadoop 分析引擎之一,它可以在PB规模数据集上取得亚秒级查询能力,帮助大数据分析师简单通过SQL或BI工具就能在大数据上进行交互式分析。

Apache Kylin的核心思想是通过构建Cube对原始数据进行预计算,以减小查询访问的数据量,从而减小查询的时间复杂度。提高Cube的构建效率可以有效降低数据更新的延迟,以及对集群资源的占用。本文将介绍如何使用KyBot寻找Cube构建过程的瓶颈,以及优化的思路和方向。

关于Cube构建

通常的,一次完整的Cube构建过程可能需要几分钟到几十分钟不等,具体时间取决于Cube设计的复杂度、数据量、集群计算能力、系统配置等。经过调优,Cube构建时间往往会大幅缩短,同时又不影响业务场景的查询性能,从而提高整个系统的执行效率。

构建Cube的任务包括一系列步骤,如生成Hive临时表、构建字典、生成Cube数据等,每一个步骤都是一个本地任务、Hive任务、MapReduce或Spark任务等,不同的任务依靠任务引擎进行调度。图1所示就是Apache Kylin中一个构建任务的截图。

图1 Cube构建任务

从图1中可以看出,每个步骤依次执行并具有一定的依赖关系,任何一步成为瓶颈都可能导致整个任务效率降低。如果想了解构建过程每一步的详情,可以参见引用文章[1]。

Apache Kylin官网和社区不乏一些构建调优的文章,但都需要管理员对Hadoop、Kylin有较为深入的理解,想要精准地定位瓶颈还需要访问Hive、MapReduce 等多个管理页面入手,这些无形中加大了调优工作的难度。

寻找构建瓶颈

KyBot (https://kybot.io) 是为Apache Kylin及其商业版KAP提供在线诊断、优化及服务的平台。通过分析Apache Kylin的日志等信息,为用户提供可视化仪表盘、系统优化、故障排查、知识库等自助式服务。

登录进入KyBot后,通过左侧菜单进入“任务”仪表盘,即可看到所有构建任务的指标统计,如图2所示。

图2 任务仪表盘

在仪表盘中,右侧的折线图可以直观地观察到某个Cube(或整体)的构建性能变化趋势,图中的Cube构建性能基本稳定,整体性能较好。下方列表展示了所有任务的基本信息,通过过滤和排序就可快速找到需要调优的任务(如最慢、MR Waiting最久等),并单击右侧“Tuning”按钮进入任务详情页面。

图3 任务详情页1

如图3所示,任务详情页主要包含了一个时间图,用于展现一个构建任务的生命周期。时间图中每一个泳道代表Cube构建中的一个步骤,并和右侧列表一一对应。通过观察时间在各个步骤的分布,就可以快速定位耗时较长的那些步骤,而这些步骤往往可能就是瓶颈所在。按照经验,往往可以从Cube设计、MapReduce等方面入手寻找瓶颈。

优化Cube设计

一个设计不良的Cube经常导致Cuboid数量过多,造成构建步骤激增,给集群的计算和存储资源带来压力,最终导致构建时间过长、膨胀率较大。而很多Cuboid常常是冗余或与实际需求不符的,通过调整Cube设计对这些无用Cuboid进行剪枝,会对构建效率带来较大的提升,同时又不影响对业务场景的契合度。关于Cube设计优化的原理可以参见引用文章[2]。

以图3为例,最慢的步骤是Extract Fact Table Distinct Columns、Build Cube In-Mem和Convert Cuboid Data to HFile,这些步骤都是在准备、生成和转换Cube数据,导致时间过长的原因可能是Cuboid数过多,如果需要进一步优化,可以跳转到Cube详情页对Cube设计进行优化,以减少Cuboid的数量。关于Cube调优的介绍可以关注引用文章[3],在此不再赘述。

Map Reduce优化

除了优化Cube设计,瓶颈还有可能出自Map Reduce的任务执行上。如图4所示,这个构建任务中耗时最长的是Build Cube In-Mem一步,这是一个Map Reduce任务,可以进入该步骤的Map Reduce详情页作进一步分析。

 

图4 任务详情页2

进入Map Reduce任务详情页,如图5所示,同样也是一个时间图,每个泳道展示了Map Task和Reduce Task的生命周期,其中绿色代表Map,蓝色代表Reduce。从图中可以清晰看出Task的执行时间分布。图中Map和Reduce的泳道长度参差不齐,说明执行时间很不均匀,原因可能是数据分布不均导致的,右侧列表的Diagnostics部分通过分析对这一猜想进行了证实:Map和Reduce的数据分布的确不够均匀(最大值和中位数相差较大),可以通过调整输入数据分布的均匀度进行优化。

图5 Map Reduce任务详情页1

如图6展示的泳道中,任务开始执行前有几十秒的空白期,远超过任务执行的时间长度,说明任务调度占用了相当大的时间,可以通过调整Yarn资源调度进行优化。

图6 Map Reduce任务详情页2

如图7所示,这个任务包含了30个Reduce Task,但同一时刻最多只有2个Reduce Task并发执行,导致更多的Reduce排队,从而拉长了整个任务的时间。此时,任务并行度成为了瓶颈,可以通过调整Reduce参数或Yarn资源分配进行优化。

图7 Map Reduce任务详情页3

总结

本文着重介绍了如何使用KyBot快速定位Apache Kylin的构建瓶颈。加速Cube构建能够提高整个数据处理的效率,同时节省计算和存储资源,节省集群开销。为了更加高效地完成调优,使用KyBot是一个最简单的方法,未来的KyBot也会更加自动化和智能化,建议遇到相关问题的朋友们都来试一试。

引用文章

[1] Optimize Cube Build
http://kylin.apache.org/docs20/howto/howto_optimize_build.html
[2] Apache Kylin 深入Cube和查询优化
http://kyligence.io/zh/%E3%80%90%E6%8A%80%E6%9C%AF%E5%B8%96%E3%80%91apache-kylin-%E6%B7%B1%E5%85%A5cube%E5%92%8C%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96/
[3] 论一个好Cube的养成
http://kyligence.io/zh/%E3%80%90%E5%85%A5%E9%97%A8%E3%80%91%E8%AE%BA%E4%B8%80%E4%B8%AA%E5%A5%BDcube%E7%9A%84%E5%85%BB%E6%88%90/

---------------------------------------------------------------------------------------------

2019 年 9 月 7 日 Apache Kylin × Apache RocketMQ Meetup 深圳站正在火热报名!邀请到腾讯、阿里 、平安云以及 Kyligence的技术专家为大家呈现精彩应用案例与实践:https://www.huodongxing.com/event/3506680147611

© 著作权归作者所有

ApacheKylin
粉丝 12
博文 51
码字总数 100362
作品 0
东城
私信 提问
Kyligence正式发布KyBot - Apache Kylin在线诊断、优化及服务平台

今天, 大数据已经是每一个公司的战略,越来越多的企业正将相关的数据应用、服务等迁移到大数据平台上。作为中国唯一的Apache 软件基金会顶级开源项目,Apache Kylin在开源后的短短两年内,赢...

ApacheKylin
2016/11/17
482
0
【开源访谈】李栋:2.0 划时代版本后的 Apache Kylin ,前路何方?

Apache Kylin 2.0 正式版发布已有半年,社区反响如何,哪些特性最受欢迎,下一步将往哪个方向发展?本期,【开源访谈】邀请到了 Kyligence 技术合伙人兼高级软件架构师李栋,解疑 2.0 划时代...

王练
2017/11/20
3.3K
2
Kyligence发布最新旗舰产品KAP 2.1,为Apache Kylin企业用户提供更快更强的大数据分析能力

据悉,领先的智能大数据分析技术及解决方案供应商上海跬智信息技术有限公司(Kyligence)今日宣布正式发布企业级产品KyligenceAnalytics Platform (KAP) 2.1版本。KAP2.1在既有基础上进行了一...

ApacheKylin
2016/11/14
337
1
一文读懂Apache Kylin

“麒麟出没,必有祥瑞。”                               —— 中国古谚语 Kylin思维导图 前言 随着移动互联网、物联网等技术的发展,近些年人类所积累的数据...

陈小龙哈
2018/08/04
0
0
【开源访谈】Kyligence 技术合伙人李栋:商业产品与开源之我见

Apache Kylin 是一个开源的大数据 OLAP 分析引擎,是国内首个由中国团队贡献到 Apache 基金会的顶级开源项目。现在的Apache Kylin羽翼更丰,正逐渐从一个传统OLAP转变为一个实时数据仓库,目...

达尔文
2017/03/12
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

如何编写高质量的 JS 函数(1) -- 敲山震虎篇

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ 作者:杨昆 一千个读者,有一千个哈姆雷特。 此系列文章将会从函数的执行机制、鲁棒性、函...

vivo互联网技术
38分钟前
5
0
学会这5个Excel技巧,让你拒绝加班

在网上,随处都可以看到Excel技巧,估计已看腻了吧?但下面5个Excel技巧会让你相见恨晚。关键的是它们个个还很实用 图一 技巧1:快速删除边框 有时当我们处理数据需要去掉边框,按Ctrl+Shif...

干货趣分享
今天
11
0
JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
9
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
15
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
3.3K
25

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部