《CDP企业数据云平台从入门到实践》——CDP之数据储存(6) https://developer.aliyun.com/article/1226380?groupCode=ClouderaCDP
五、 Apache Kudu 存储
1. Kudu 架构
1) 超快的列式存储
与大多数现代分析数据存储一样,Kudu 在内部按列而不是行组织其数据。列式存储允许高效的编码和压缩。例如,只有几个唯一值的字符串字段每行存储只能使用几个位。借助游程编码、差分编码和矢量化位打包等技术,Kudu 读取数据的速度与存储数据的空间效率一样快。
列式存储还显着减少了为分析查询提供服务所需的数据 IO 量。使用惰性数据物化和谓词下推等技术,Kudu 可以在几秒钟内对数十亿行和 TB 数据执行下钻和大海捞针查询。
2) 分布和容错
与大多数现代分析数据存储一样,Kudu 在内部按列而不是行组织其数据。列式存储允许高效的编码和压缩。例如,只有几个唯一值的字符串字段每行存储只能使用几个位。借助游程编码、差分编码和矢量化位打包等技术,Kudu 读取数据的速度与存储数据的空间效率一样快。
列式存储还显着减少了为分析查询提供服务所需的数据 IO 量。使用惰性数据物化和谓词下推等技术,Kudu 可以在几秒钟内对数十亿行和 TB 数据执行下钻和大海捞针查询。
3) 分布和容错
为了扩展到大型数据集和大型集群,Kudu 将表拆分为更小的单元,称为 tablets。这种拆分可以在每个表的基础上配置为基于散列、范围分区或其组合。这使操作员可以轻松地在分析工作负载的并行性和更多在线工作负载的高并发性之间进行权衡。为了确保您的数据始终安全且可用,Kudu 使用 Raft 共识算法来复制给定平板电脑的所有操作。
Raft 和 Paxos 一样,确保每次写入在响应客户端请求之前至少被两个节点持久化,确保不会因为机器故障而丢失数据。当机器确实发生故障时,副本会在几秒钟内自行重新配置以保持极高的系统可用性。
使用多数共识可提供非常低的尾部延迟,即使某些节点可能因并发工作负载(如
Spark 作业或繁重的 Impala 查询)而承受压力。但与最终一致的系统不同,Raft 共
识确保所有副本将围绕数据状态达成一致,并且通过使用逻辑和物理时钟的组合,
Kudu 可以为需要它的客户端提供严格的快照一致性。
4) 专为下一代硬件而设计
Kudu 团队与英特尔的工程师密切合作,以利用下一代硬件技术的力量。Kudu 的存储旨在利用固态硬盘的 IO 特性,它包括一个基于 libpmem 库的实验性缓存实现,可以将数据存储在持久内存中。
Kudu 是用 C++实现的,因此它可以轻松扩展到每个节点的大量内存。并且因为关键存储数据结构被设计成高并发的,它可以很容易地扩展到几十个核心。借助内存中的列式执行路径,Kudu 使用来自 SSE4 和 AVX 指令集的 SIMD 操作实现了良好的指令级并行性。
《CDP企业数据云平台从入门到实践》——CDP之数据储存(8) https://developer.aliyun.com/article/1226369?groupCode=ClouderaCDP