数据仓库里面存储引擎是非常重要的,存储引擎的好坏,基本决定了整个数仓的基础。
介绍:
Hadoop生态系统发展到现在,存储层主要由HDFS和HBase两个系统把持着,一直没有太大突破。在追求高吞吐的批处理场景下,我们选用HDFS,在追求低延迟,有随机读写需求的场景下,我们选用HBase,那么是否存在一种系统,能结合两个系统优点,同时支持高吞吐率和低延迟呢?有人尝试修改HBase内核构造这样的系统,即保留HBase的数据模型,而将其底层存储部分改为纯列式存储(目前HBase只能算是列簇式存储引擎),但这种修改难度较大。Kudu的出现有望解决这一难题。
Kudu是Cloudera开源的列式存储引擎,具有以下几个特点:
- C++语言开发,Kudu 的 API 可以使用 Java 和 C++
- 高效处理类OLAP负载
- 与MapReduce,Spark以及Hadoop生态系统中其他组件进行友好集成
- 可与Cloudera Impala集成,替代目前Impala常用的HDFS+Parquet组合
- 灵活的一致性模型
- 顺序写和随机写并存的场景下,仍能达到良好的性能
- 高可用,使用Raft协议保证数据高可靠存储
- 结构化数据模型
Kudu的出现,有望解决目前Hadoop生态系统难以解决的一大类问题,比如:流式实时计算结果的更新。
时间序列相关应用,具体要求有:
- 查询海量历史数据
- 查询个体数据,并要求快速返回
- 预测模型中,周期性更新模型,并根据历史数据快速做出决策
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 activ