KuDu论文解读

Kudu是一款由Cloudera研发的分布式存储系统,融合了HDFS的高吞吐和HBase的实时性,同时支持SQL查询。Kudu通过行级别的插入、更新和删除操作,弥补了高速顺序吞吐与低延迟随机访问系统之间的差距。其特色包括行存储、列式扫描、主键支持、以及类似Parquet的批量扫描。Kudu的写入与读取操作高效,尤其适合实时数据处理,与Spark配合可能构成有竞争力的架构。然而,Kudu的写性能逊于HBase,主要原因是插入和更新需要查询主键。
摘要由CSDN通过智能技术生成

      kudu是cloudera在2012开始秘密研发的一款介于hdfs和hbase之间的高速分布式存储数据库。兼具了hbase的实时性、hdfs的高吞吐,以及传统数据库的sql支持。作为一款实时、离线之间的存储系统。定位和spark在计算系统中的地位非常相似。如果把mr+hdfs作为离线计算标配,storm+hbase作为实时计算标配。spark+kudu有可能成为未来最有竞争力的一种架构。

      也就是kafka->spark->kudu这种架构,未来此架构是否会风靡,暂且不表。来分析下kudu的一些特性:

传统的实时/离线计算架构几乎都是分离的,用户需要把实时的数据从一个实时队列系统导入到在线存储,再导出到离线存储系统。有时候离线和实时的数据又存再join或并用的可能性。在计算领域spark已经几乎做到的离线+准实时(秒)的架构一体化覆盖。但是毕竟spark只是计算系统,还缺乏一套存储系统与之相配合。hbase查询不友好,alluxis数据结构和程度差。kudu目前看来是最优的候选系统,再加上有cloudera背书,应该不错。

      传统系统几大痛点:

      1、应用系统需要在实时、离线系统之间把数据倒来倒去,写很复杂的code

      2、系统庞杂,各种备份,安全策略,监控系统

      3、系统从实时系统中流出到离线系统才好做OLAP分析,这层转换存在延迟

      4、现实上来说,系统总是会存在落后的数据、对过去数据的修改,删除。然而当过去的数据已经被归档,这些操作需要昂贵的重写以及partiion交换或者各种人工干预


Kudu弥补了高速顺序吞吐系统和低延迟随机访问系统之间的gap。它同时提供行级别的插入,更新,删除。也提供类似Parquet的批量scan,列读取等。


2.1 表结构和schema

      和nosql不同,kudu中的字段带type,例如Int32或者String。几个列组合起来形成主键(和hbase类比rowkey需要自己来维护),就是mysql中唯一索引概念同时又是主键。作为update或者deleted的index(但并不是说只能通过这个组合键更新或删除)

      看起来和关系数据库比较像吧,但kudu又可以随时更新表字段添加或删除(主键列们除外)

      nosql中提倡“所有数据都是bytes”,kudu不这样做:

      1、明确的类型让我们可以更好的做packing,例如integer

      2、更好的和sql类型的工具系统、bi系统、数据导出系统集成

      不过kudu不提供除了主键之外的二级索引或者唯一键索引,当前kudu需要用户指定固定的主键列,未来可能会生成代替的key


2.2 写操作

      insert、update、delete的aip必须指定主键,当然谓词操作在高级操作API中是支持的。kudu提供java和c++的api,python在实验中


2.3读操作

      只提供Scan接口,条件提供<,>,=几种过滤符


一致性模型:

      这块主要是如何协调多个client端读写时的先后顺序以及加锁操作等。kudu学习了spanner的commit-wait的模式。start,之后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值