大数据仓库-kudu

数据仓库里面存储引擎是非常重要的,存储引擎的好坏,基本决定了整个数仓的基础。

kudu目标

cloudera公司最近发布了一个kudu存储引擎。按照cloudera的想法,kudu的出现是为了解决,hbase,parquet不能兼顾分析和更新的需求,所以需要一个新的存储引擎可以同时支持高吞吐的分析应用以及少量更新的应用。cloudera 的设计目标是:(http://blog.cloudera.com/blog/2015/09/kudu-new-apache-hadoop-storage-for-fast-analytics-on-fast-data/)

•Strong performance for both scan and random access to help customers simplify complex hybrid architectures

在扫描和随机访问两种场景下都有很强的性能,帮助客户简化混合架构。

•High CPU efficiency in order to maximize the return on investment that our customers are making in modern processors

高cpu利用率

•High IO efficiency in order to leverage modern persistent storage

高io效率充分利用现代存储

•The ability to update data in place, to avoid extraneous processing and data movement

支持数据原地更新

•The ability to support active-active replicated clusters that span multiple data centers in geographically distant locations

支持双活复制集群

kudu核心机制

Cloudera有一篇论文描述kudu的机制,Kudu: Storage for Fast Analytics on Fast Data 。可以从http://getkudu.io/kudu.pdf下载。这里简单说下kudu的关键机制。

  1. 模仿数据库,以二维表的形式组织数据,创建表的时候需要指定schema。所以只支持结构化数据。
  2. 每个表指定一个或多个主键。
  3. 支持insert/update/delete,这些修改操作全部要指定主键。
  4. read操作,只支持scan原语。
  5. 一致性模型,默认支持snapshot ,这个可以保证scan和单个客户端 read-you-writes一致性保证。更强的一致性保证,提供manually propagate timestamps between clients或者commit-wait。
  6. cluster类似hbase简单的M-S结构,master支持备份。
  7. 单个表支持水平分割,partitions叫tablets,单行一定在一个tablets里面,支持范围,以及list等更灵活的分区键。
  8. 使用Raft 协议,可以根据SLA指定备份块数量。
  9. 列式存储
  10. delta flushes,数据先更新到内存中,最后在合并到最终存储中,有专门到后台进程负责。
  11. Lazy Materialization ,对一些选择性谓词,可以帮助跳过很多不必要的数据。
  12. 支持和MR/SPARK/IMPALA等集成,支持Locality ,Columnar Projection ,Predicate pushdown 等。

总结

为应对BI领域少量更新和大量扫描分析场景,kudu 借鉴了很多传统数仓等技术。对这个领域目前是impala+kudu/Hive/Spark SQL/Greenplum MPP数据库在混战,未来这个会走向融合,传统的mpp数据库个人认为会是一个过渡产品。

原文发布于微信公众号 - 大数据和云计算技术(jiezhu2007)

原文发表时间:2015-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

第5篇:数据库系统的实现

前言 前面的文章中,主要都是在围绕关系数据库理论进行研究,没有涉及到数据库系统的具体实现。 虽说数据库系统的具体实现因业务环境,RDBMS等因素而异,但总体开发...

2827
来自专栏架构之美

五分钟学会分布式事务

1182
来自专栏杨建荣的学习笔记

落地SQL审核的迭代思路

在近一年的工作里面,发现很多事情不是一蹴而就,一个核心思想就是迭代,简而言之,迭代的目标有两个主要的结果,一个是从0到1,另外一个是从1到99。对于很多运维系统...

700
来自专栏windealli

系统性能的影响因素和优化方向小结

系统性能是系统设计、实施中的重要目标。这里简单小结下影响系统性能的几个常见因素,以及优化方案。

2407
来自专栏HappenLee的技术杂谈

大数据小视角1:从行存储到RCFile

数据的布局结构深刻的影响着数据处理的效率与性能,在底层的存储系统之中如何组织数据。如何对数据进行布局会直接影响数据查询引擎的设计与实现,并且也影响着存储空间的利...

872
来自专栏PPV课数据科学社区

【学习】开源大数据查询分析引擎现状

文|叶蓬 【按:此文是与我的《基于大数据分析的安全管理平台技术研究及应用》同期发表在内刊上的我的同事们的作品,转载于此。这些基础性的研究和测试对比分析,对于我们...

3297
来自专栏张善友的专栏

复合事件处理(Complex Event Processing)介绍

近年来,面向服务架构 SOA一直是热门的议题。面向服务架构SOA 使用了比组件、程序(procedure)层次更高的服务做为处理单元,通过开放格式交换标准例如X...

2127
来自专栏Golang语言社区

为什么go语言适合开发网游服务器端

前段时间在golang-China读到这个贴:有木人用(或打算)golang做游戏服务器端? 个人觉得golang十分适合进行网游服务器端开发,写下这篇文章总...

3495
来自专栏CSDN技术头条

对比Pig、Hive和SQL,浅看大数据工具之间的差异

【编者按】在笔者看来,语言和工具之争从来都没有太大的意义,所谓存在既有道理,如何在场景下做出最合适的选择才至关重要。本文,DeZyre公司专家Manisha N...

2768
来自专栏算法channel

如何做才能真正提升计算速度?

遇上项目紧急情况,面对大量需要试算的数据时,如何快速提升计算效率,可能是最现实的问题。计算机操作系统提供了进程和线程模型,各种语言都有对这些模型的抽象,并且大多...

652

扫码关注云+社区