数据湖分析能力边界
从 v2.3 版本开始,StarRocks 支持通过 External Catalog 管理外部数据源和分析数据湖中的数据。
本文介绍了 External Catalog 的能力边界以及所涉及功能的支持版本。
通用功能
本节列出了 External Catalog 功能的通用功能,包括存储系统、File Reader、认证、权限和 Data Cache。
外部存储系统
| 存储系统 | 支持版本 |
|---|---|
| HDFS | v2.3+ |
| AWS S3 | v2.3+ |
| Microsoft Azure Storage | v3.0+ |
| Google GCS | v3.0+ |
| 阿里云 OSS | v3.1+ |
| 华为云 OBS | v3.1+ |
| 腾讯云 COS | v3.1+ |
| 火山引擎 TOS | v3.1+ |
| 金山云 KS3 | v3.1+ |
| MinIO | v3.1+ |
| Ceph S3 | v3.1+ |
除了对上述存储系统的原生支持,StarRocks 还支持以下类型的对象存储:
- 兼容 HDFS 的对象存储,如 COS Cloud HDFS、OSS-HDFS 和 OBS PFS
- 描述:需要在 BE 配置项
fallback_to_hadoop_fs_list中指定对象存储 URI 前缀,并将云厂商提供的 .jar 包上传到目录 /lib/hadoop/hdfs/ 中。创建 External Catalog 时需要使用在fallback_to_hadoop_fs_list中指定的前缀。 - 支持版本:v3.1.9+、v3.2.4+
- 描述:需要在 BE 配置项
- 其他兼容 S3 的对象存储服务
- 描述:需要在 BE 配置项
s3_compatible_fs_list中指定对象存储 URI 前缀。创建 External Catalog 时需要使用在s3_compatible_fs_list中指定的前缀。 - 支持版本:v3.1.9+、v3.2.4+
- 描述:需要在 BE 配置项
压缩格式
本节仅列出了每种文件格式支持的压缩格式。有关各 External Catalog 支持的文件格式,请参阅对应章节。
| 文件格式 | 压缩格式 |
|---|---|
| Parquet | NO_COMPRESSION, SNAPPY, LZ4, ZSTD, GZIP, LZO (v3.1.5+) |
| ORC | NO_COMPRESSION, ZLIB, SNAPPY, LZO, LZ4, ZSTD |
| Text | NO_COMPRESSION, LZO (v3.1.5+) |
| Avro | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), BZIP2 (v3.2.1+) |
| RCFile | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), GZIP (v3.2.1+) |
| SequenceFile | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), BZIP2 (v3.2.1+), GZIP (v3.2.1+) |
备注
Avro、RCFile 和 SequenceFile 文件格式是通过 Java Native Interface(JNI)读取的,而非 StarRocks 原生 Reader。因此,对比 Parquet 和 ORC 格式,这些文件格式的读取性能可能较低。
管理、认证和权限
| 特性 | 描述 | 支持版本 |
|---|---|---|
| Information Schema | External Catalog 支持 Information Schema。 | v3.2+ |
| 数据湖访问控制 | External Catalog 支持 StarRocks 原生 RBAC。您可以像管理 StarRocks 内部数据一样,管理 External Catalog 中数据库、表和视图(目前仅支持 Hive 视图和 Iceberg 视图)的权限。 | v3.0+ |
| 复用 Ranger 外部 Service | 支持复用 Apache Ranger 上的外部 Service(如 Hive Service)进行访问控制。 | v3.1.9+ |
| Kerberos 认证 | 支持 HDFS 或 Hive Metastore 的 Kerberos 认证。 | v2.3+ |
Data Cache
| 特性 | 描述 | 支持版本 |
|---|---|---|
| Data Cache (Block Cache) | 从 v2.5 开始,StarRocks 支持基于 CacheLib 实现的 Data Cache 功能(当时称为 Block Cache)。由于其可扩展性有限,从v3.0开始,StarRocks 重构了缓存功能,并添加了新功能,使 Data Cache 的性能在每个后续版本中逐渐提升。 | v2.5+ |
| 磁盘间数据 Rebalance | 支持数据 Rebalance 策略,确保数据倾斜控制在 10% 以内。 | v3.2+ |
| Data Cache 替换 Block Cache | 参数变更 BE 参数:
| v3.2+ |
| Data Cache 监控 API 新增指标 | 支持独立的 API 监控 Data Cache,包括缓存容量和命中率。可以通过接口 http://${BE_HOST}:${BE_HTTP_PORT}/api/datacache/stat 查看 Data Cache 的指标。 | v3.2.3+ |
| Data Cache 支持 Memory Tracker | Data Cache 支持 Memory Tracker。可以通过接口 http://${BE_HOST}:${BE_HTTP_PORT}/mem_tracker 查看内存相关指标。 | v3.1.8+ |
| Data Cache Warmup | 通过执行 CACHE SELECT,可以主动将所需数据从远程存储提前加载到缓存中,防止第一次查询时因获取数据花费过多时间。CACHE SELECT 不会打印数据或产生计算,只会拉取数据。 | v3.3+ |
Hive Catalog
元数据
通过 Hive catalogs 执行对 Hive 数据的查询时,StarRocks 会缓存表的元数据,以减少频繁访问远端存储的成本。此机制在确保数据新鲜度的同时,通过异步刷新和过期策略来保证查询性能。
缓存的元数据
StarRocks 在查询期间将缓存以下元数据:
-
表或分区级元数据