更新时间:2023-03-17 GMT+08:00
CarbonData
CarbonData是一种新型的Apache Hadoop本地文件格式,使用先进的列式存储、索引、压缩和编码技术,以提高计算效率,有助于加速超过PB数量级的数据查询,可用于更快的交互查询。同时,CarbonData也是一种将数据源与Spark集成的高性能分析引擎。
图1 CarbonData基本架构
使用CarbonData的目的是对大数据即席查询提供超快速响应。CarbonData是一个OLAP引擎,采用类似于RDBMS中的表来存储数据。用户可将大量(10TB以上)的数据导入以CarbonData格式创建的表中,CarbonData将以压缩的多维索引列格式自动组织和存储数据。数据被加载到CarbonData后,就可以执行即席查询,CarbonData将对数据查询提供秒级响应。
CarbonData将数据源集成到Spark生态系统,用户可使用Spark SQL执行数据查询和分析,也可以使用Spark提供的第三方工具ThriftServer连接到Spark SQL。
CarbonData特性
- SQL功能:CarbonData与Spark SQL完全兼容,支持所有可以直接在Spark SQL上运行的SQL查询操作。
- 简单的Table数据集定义:CarbonData支持易于使用的DDL(数据定义语言)语句来定义和创建数据集。CarbonData DDL十分灵活、易于使用,并且足够强大,可以定义复杂类型的Table。
- 便捷的数据管理:CarbonData为数据加载和维护提供多种数据管理功能,支持加载历史数据以及增量加载新数据。CarbonData加载的数据可以基于加载时间进行删除,也可以撤销特定的数据加载操作。
- CarbonData文件格式是HDFS中的列式存储格式。该格式具有许多新型列存储文件的特性。例如,分割表,压缩模式等。
CarbonData独有的特点
- 伴随索引的数据存储:由于在查询中设置了过滤器,可以显著加快查询性能,减少I/O扫描次数和CPU资源占用。CarbonData索引由多个级别的索引组成,处理框架可以利用这个索引来减少需要安排和处理的任务,也可以通过在任务扫描中以更精细的单元(称为blocklet)进行skip扫描来代替对整个文件的扫描。
- 可选择的数据编码:通过支持高效的数据压缩和全局编码方案,可基于压缩/编码数据进行查询,在将结果返回给用户之前,才将编码转化为实际数据,这被称为“延迟物化”。
- 支持一种数据格式应用于多种用例场景:例如交互式OLAP-style查询,顺序访问(big scan),随机访问(narrow scan)。
CarbonData关键技术和优势
- 快速查询响应:高性能查询是CarbonData关键技术的优势之一。CarbonData查询速度大约是Spark SQL查询的10倍。CarbonData使用的专用数据格式围绕高性能查询进行设计,其中包括多种索引技术、全局字典编码和多次的Push down优化,从而对TB级数据查询进行最快响应。
- 高效率数据压缩:CarbonData使用轻量级压缩和重量级压缩的组合压缩算法压缩数据,可以减少60%~80%数据存储空间,大大节省硬件存储成本。
关于CarbonData的架构和详细原理介绍,请参见:https://carbondata.apache.org/。
父主题: 组件介绍