开发者学堂课程【2020版大数据实战项目之DMP广告系统(第一阶段):kudu原理_ Kudu是什么】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/676/detail/11754
kudu原理_ Kudu是什么
kudu 原理
1.kudu 是什么
在做数据处理或者数据分析的时候,大致有多种任务,和数据相关的和数据库相关的和存储相关的有两类任务需要去做,第一类为数据分析,第二类为数据的插入和读取。数据分析一般情况下处理的是慢数据,而插入和读取一般指的是快数据。
2.数据分析
假设要统计全年的销售额,还要统计全表的扫描,要查看每一条的数据,不会对所有列进行处理。插入和读取(快数据,往 Hive 当中去插入一条数据):一般针对 Hive 的数据插入,以文件作为单位,以一个分区作为单位来进行插入,但是假如现在有业务系统,它将消息放到队列中后我们要进行逐条处理。处理完以后就是一个实时的系统,实时系统处理完以后逐条插入数据库,对于这种场景用 Hive 数据分析的方式明显不太靠谱,可以使用 HBase ,它强调的是要插一条数据性能不能太差,要使用到一些内存上的基数,你要让插入的性能变得更好。
在进行数据分析的时候,往常使用到的就是 HDFS
3.HDFS 上的数据分析
HDFS 是一种能够非常高效的进行数据分析的存储引擎
(1)HDFS 有很多支持压缩的列式存储的文件格式,性能很好,例如 Parquet 和 ORC
(2)HDFS 本身支持并行读取的一个文件系统,它是在分布式上把文件分布成小的分片去进行存储,所以一个计算单元去处理一个分片内容。
4.HBase 可以进行高效的数据插入和读取。
HBase 主要用于完成一些对实时性要求比较高的场景,HBase之所以可以进行高效的插入和读取,主要是因为HBase特殊的设计,HBase 在进行数据插入和读取的时候是有内存支持的,并且它本身有活跃机制。所以呢它的插入和读取是比较高效的,
(1)HBase 能够以极高的吞吐量来进行数据存储,无论是批量加载,还是大量 put 都可以
(2)HBase 能够对主键进行非常高效的扫描,因为其根据主键进行排序和维护
(3)但是对于主键以外的列进行扫描则性能会比较差,所以它不适合做数据分析,因为数据分析是要进行全表扫描的。HBase 如果不能在这方面性能提升的话,那在做数据分析的时候,速度就会比较慢,吞吐量也没有 HDFS 上的高。
5.Kudu 的设计目标
Kudu 最初的目标是成为一个新的存储引擎,可以进行快速的数据分析,又可以进行高效的数据随机插入。这样就能简化数据从源端到 Hadoop 中可以用于被分析的过程, Kudu 性能介于 HDFS 和 HBase 之间,Kudu 的批量性能没有HDFS 好,Kudu 的快速插入和读取性能没有 HBase 好,但是 Kudu 擅长这两件事情。既能高效数据分析,又能快速插入。所以有如下的一些设计目标。
(1)尽可能快速的扫描,达到 HDFS中Parquet 的二分之一速度。
(2)尽可能的支持随机读写,达到1ms 的响应时间。
(3)kudu是列式存储的存储引擎,并且Kudu的API和Hive其他数据库是有区别的,和HBse比较像。
(4)支持 NOSQL 样式的 API,例如 put(逐条插), get(逐条取), delete(逐条删除), scan(批量扫描)。
kudu 功能比较均衡,因此在各种地方它的应用场景比较多,因为可能在很多场景都用不到像 HBase 那么好的快速的数据处理,也用不到像 HDFS 那么好的扫描性能。那么 Kudu 就是适合的。