简介
当前将数据处理分成如下三类。
OLAP | Batch | Streaming | |
---|---|---|---|
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
实时数据湖三剑客之一。
- 基本介绍 由 Uber 开源的实时数据湖解决方案,其它还可参考 安装部署、常用命令、一致性模型。
- 示例样板 通过 Spark 提供的测试用例,或者说是验证方案。
- 元数据表 保存了相关的元数据,可以用来加速查询,也包含了索引的使用,表结构相关可以参考 Schema Evolution 介绍。
- Streamer 用于数据导入,更多的场景是实时数据导入,可以参考常见示例 TPCH 。
开源组件
当前很多的系统是构建在开源协议之上的,包括了底层磁盘以及内存存储格式、计算框架、传输协议等等。
- ORC、Parquet 在大数据中比较通用的两种数据格式,以及 AVRO 常用的元数据保存格式。
- Arrow 定义了内存布局格式,从而允许在不同的系统之间高效地共享数据,降低不同系统间传递数据成本。
- Flight 允许数据并行传输,同时支持流方式访问数据。
- DataFusion 开源的查询引擎,提供了基础的框架,支持基于 Arrow 的向量执行,高度可定制。
OLAP
ClickHouse
- 基本介绍 简单介绍基本概念、安装部署等。