如何评价kudu存储引擎? 举报 理由 举报 取消 据说Cloudera秘密开发了3年,兼顾数据更新实时性和分析速度的存储引擎,目前和impala配合的比较不错。国内目前小米在用这个东西。http://getkudu.io 2017年5月20日 8 条回复 1554 次浏览 Kudu,分布式,技术,数据,数据存储
回复 ( 8 )
只说下我了解的部分,如有错误欢迎指出……
Kudu最初由Cloudera开发,但现在已经开始作为Apache的项目孵化。Kudu – ASF JIRA
定位是OLAP数据库,说白了就是可以随机读但主要是针对顺序读做优化。所以在小米也是计算组搞而非存储组。数据的模型个人觉得很像Cassandra的伪SQL——结构化的数据、SQL类似的语法但本质上还是NoSQL,可以设定是Hash还是range或者两者结合来做partition分配到若干个tablet,每个tablet用raft协议写在多个节点上。之前扫了眼论文似乎是没写如何做tablet的split/merge,也许现在还不支持也许我看漏了。
从数据库的角度讲,比较重要的两个点是C++和raft。
C++的性能比较有保障,还没有gc的停顿导致的.99响应时间不可控等问题,raft的心跳也因为没有gc可以设的敏感一些,可用性更好,而这些都是HBase的痛点。当然这是题外话,毕竟Kudu不是用来代替HBase的。
用raft协议搞replication意味着不需要比较蛋疼的HDFS了,表面上似乎还在说Kudu属于“Hadoop生态系统”,但我觉得他们的心思肯定不止于此。而且Raft的一致性也比较自由,追求性能可以最终一致性地读。
此外可以看下Apache Kudu as a More Flexible And Reliable Kafka-style Queue ,这篇文章说,因为他顺序读吞吐比较好,并且raft协议自身提供了递增id,所以可以用来代替kafka搞消息队列,简单测试性能差不多( “in the same realm”),还没GC。而且因为是数据库,可以随机写,相当于可以修改队列,灵活很多。
读过 paper 和代码,在生产环境中使用过,来答一波。
先说性能。对比 Hive,性能高了一个数量级,原本需要数分钟的查询,用 Kudu 可能只需要数秒;做过 TPC-DS benchmark,结果还不错,不过有一部分 query 计算时间太长,没有完成;对于随机写入来说,性能相当赞,SDD 硬盘,写入 ops 能到 100W 左右,几乎不需要特别的 bulk load 支持了。
再说 feature。支持数据更新,这是 Hive 的一大痛点,使用 Hive 通常来说会用 Sqoop 定期导入数据,一来,定期导入数据意味着会有延迟,数小时到数天,对于实时查询来说这点就很难接受,二来,定期导入对线上数据库也会有一定压力。而 Kudu 直接支持数据更新,意味着可以实时同步线上数据,可以实时查询到线上数据,对于数据驱动的增长来说,这无疑是很好的消息。
Kudu 作为一个存储引擎,提供的 API 其实跟 HBase 很像,增删改以及 scan 的接口。在上层,可以用 Impala 查询,Kudu 能提供 locality 信息以及谓词下推;也可以使用其他的 SQL on Hadoop 进行查询,SparkSQL 之类的,能很好地融入 Hadoop 生态。
所以 Kudu 的特点正如它的 slogan 所说,Fast Analytics on Fast Data。如果你需要对实时数据做查询,如果需要快速地查询,那么 Kudu 无疑是一个好的选择。
至于实现,未完待续。
我司 tangliu 同学的一篇文章可以看看 Kudu:一个融合低延迟写入和高性能分析的存储系统
没有数据分析流式计算的经验,根据对kv存储系统的理解,简单答一发,轻拍。。
数据存储的选择上,HBASE和HADOOP在吞吐率、延迟上各有侧重,如果做数据分析,要从HBase导出到hadoop平台再用Hive查询,这就要求系统要混布HBASE和hadoop。
KADU的目标就是要兼顾前两个存储系统,实现对外数据的存储和后台计算的本地化,减少数据传输成本已经部署运维成本。
架构方面,还是延用BIGTABLE的基本架构,元数据和数据分开存储的,但做了一些比较有挑战的优化操作,提升查询和插入的性能
另外的亮点是,多副本间使用了raft保证数据的高可靠性。
性能方面,目前beta版本要略差与HBASE,这也是意料之中的事情。。。
Kudu产品的几个要点:
关于小米如何使用Kudu,这里有更详细的介绍:Apache Kudu 加速对频繁更新数据的分析 – 知乎专栏
首先是一个分布式的列式存储,大家都说到了主要是用于分析计算的存储系统。但是也是可以用于存的存储系统。kudu是一个现代的列式存储系统,需要最新的硬件支持,充分发挥现在高性能硬件和cpu指令集。在存储方面做了很多性能优化,数据一致性和容灾主要还是靠raft。
1:支持增、删、改
2:一套存储,即支持较快速查询(对标HBase),也支持较快速分析(对标impala)。而不必像之前,想查询,用HBase得一套存储,相分析,用impala得一套存储
一个项目负责人来公司做过seminar,是HBase那帮人搞的,出发点是把数据分析放进存储里,这样达到一个在某些query的优化。本来如果做数据分析,要从HBase导出到hadoop平台再用Hive查询,太慢了,而且是offline的。搞Kudu就是要弄成结构化数据,支持online直接修改数据,支持加index,Kudu目前支持Dremel语句,用C++写的。Performance是和Hive和另一个什么比较的,用的是一些大型的benchmark,结果表明在某些方面比较有优势,具体忘了。
对,他在slides最后还提到小米了,好像是和小米合作开发的。Kudu几个月前开源了,看文档和源代码应该更准确吧。