实时数仓:其他主流且高效的方案对比

除了数据湖 + Flink之外,目前实时数仓的建设中还有其他主流且高效的方案。每种方案都有特定的优势和适用场景,主要取决于业务需求、数据量级、实时性要求以及团队技术栈。以下是一些主流方案的总结:


1. Kafka + Flink/Doris

架构
  • 数据源:使用 Kafka 作为实时数据流入口。
  • 实时计算:用 Flink 进行实时 ETL,完成数据清洗、聚合、分区等操作。
  • 数据存储和查询:使用 Apache Doris 作为存储和查询引擎。
优势
  • Kafka 提供高吞吐、低延迟的数据流管道,非常适合处理大规模实时数据。
  • Flink 的流批一体化能力简化了实时和离线计算流程。
  • Doris 支持 MPP(大规模并行处理)架构,查询速度快,尤其适合交互式分析。
适用场景
  • 实时数据看板、监控系统(如电商实时交易、运营监控)。
  • 数据量较大、查询延迟要求低的场景。

2. Kafka + ClickHouse

架构
  • 数据源:Kafka 采集实时数据。
  • 数据处理:可以直接使用 Kafka Connect 或 Flink 处理数据。
  • 数据存储和查询:ClickHouse 作为 OLAP 数据库存储实时计算结果。
优势
  • ClickHouse 是高性能的列式存储数据库,支持复杂的分析查询。
  • 对于一些简单的实时场景,可以跳过 Flink,直接用 Kafka Connect 将数据从 Kafka 写入 ClickHouse,简化架构。
适用场景
  • 数据量较大但查询逻辑相对简单的场景。
  • 实时日志分析、Web 流量监控、广告点击流分析等。

3. Kafka + Spark Streaming

架构
  • 数据源:Kafka 作为实时数据流入口。
  • 实时计算:使用 Spark Streaming(或 Structured Streaming)进行数据处理。
  • 数据存储:可以存储到 HDFS、S3 或 OLAP 数据库(如 ClickHouse、Doris)。
优势
  • Spark 生态完善,适合团队已有 Spark 技术栈的场景。
  • Spark Structured Streaming 的流批一体化支持高吞吐的实时计算。
适用场景
  • 实时计算复杂度较高,需要与离线数据计算统一的场景。
  • Spark 已广泛使用的团队。

4. 数据湖 + Apache Hudi/Iceberg + Presto/Trino

架构
  • 数据源:数据流通过 Kafka 或 Flink Sink 写入数据湖。
  • 数据湖:使用 Apache Hudi 或 Iceberg 管理数据湖的增量更新和历史版本。
  • 查询引擎:Presto 或 Trino 用于实时和交互式查询。
优势
  • Hudi 和 Iceberg 支持 ACID 事务,便于在数据湖中存储实时数据。
  • Presto 和 Trino 查询性能高,支持多租户和大规模并发查询。
适用场景
  • 需要批流一体化和统一数据存储(如同时支持历史数据和实时数据分析)。
  • 数据湖场景下的实时业务监控。

5. Pulsar + Flink

架构
  • 数据源:使用 Apache Pulsar 作为消息队列和存储。
  • 实时计算:用 Flink 处理数据并生成实时结果。
  • 数据存储:将结果存储到 OLAP 数据库(如 Doris 或 ClickHouse)或数据湖。
优势
  • Pulsar 原生支持多租户和分层存储,适合海量数据实时传输和存储。
  • Flink 完美适配 Pulsar,适合需要低延迟和高吞吐的实时计算场景。
适用场景
  • 需要消息队列与存储结合的场景。
  • 多租户业务数据隔离。

6. Kafka + Materialize

架构
  • 数据源:Kafka 作为实时数据流。
  • 数据处理:Materialize 直接从 Kafka 消费数据流,并进行增量计算和存储。
  • 查询:直接查询 Materialize 的增量物化视图。
优势
  • Materialize 是专为实时增量计算设计的数据库,支持 SQL 查询,实时性极高。
  • 大幅简化了实时数据流的架构,不需要单独的流式计算引擎。
适用场景
  • 小型团队,想快速构建实时数仓的场景。
  • 复杂计算需求少,但实时性要求极高的场景。

7. 数据湖 + Spark Structured Streaming

架构
  • 数据源:实时流数据通过 Kafka 写入数据湖(如 Hudi、Delta Lake、Iceberg)。
  • 数据处理:使用 Spark Structured Streaming 处理实时数据并生成增量结果。
  • 数据消费:直接用 Spark、Presto 或 BI 工具查询。
