qidao123.com技术社区-IT企服评测·应用市场

标题: 大数据-144 Apache Kudu 根本概述 数据模子 利用场景 [打印本页]

作者: 金歌    时间: 2024-9-29 21:11
标题: 大数据-144 Apache Kudu 根本概述 数据模子 利用场景
点一下关注吧!!!非常感谢!!连续更新!!!

目前已经更新到了:


章节内容

上节我们完成了如下的内容:


官方网站

  1. https://kudu.apache.org/
复制代码
根本介绍

Apache Kudu 是由Cloudera开源的存储引擎,可以同时提供低耽误的随机读写和高效的分析本事。
Kudu支持水平扩展,利用Raft协议进行同等性的保证,而且Cloudera和ApacheSpark等盛行的大数据查询框架和分析工具紧密结合。
现在提起大数据存储,我们能想到的HDFS、ApacheParquet(在HDFS上做列式存储)、Apache ORC,另有KV情势存储半结构化数据的Apache HBase 和 Apache Cassandra 等等。
它是一个为大数据分析设计的分布式列式存储引擎,特别实用于必要同时支持快速随机读写操作和高效批量分析的工作负载。Kudu 主要定位于必要低耽误查询和频仍数据更新的场景,并与大数据生态系统中的其他组件(如 Apache Hadoop 和 Apache Spark)无缝集成。
背景和设计目标

传统的大数据存储办理方案(如 HDFS 和 HBase)通常在读写性能、查询耽误和数据模子等方面有所弃取。Kudu 则试图平衡这些需求,结合了 HDFS 的高吞吐量和 HBase 的快速随机读写本事,支持如下需求:

架构和数据模子

Kudu 是一个分布式系统,采用主从架构:

数据模子

Kudu 的数据模子类似于传统的关系数据库,支持表、行、列的结构:

Kudu 表支持分区和副本,分区计谋可以基于范围(Range)或哈希(Hash)进行配置,而副本机制确保了数据的高可用性和容错本事。
列式存储和压缩

Kudu 采用列式存储格式,这意味着表中的数据按列存储,而非按行。这种设计在大规模数据分析中极具优势,因为它可以减少磁盘 I/O 并进步查询性能。例如,在分析数据时,假如只查询特定列,Kudu 只必要读取这些列的数据,而不必读取整行。
Kudu 支持多种压缩算法,如 LZ4、Snappy 和 Zlib,用户可以根据必要选择合适的压缩方式来优化存储空间和性能。
与 Hadoop 和 Spark 集成

Kudu 与大数据生态系统中的其他组件有很好的集本钱事:

此外,Kudu 还可以与 Apache Impala 集成,提供类似 SQL 的低耽误查询接口,使得用户能够对存储在 Kudu 中的数据执行高性能的 SQL 查询。
利用场景

由于 Kudu 同时支持快速随机读写和高效批量分析,适合以下几类应用场景:

长处


缺点


基于HDFS


在Kudu之前,大数据主要是以两种方式存储:

目前痛点

以是现在的企业中,经过会存储两套数据分别用于及时读写和数据分析。
先将数据写入HBase中,再定期ETL到Parquet进行数据同步。

但是这样做有很多缺点:

Kudu优势

我们知道,基于HDFS,比如Parquet,具有高吞吐量一连读取数据的本事,而HBase和Cassandra等技术实用于低耽误的随机读写场景,那么有没有一种技术,结合二者。
Kudu提供了一种 Happy Medium 的选择:

Kudu不但提供了行级的插入,更新,删除,同时也提供了靠近Parquet性能的批量扫描操作。利用同一份存储,既能随机读写,也可以满足数据分析的需求。
数据模子

Kudu的数据模子与传统的关系型数据库类似,一个Kudu集群由多个表构成,每个表由多个字段构成,一个表必须指定多少个字段构成主键:

从用户角度看,Kudu是一种存储结构化数据的存储系统。在一个Kudu集群中可以定义任意数目的table,每个table都必要预先定义好Schema。
每个Table的列数是确定的,每一列都必要著名字和类型,每个表中可以把此中一列大概多列定义为主键。
这么看来,Kudu更像关系型数据库,而不是HBase、Cassandra、MongoDB这些NoSQL数据库,不过Kudu目前还不能像关系型数据库一样支持二级索引。
Kudu利用确定的列类型,字段是强类型的,而不是NoSQL那种 Everything is Byte。可以带来好处如下:

用户可以利用INSERT、UPDATE、DELETE等对表进行操作。岂论利用那种API,都必须指定主键,但批量的删除和更新操作依赖更高层次的组件(比如Impala、Spark)。
Kudu目前不支持多行事件。在读操作方面,Kudu只提供了Scan操作来获取数据,用户可以通过指定过滤条件来获取自己想要读取的数据,但目前只提供了两种类型的过滤条件:主键范围和列值与常数比较。
由于Kudu在硬盘中的数据采用列式存储,以是只必要扫描的列将极大的进步读取性能。
同等性模子

Kudu为用户提供了两种同等性模子,默认的同等性模子是:snapshot consistency。
这种模子保证用户每次读取出来的都是一个可用的快照,但这种同等性模子只能保证单个Client可以看到最新的数据,但不能保证多个Client每次取出的都是最新的数据。
另一种同等性模子是external consistency可以在多个Client之间保证每次取到的都是最新数据,但是Kudu没有提供默认的实现,必要用户做一些额外的工作:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4