【专题】数据仓库

2010-12-21 topic warehouse

简介

当前将数据处理分成如下三类。

OLAPBatchStreaming
Presto/Trino✅ ✅ ✅✅ ❎ ❎❎ ❎ ❎
Impala✅ ✅ ✅❎ ❎ ❎❎ ❎ ❎
Flink✅ ✅ ❎✅ ❎ ❎✅ ✅ ✅
Spark✅ ❎ ❎✅ ✅ ✅✅ ✅ ❎

各个类别的主要使用场景为:

  • OLAP 短查询,通常是秒级到分钟级。
  • Batch 常见的 ETL 任务,一般会持续几小时甚至几天。
  • Streaming 长时间运行的任务,低时延模式运行。

如下是支持的解读。

  • ❎ ❎ ❎ 不支持。
  • ✅ ❎ ❎ 能够处理部分场景,但是不擅长。
  • ✅ ✅ ❎ 能够处理大部分场景,但不能主导市场。
  • ✅ ✅ ✅ 市场主导者。

很多的开源组件尝试这几个场景进行统一。

大数据组件

如下的组件是在 Java8 环境下进行验证的,在 CentOS 中可以通过 alternatives --config java 进行配置。

  • HDFS 分布式文件系统,适合 TP 级的大文件存储。
  • Hive 在 Hadoop 之上的数仓,支持类 SQL 语言,可以有效减少 MR 编写成本。
  • Spark 开源计算框架,与 Hadoop 不同,支持内存计算,还可以参考 示例代码Native
  • Flink 不错的流处理框架,通过 Java/Scala 实现的分布式数据流引擎,支持流和批数据处理。

Kafka

高性能的分布式消息系统,应该是使用最为广泛的了。

  • 基本介绍 简单介绍一些常用的基本概念。
  • 常用命令 整理常用的命令,可以用来快速查询使用。

Hudi

实时数据湖三剑客之一。

开源组件

当前很多的系统是构建在开源协议之上的,包括了底层磁盘以及内存存储格式、计算框架、传输协议等等。

  • ORCParquet 在大数据中比较通用的两种数据格式,以及 AVRO 常用的元数据保存格式。
  • Arrow 定义了内存布局格式,从而允许在不同的系统之间高效地共享数据,降低不同系统间传递数据成本。
  • Flight 允许数据并行传输,同时支持流方式访问数据。
  • DataFusion 开源的查询引擎,提供了基础的框架,支持基于 Arrow 的向量执行,高度可定制。

OLAP

ClickHouse

StarRocks

其它

  • AirFlow 一个用于编排复杂计算工作流和数据处理流水线的开源工具。
  • Kerberos 分布式文件系统,适合 TP 级的大文件存储。
  • TPCH 标准测试集,实际上还包含了增量更新。
  • MinIO 开源的对象存储,通常用来替换 AWS 等云存储。