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

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数据库个人认为会是一个过渡产品。

©著作权归作者所有:来自51CTO博客作者mob604756ec296f的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 微软大数据领域优势分析
  2. 大数据三种典型云服务模式
  3. Kafka源码系列之副本同步机制及isr列表更新
  4. 欧洲云计算巨头OVH数据中心失火!为什么Web 3.0需要IPFS!
  5. Hive高级优化 | 面试及调优必读
  6. 成为大数据高手的活法-晚上复盘
  7. 带聚光灯的Excel数据查询,简单到没朋友
  8. 还在浪费资源“海推”产品?这个银行产品推荐系统你必须知道!(附教程
  9. TCP/IP之TCP报文简介

随机推荐

  1. Android滑动的实现
  2. 理解Android进程创建流程
  3. Android 使用ViewPager实现广告条滚动
  4. Android设置Edittext只能输入字母数字弹
  5. 将Android Activity设置成对话框样式
  6. Android巴士
  7. 如何解决App无法收到android开机广播
  8. 在Android中根据联系人查询电话号码
  9. windows下载android源代码
  10. Android中显示照片的Exif信息