【完整版15章】SparkSQL极速入门 整合Kudu实现广告业务数据分析
获课地址:jzit.top/2842/
Apache Kudu 是一个开源的分布式列式存储引擎,专为需要快速分析处理(OLAP)和实时数据更新的场景设计。它结合了HDFS的批量处理能力和HBase的低延迟随机访问能力,适用于大数据领域的实时分析和数据仓库场景。
Kudu 概述
- 定位:Kudu 是一个分布式存储系统,旨在填补HDFS(适合批量处理)和HBase(适合低延迟随机访问)之间的空白。
- 特点:
- 支持快速插入、更新和删除操作。
- 提供高效的列式存储和扫描性能。
- 与Hadoop生态系统(如Impala、Spark)无缝集成。
- 支持强一致性和ACID事务。
- 适用场景:
- 实时数据分析
- 时间序列数据存储
- 数据仓库的实时更新
Kudu 核心概念
- Table(表)
- Kudu 中的数据存储在表中,表由行和列组成。
- 表需要预先定义Schema,包括列名、数据类型和主键。
- Row(行)
- 表中的每一行数据,由主键唯一标识。
- Column(列)
- 表中的列,支持多种数据类型(如int、string、bool等)。
- 列式存储使得查询时只需读取需要的列,提升性能。
- Primary Key(主键)
- 每行数据的主键用于唯一标识一行,支持复合主键。
- 主键用于数据分布和索引。
- Tablet(分片)
- 表被水平分割为多个Tablet,每个Tablet是一个独立的数据单元。
- Tablet 是数据分布和并行处理的基本单位。
- Replica(副本)
- 每个Tablet 有多个副本,分布在不同的Tablet Server上,提供高可用性和容错能力。
- Master Server
- 负责元数据管理、Tablet 分配和集群协调。
- 集群中通常有一个主Master和多个备Master。
- Tablet Server
- 负责存储和管理Tablet 数据,处理读写请求。
- 每个Tablet Server 可以管理多个Tablet。
Kudu 架构
Kudu 的架构设计旨在实现高吞吐、低延迟和高可用性,主要包括以下组件:
1.Master Server
- 功能:
- 管理表的元数据(Schema、分区信息等)。
- 管理Tablet 的分布和副本位置。
- 处理集群的成员管理和故障恢复。
- 高可用性:通过Raft协议实现主备切换。
2.Tablet Server
- 功能:
- 存储和管理Tablet 数据。
- 处理客户端的读写请求。
- 执行数据压缩和合并操作。
- 数据分布:Tablet 分布在多个Tablet Server上,支持水平扩展。
3.Raft 一致性协议
- 用于保证Tablet 副本之间的一致性。
- 每个Tablet 的多个副本通过Raft协议选举Leader,确保数据的一致性和高可用性。
4.存储引擎
- 列式存储:数据按列存储,适合分析查询。
- 内存与磁盘结合:数据先写入内存(MemRowSet),再持久化到磁盘(DiskRowSet)。
- Delta 存储:更新和删除操作记录在DeltaStore中,定期合并到主存储。
5.客户端 API
- 提供Java、C++、Python等语言的API。
- 支持与Impala、Spark等大数据工具集成。
Kudu 工作流程
- 表创建:
- 客户端向Master Server发送创建表请求,定义Schema和分区规则。
- Master Server分配初始Tablet 并记录元数据。
- 数据写入:
- 客户端根据主键定位目标Tablet。
- 数据写入Tablet Server的内存(MemRowSet),随后异步持久化到磁盘(DiskRowSet)。
- 数据读取:
- 客户端根据查询条件定位相关Tablet。
- Tablet Server从内存和磁盘中读取数据,并合并DeltaStore中的更新。
- 数据更新与删除:
- 更新和删除操作记录在DeltaStore中,定期合并到主存储。
- 数据压缩:
- 定期对DiskRowSet和DeltaStore进行压缩,优化存储和查询性能。
Kudu 的优势
- 高性能:列式存储和内存加速使得查询性能优异。
- 实时性:支持低延迟的插入、更新和删除操作。
- 易用性:与Hadoop生态系统无缝集成。
- 可扩展性:支持水平扩展,适应大规模数据存储。
Kudu 的局限性
- Schema 约束:表Schema需要预先定义,修改Schema的成本较高。
- 存储成本:列式存储和副本机制增加了存储开销。
- 适用场景有限:更适合OLAP场景,不适合OLTP场景。
总结
Apache Kudu 是一个强大的分布式存储引擎,特别适合需要实时分析和更新的场景。通过结合列式存储、分布式架构和一致性协议,Kudu 在大数据生态系统中占据了重要地位。