如何评价kudu存储引擎?

理由
举报 取消

据说Cloudera秘密开发了3年,兼顾数据更新实时性和分析速度的存储引擎,目前和impala配合的比较不错。国内目前小米在用这个东西。http://getkudu.io

2017年5月20日 8 条回复 1554 次浏览

回复 ( 8 )

  1. 杨肉
    理由
    举报 取消

    只说下我了解的部分,如有错误欢迎指出……

    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。而且因为是数据库,可以随机写,相当于可以修改队列,灵活很多。

  2. hellocode
    理由
    举报 取消

    读过 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 无疑是一个好的选择。

    至于实现,未完待续。

  3. 申砾
    理由
    举报 取消

    我司 tangliu 同学的一篇文章可以看看 Kudu:一个融合低延迟写入和高性能分析的存储系统

  4. 张帅
    理由
    举报 取消

    没有数据分析流式计算的经验,根据对kv存储系统的理解,简单答一发,轻拍。。

    数据存储的选择上,HBASE和HADOOP在吞吐率、延迟上各有侧重,如果做数据分析,要从HBase导出到hadoop平台再用Hive查询,这就要求系统要混布HBASE和hadoop。

    KADU的目标就是要兼顾前两个存储系统,实现对外数据的存储和后台计算的本地化,减少数据传输成本已经部署运维成本。

    架构方面,还是延用BIGTABLE的基本架构,元数据和数据分开存储的,但做了一些比较有挑战的优化操作,提升查询和插入的性能

    另外的亮点是,多副本间使用了raft保证数据的高可靠性。

    性能方面,目前beta版本要略差与HBASE,这也是意料之中的事情。。。

  5. 大数据技术峰会解读
    理由
    举报 取消

    Kudu产品的几个要点:

    • 数据模型和关系数据库类似,为结构化的表;列的数量有限(和HBase/Cassandra相比较而言)
    • 内部数据组织方式为列式存储
    • 很好的横向扩展能力,目前测试的是275个节点(3PB),计划支持到上千个节点(几十PB)
    • 不错的性能,集群能达到百万级别的TPS,单节点吞吐为几个GB/s
    • 本身不提供SQL接口,只支持类似NoSQL的接口,如 Insert(), Update(), Delete() and Scan() 等
    • 通过与 Spark 和 Impala 等(Drill,Hive的支持还在进行中)的集成,对外提供基于 SQL 的查询分析服务

    关于小米如何使用Kudu,这里有更详细的介绍:Apache Kudu 加速对频繁更新数据的分析 – 知乎专栏

  6. 吴友强
    理由
    举报 取消

    首先是一个分布式的列式存储,大家都说到了主要是用于分析计算的存储系统。但是也是可以用于存的存储系统。kudu是一个现代的列式存储系统,需要最新的硬件支持,充分发挥现在高性能硬件和cpu指令集。在存储方面做了很多性能优化,数据一致性和容灾主要还是靠raft。

  7. chen davy
    理由
    举报 取消

    1:支持增、删、改

    2:一套存储,即支持较快速查询(对标HBase),也支持较快速分析(对标impala)。而不必像之前,想查询,用HBase得一套存储,相分析,用impala得一套存储

  8. 杨双阳
    理由
    举报 取消

    一个项目负责人来公司做过seminar,是HBase那帮人搞的,出发点是把数据分析放进存储里,这样达到一个在某些query的优化。本来如果做数据分析,要从HBase导出到hadoop平台再用Hive查询,太慢了,而且是offline的。搞Kudu就是要弄成结构化数据,支持online直接修改数据,支持加index,Kudu目前支持Dremel语句,用C++写的。Performance是和Hive和另一个什么比较的,用的是一些大型的benchmark,结果表明在某些方面比较有优势,具体忘了。

    对,他在slides最后还提到小米了,好像是和小米合作开发的。Kudu几个月前开源了,看文档和源代码应该更准确吧。

我来回答

Captcha 点击图片更换验证码