[转] Apache Kylin在百度地图的实践

news/2024/7/5 12:02:30

前言

百度地图开放平台业务部数据智能组主要负责百度地图内部相关业务的大数据计算分析,处理日常百亿级规模数据,为不同业务提供单条SQL毫秒级响应的OLAP多维分析查询服务。

对于Apache Kylin在实际生产环境中的应用,在国内,百度地图数据智能组是最早的一批实践者之一。Apache Kylin在2014年11月开源,当时,我们团队正需要搭建一套完整的大数据OLAP分析计算平台,用来提供百亿行级数据单条SQL毫秒到秒级的多维分析查询服务,在技术选型过程中,我们参考了Apache Drill、Presto、Impala、Spark SQL、Apache Kylin等。对于Apache Drill和Presto因生产环境案例较少,考虑到后期遇到问题难以交互讨论,且Apache Drill整体发展不够成熟。对于Impala和Spark SQL,主要基于内存计算,对机器资源要求较高,单条SQL能够满足秒级动态查询响应,但交互页面通常含有多条SQL查询请求,在超大规模数据规模下,动态计算亦难以满足要求。后来,我们关注到了基于MapReduce预计算生成Cube并提供低延迟查询的Apache Kylin解决方案,并于2015年2月左右在生产环境完成了Apache Kylin的首次完整部署。

Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区,并于2015年11月正式毕业成为Apache顶级项目。

  1. 大数据多维分析的挑战

我们在Apache Kylin集群上跑了多个Cube测试,结果表明它能够有效解决大数据计算分析的3大痛点问题。

痛点一:百亿级海量数据多维指标动态计算耗时问题,Apache Kylin通过预计算生成Cube结果数据集并存储到HBase的方式解决。

痛点二:复杂条件筛选问题,用户查询时,Apache Kylin利用router查找算法及优化的HBase Coprocessor解决;

痛点三:跨月、季度、年等大时间区间查询问题,对于预计算结果的存储,Apache Kylin利用Cube的Data Segment分区存储管理解决。

这3个痛点的解决,使我们能够在百亿级大数据规模下,且数据模型确定的具体多维分析产品中,达到单条SQL毫秒级响应。因此,我们对Apache Kylin产生了较高的兴趣,大数据计算查询分析的应用中,一个页面通常需要多条SQL查询,假设单条SQL查询需要2秒响应,页面共有5个SQL请求,总共就需要10秒左右,这是不可接受的。而此时,Apache Kylin对于一个页面多条SQL查询响应的优势就尤为突出。

在实践过程中,根据公司不同业务的需求,我们数据智能团队的大数据OLAP平台后台存储与查询引擎采用了由Apache Kylin、Impala及Spark SQL组成,在中小数据规模且分析维度指标较为随机的情况下,平台可提供Impala或Spark SQL服务;在超大规模百亿级行数据的具体产品案例上,因查询性能需求较高,同时具体产品对其需要分析的维度和指标较为明确,我们使用Apache Kylin解决方案。下文将主要介绍Apache Kylin在百度地图内部的实践使用。

  1. 大数据OLAP平台系统架构


http://www.niftyadmin.cn/n/4622987.html

相关文章

js抛物线动画——加入购物车动效

参考文章:http://www.zhangxinxu.com/wordpress/2013/12/javascript-js-元素-抛物线-运动-动画/ parapola.js 1 /*!2 * by zhangxinxu(.com) 2012-12-273 * you can visit http://www.zhangxinxu.com/wordpress/?p3855 to get more infomation4 * under MIT lic…

java web应用连接mysql会突然connection连接失败

tomcat6.0 mysql5.1 项目:java web项目 问题:原本项目运行了好几天了,一直没发现问题,突然今天报数据库连接异常,进入看日志发现 ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTran…

js 生成 yyyy-mm-dd 格式的逼格姿势

关于 js 生成 yyyy-mm-dd 格式,往往都会采取手动拼接,一般不愿意为了小功能而去动用 momentjs 之类的插件。 ps: 只分享简单方法,网上有 N 多 dateformat 代码,这里不做讨论。 low B 的 IE 假如要兼容 IE6,通常会这么写…

leetcode 1631. Path With Minimum Effort(最小消耗路径)

从(0, 0) 到 矩阵右下角 找出一条最短路径, 注意路径的cost不是数字的和,而是这条路径上每两个相邻点的差有个绝对值,路径的cost定义为这些差的绝对值中最大的。每个路径对应一个cost。 在所有路径中找出cost最小的。返回cost。 思路&#x…

LeeCode(No3 - Longest Substring Without Repeating Characters)

题目: Given a string, find the length of the longest substring without repeating characters. 示例:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with the len…

博客搬家了~

原来写在<a href"http://www.cnblogs.com/firstForEver/">博客园的博客</a>&#xff0c;搬家了~ 新博客地址&#xff1a;http://www.hansongda.club/ 前几天花了三头二百买了一年的服务器资源&#xff0c;正好前段时间研究研究Laravel框架&#xff0c;就…

Android——UI事件的处理机制(基于监听器)

1.普通内部类&#xff08;常用&#xff09; xml <Buttonandroid:hint"reset"android:layout_columnWeight"1"android:id"id/reset"/> java public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle…

VIM 的基本操作

一、vi 与 vim 1.、vim 是 vi 的升级版本&#xff0c;vi 不显示颜色&#xff0c;vim 会显示颜色&#xff0c;使用命令基本一致。 如下图一使用vi 打开的没有颜色&#xff0c;图二 vim 打开的蓝色部分。 2、vim 有三种模式&#xff1a; 一般模式&#xff0c;编辑模式&#xff0c…