优势
  • Spark Structured Streaming 与数据湖结合很好,支持实时写入和查询。
  • Spark 强大的计算能力适合复杂的实时计算场景。
适用场景
  • 实时性要求高,同时需要复杂的计算逻辑。
  • 批量处理与实时处理结合的场景。

8. Kafka + Apache Pinot

架构
  • 数据源:Kafka 作为数据流入口。
  • 实时存储和查询:Apache Pinot 直接从 Kafka 消费数据,支持实时和批量查询。
优势
  • Apache Pinot 是一款实时 OLAP 数据库,支持复杂多维查询。
  • 内置 Kafka 数据连接器,简化了架构设计。
适用场景
  • 实时多维分析(如实时监控、广告投放效果分析)。
  • 查询延迟要求在毫秒级的场景。

方案对比

方案实时性复杂度成本适用场景
数据湖 + Flink毫秒级中等复杂实时分析、批流一体化
Kafka + ClickHouse毫秒级较低中等实时日志、流量监控
Kafka + Flink/Doris毫秒级较高中等实时监控、报表分析
Kafka + Spark Streaming秒级中等中高复杂计算、Spark 技术栈
数据湖 + Hudi/Iceberg毫秒到秒级较高历史 + 实时分析
Pulsar + Flink毫秒级较高中高海量实时数据、多租户
Kafka + Materialize毫秒级中低小型团队的快速实现实时数仓
Kafka + Apache Pinot毫秒级中等多维实时分析

总结

  • 如果实时性要求高且需要复杂计算:数据湖 + FlinkKafka + Flink/Doris 是不错的选择。
  • 如果倾向于快速实现:可以考虑 Kafka + ClickHouseKafka + Materialize
  • 如果数据量大且需要统一存储与查询:数据湖 + Hudi/Iceberg + Presto/Trino 是更好的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948515.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

USB 驱动开发 --- Gadget 设备连接 Windows 免驱

环境信息 测试使用 DuoS(Arm CA53, Linux 5.10) 搭建方案验证环境,使用 USB sniff Wirekshark 抓包分析,合照如下: 注:左侧图中设备:1. 蓝色,USB sniff 非侵入工 USB 抓包工具;2. …

2025年1月4日蜻蜓q旗舰版st完整开源·包含前后端所有源文件·开源可商用可二开·优雅草科技·优雅草kir|优雅草星星|优雅草银满|优雅草undefined

2025年1月4日蜻蜓q旗舰版st完整开源包含前后端所有源文件开源可商用可二开优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined 产品介绍: 本产品主要贡献者优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined-青史留名,时光如川浪淘…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(三)

****非斜体正文为原文献内容(也包含笔者的补充),灰色块中是对文章细节的进一步详细解释! 3.2 全局解释(Global Explanation) 与旨在解释模型个体预测的局部解释不同,全局解释提供了对语言模型…

体验谷歌最新Gemini 2.0 Flash原生多模态音视频对话桌面分享功能

Gemini 2.0是谷歌最新推出的原生多模态输入输出的AI模型。Gemini 2.0 Flash是2.0家族第一个模型,以多模态输入输出和Agent技术为核心,速度比 1.5 Pro快两倍,关键性能指标超过 1.5 Pro。模型支持原生工具调用和实时音视频流输入,提…

Leecode刷题C语言之我的日程安排表③

