KUDU 的缺点

前文:

            Kudu的诞生解决了大数据领域的数据更新和OLAP,但是其缺点也是明显,使用时最好考虑如下。

一、情况

服务器情况:5台8Core32内存的服务器

1.1 CPU使用率

KUDU 的缺点

1.2 磁盘读流量KUDU 的缺点

1.3 磁盘写

KUDU 的缺点

二、说明

2.1 操作

大量更新:

由于我们知道kudu更新的时候会有一个读过程,所以看到在更新时,读是远远大于写的。

但由于读的时候也伴随着CPU的负载的上升,瞬间打满。

2.1.1 第一个峰值说明

KUDU 的缺点

更新的数据量大概是近200万的临时表到4.5亿的用户信息表

2.1.2 第二三个峰值说明

KUDU 的缺点

数据源也是一张大表,但因为主键的性质导致更新时间字段不能用作主键,每次扫描当天变化的数据时,需要扫全表对应的列,即使是列式存储数据库,但瞬间负载很高。

2.1.3 剩余时间的较高CPU说明

kudu在更新后,会启动多个线程对小文件进行操作。

KUDU 的缺点

 

2.2 应用场景缺点

2.2.1读性能

kudu的适用场景非常苛刻,必须走主键,否则,scan非主键列带来的是高CPU。

2.2.2大量写

kudu是牺牲了写性能而提高读性能,主要体现在主键,所以在批量更新的时候会有大量的读。

kudu可能更适用于实时场景,不断地写,这样对服务器的负载会低很多。

2.2.3合并小文件

这个机制相对于Hive其实是优点,但合并小文件的负载同样不低,取决于你底层产生的小文件有多少,也是不读地读和写。

 

2.3 需求缺点

2.3.1 最近N天统计

更新每个用户最近N天的观看、购物等多种行为统计,所以每天要更新的行数非常多,数据库压力巨大。

2.3.2 匿名用户统计

匿名用户的潜在危险,匿名用户是基于cookie,也需要算最近N天的行为统计,但是匿名用户的有效性一般在15天,也就是说数据库后期用户大部分是匿名用户,统计的行数也会很多。

 

2.4 当初选择Kudu的理由

因为用户信息(上亿)关联多张表拼接成一张用户结果表的在Hive 会比较麻烦,所以通过利用Kudu的主键特性,去更新这个用户信息。但在更新的时候遇到了Kudu的性能问题。