Apache Kudu 加速对频繁更新数据的分析

2018-09-27  本文已影响0人  小雪的笔记

转发地址:https://zhuanlan.zhihu.com/p/25928166

大数据技术峰会解读

大数据技术峰会解读

大数据前沿技术关注者

40 人赞了该文章

</header>

今天解读的内容是来自 Hadoop Summit San 2016 关于 Apache Kudu 的一个介绍:Apache Kudu & Apache Spark SQL for Fast Analystics on Fast Data(视频见文章末尾)。欢迎关注微信公众号:大数据技术峰会解读(bigdata_summit),获取更多的内容和大数据技术峰会视频。

[ 视频封面

Apache Kudu 加速对频繁更新数据的分析_腾讯视频

视频](http://link.zhihu.com/?target=https%3A//v.qq.com/x/page/h03728qz2xm.html)

Kudu Overview

<figure style="margin: 1em 0px;"> image

</figure>

上图是 Hadoop 生态体系中,存储引擎和应用场景的对应关系。

横轴代表数据查询分析的频度(Pace of Analysis),依次为:

纵轴代表的是数据的更新频度(Pace of Data),依次为

我们知道,HDFS 特别适合归档和基于静态数据的扫描/分析的场景(一次写入多次读取),也就是上图中左下角的黄色区域,而HBase擅长实时高并发的读写应用,也就是右上角的蓝色区域。但是对于需要在频繁更新的数据之上做快速分析,也就是上图中间的虚线区域,Hadoop社区却一直没有比较好的存储层产品来满足。Kudu正是出于填补这个空白而诞生的。

视频中提到,Kudu的设计借鉴了Parque和HBase一些理念 / 思想。

Kudu产品的几个要点:

Kudu 和 Spark 集成后,能带来的好处:

Spark Datasource

这部分比较简单,介绍Kudu与Spark集成的代码片段。基本上就创建一个kuduDataFrame后,后续的操作就和普通的Spark DataFrame API没什么差别了

Quick Demo

Demo也比较简单,有兴趣大家可以自己看一下视频(位置在视频的 18分26秒),就是在 Spark Shell 中操作一个 kuduDataFrame

Use Cases

Kudu 最适合的场景包含这两个特点:

这样的场景有:

片中还介绍了小米使用Kudu的一个具体场景,需求是要收集手机App和后台服务发送的 RPC 跟踪事件数据,然后构建一个服务监控和问题诊断的工具,要求:

在没有使用kudu之前,方案的架构如下图所示。

<figure style="margin: 1em 0px;"> image

</figure>

这是典型的Lambda架构(存在两套相对独立的数据流水线:批处理和流处理),一部分源系统数据是通过Scribe(日志聚合系统)把数据写到HDFS,另一部分源系统数据(实时性要求较高的?)是直接写入HBase,然后:

我们可以看到,这样的数据线比较长,带来两个问题:

还有一个问题,存储层中数据不是按照时间戳来排序,如果有部分数据没有及时到达,那么为了统计某一天的数据,可能就要读取好几天的数据才能得到。

使用了Kudu以后,方案的架构如下图所示。

<figure style="margin: 1em 0px;"> image

</figure>

数据都存储在Kudu中,分两条线进入Kudu:

然后,一方面可以通过 Impala 对外提供交互式查询服务(基于SQL),另一方面也可以直接通过 Kudu API 直接访问数据

这样的架构带来的好处比较明显,一方面是大大提高数据的时效性,另一方面大大简化系统架构

PPT中还有一张 Kudu + Impala 的方案与 MPP 数据库产品(如 Greenplum,Vertica 和 Teradata)进行对比,但是由于时间关系视频中没有讲,这里简单提一下:

他们有存在相似之处:

相对于 MPP 数据库,Kudu + Impala 方案的优势:

相对于 MPP 数据库,Kudu + Impala 方案的劣势:

Kudu Roadmap

相对 HDFS 和 HBase,Kudu还是一个比较新的项目,视频介绍了产品路线图的一些想法:

安全方面:

运维方面:

性能和扩展性:

客户端方面:

上一篇下一篇

猜你喜欢

热点阅读