执行结果:通过 执行用时和内存消耗如下: typedef struct {int size;int maxIntersection;int** books;// #ifdef DEBUG// int runCount;// #endif } MyCalendarThree;void insert(MyCalendarThree*, int, int, int, int); int* binarySearch(int*, int, int);MyCal…

C++ 函数名字后面带const

C++中,在函数名后面加上const关键字表示该函数是一个常量成员函数。 常量成员函数,可以在const对象上被调用,并且不会修改对象的状态。 VC6新建一个单文档工程;添加一个一般类; 把类的代码做好; // MyClass.h: interface for the MyClass class. // //#if !defined(AFX_…

SMTP发送邮件的过程

(1)SMTP客户端首先请求与服务器端的25号端口建立TCP连接(1分)。(2)连接建立成功后,客户端和服务器通过握手阶段验证双方身份(1分)。(3)验证成功后,客户端首先向服务器端通告邮件发送…

qml Rectangle详解

1、概述 Rectangle是Qt Quick中的一个基础图形元素,用于在QML界面上绘制一个可带边框和可填充的矩形区域。它继承自Item类,因此具有Item的所有属性和功能,如位置、尺寸、变换等。通过Rectangle,可以创建各种矩形形状,…

软件工程实验-实验2 结构化分析与设计-总体设计和数据库设计

一、实验内容 1. 绘制工资支付系统的功能结构图和数据库 在系统设计阶段,要设计软件体系结构,即是确定软件系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。同时把模块组织成良好的层次系统:顶层模块通过调用它的下层…

Innodisk iSMART V6使用说明_SSD还能用多久?已经读写了多少次数?……

Innodisk iSMART是一款SSD健康数据读取软件。它能轻松获取大部分SSD内部寄存器中的健康数据,并以简洁的图形界面展示给用户。在程序界面的顶部,是页面标签,点击页面标签就能切换到相应的页面。页面标签的下面是磁盘选择栏。点击磁盘编号&…

windows11(或centos7)安装nvidia显卡驱动、CUDA、cuDNN

本文是我瞎搞时写的问题汇总及参考文献,记录了一些问题解决的进度及对问题的思考。 最近一次更新时间:2025年1月4日 一、安装或更新nvidia显卡驱动 首先,需要确保你的设备安装了最新的显卡驱动。 (1)centos7安装显…

2、蓝牙打印机点灯-GPIO输出控制

1、硬件 1.1、看原理图 初始状态位高电平. 需要驱动PA1输出高低电平控制PA1. 1.2、看手册 a、系统架构图 GPIOA在APB2总线上。 b、RCC使能 GPIOA在第2位。 c、GPIO寄存器配置 端口:PA1 模式:通用推挽输出模式 -- 输出0、1即可 速度:5…

WPS表格技巧01-项目管理中的基本功能-计划和每日记录的对应

前言: 在项目管理中,一般就是用些项目管理工具来管理这个任务和 task,但是就是要学这些工具很麻烦,比较好的方法,通用的方法就是用 Excel 表格去做(这非常适合松散的团队组织),然后…

Vue 项目中实现打印功能:基于目标 ID 的便捷打印方案

一、引言 在 Vue 项目开发中,实现打印功能是一个常见的需求。本文将介绍如何封装一个打印方法,使得用户只需传入需要打印的目标 ID 名称,即可轻松实现预览并打印的功能。这种方法不仅简单易用,还具有一定的通用性,适合…

ARM 汇编基础总结

GNU 汇编语法 编写汇编的过程中,其指令、寄存器名等可以全部使用大写,也可以全部使用小写,但是不能大小写混用。 1. 汇编语句的格式 label: instruction comment label即标号,表示地址位置,有些指令前面可能会有标…

《塑战核心》V1.0.0.9952官方中文版

体验打击感满分的近距离战斗。击败蜂拥而至的敌人,每次击杀都会让你变得更强。 《塑战核心》官方中文版https://pan.xunlei.com/s/VODW7effpagQN1JU0UpBQQ5uA1?pwdmr8g#

综合练习dfs_1

1863. 找出所有子集的异或总和再求和 之前我们就做了到关于找集合子集的问题&#xff0c;但我们不需要记录路径上的数&#xff0c;求路径上数的异或和就可以。 class Solution {int path;int sum0; public:int subsetXORSum(vector<int>& nums) {dfs(nums,0);return …

【Python学习(五)——条件判断】

Python学习&#xff08;五&#xff09;——条件判断 本文介绍了条件判断&#xff0c;仅作为本人学习时记录&#xff0c;感兴趣的初学者可以一起看看&#xff0c;欢迎评论区讨论&#xff0c;一起加油鸭~~~ 心中默念&#xff1a;Python 简单好学&#xff01;&#xff01;&#x…

PPT加页码并改格式

如何快捷插入自定义 1、插入文本框&#xff0c;并处于输入状态 2、点击插入幻灯片编号的图标&#xff0c;就自动生成页码了 3、然后调整这个页码为想要的格式&#xff0c;到需要加页码的页面&#xff0c;将文本框复制过去就行了

Git 入门(一)

git 工作流如下&#xff1a; 命令如下&#xff1a; clone&#xff08;克隆&#xff09;: 从远程仓库中克隆代码到本地仓库checkout &#xff08;检出&#xff09;:从本地仓库中检出一个仓库分支然后进行修订add&#xff08;添加&#xff09;: 在提交前先将代码提交到暂存区com…