当 Fluss 出来之后,很多人都对 Fluss 的定位有些迷惑,有的人说是代替 Kafka 的,有的人说是代替数据湖的,我想每一个关注大数据的小伙伴们都有自己的想法。
这篇文章我就来表达一下自己的观点,个人以为没有谁替代谁这么一说,只是不同的场景用不同的技术。下面我对这三个框架说一下自己的理解。
我们可以如许理解为:
- Kafka 是一条快速的“数据高速公路”,负责让数据高效流动。
- Fluss 是一个强大的“实时堆栈”,既能存储流数据,也能进行实时分析。
- Paimon 是一个“历史档案馆”,用来生存并查询恒久存储的数据。
例如,我们谋划一家电商平台,必要对订单数据进行处理惩罚:
- 用户下单时,数据必要快速传递到配景(Kafka)。
- 实时盘算贩卖总额和库存厘革(Fluss)。
- 恒久生存订单数据,供月度报表分析利用(Paimon)。
Kafka 在大数据场景下一些缺陷
1. 缺乏分析本事
问题:
Kafka 的主要功能是数据传输,不具备直接分析数据的本事。如果必要对 Kafka 中的数据进行分析,必须借助外部的盘算引擎(如 Flink 或 Spark),并且必要额外导出数据到存储系统(如 HDFS 或数据库),这增长了耽误和系统复杂度。
举例:电商平台统计已往 1 分钟的贩卖总额
Kafka 的流程
- 用户 A 下单:
- 订单ID: 001, 金额: 5000, 时间: 2024-12-25 10:00:00。
复制代码 数据写入 Kafka 的 order_topic,写入耽误通常在毫秒级别。
- 用户 B 下单:
- 订单ID: 002, 金额: 2000, 时间: 2024-12-25 10:00:30。
复制代码 同样被写入 Kafka。
- 数据斲丧和存储:
- 外部盘算引擎(如 Flink)从 Kafka 斲丧数据。
- 数据被存储到 HDFS 或数据库,以便后续查询。
- 数据分析:
- 盘算引擎执行查询:
- SELECT SUM(amount) FROM orders WHERE order_time > CURRENT_TIMESTAMP - INTERVAL '1' MINUTE;
复制代码 - 查询结果返回,总贩卖额为 7000。
问题:
- 复杂性
- Kafka 只是传输数据,分析必要依靠外部盘算引擎,系统组件多,逻辑复杂。
- 耽误来源
- 数据从 Kafka 斲丧到存储系统、盘算引擎运行任务的整体耗时,可能达到秒级甚至更高。
Fluss 的办理:优化分析路径
Fluss 的设计:
- Fluss 不光能存储流数据,还具备内置的分析本事。
- 用户无需额外的盘算引擎,即可直接查询 Fluss 中的数据。
Fluss 的流程
- 用户 A 下单,数据直接写入 Fluss 的 Log Store
- 订单ID: 001, 金额: 5000, 时间: 2024-12-25 10:00:00。
复制代码 - 用户 B 下单,数据同样写入 Fluss:
- 订单ID: 002, 金额: 2000, 时间: 2024-12-25 10:00:30。
复制代码 - 数据分析:
- 直接在 Fluss 中运行 SQL 查询:
- SELECT SUM(amount) FROM orders WHERE order_time > CURRENT_TIMESTAMP - INTERVAL '1' MINUTE;
复制代码 - 查询秒级返回结果,总贩卖额为 7000。
上风:
- 简化架构
- 数据写入 Fluss 后直接分析,无需额外的盘算引擎或存储系统。
- 低耽误
- 查询直接运行在 Fluss 的数据存储上,无需额外的斲丧和存储过程。
2. 数据存储短期化
问题:
Kafka 的数据保留时间通常是几天(通过 Retention 配置),超过这个时间的数据会被自动清理。得当实时数据传递,但不得当恒久存储和历史数据管理。
举例:
场景:电商平台必要分析已往一年的贩卖数据。
- Kafka 的限制:
- Kafka 中只能保留迩来 7 天的数据(例如配置 Retention=7d)。
- 超过 7 天的订单数据会被清理,导致无法查询历史订单。
- 问题:
- Kafka 无法恒久存储数据。
- 必须额外导出数据到数据湖(如 HDFS 或 Paimon)进行管理。
- Fluss 的办理:
- Fluss 可以将实时数据存储在 Log Store 中,并通过 Compaction Service 定期将数据整理为 Paimon 格式(如 Parquet 文件)。
- 恒久数据存储在远程存储(如 S3 或 HDFS),方便后续批量分析。
- 用户可以查询已往一年每个月的贩卖额:
- SELECT MONTH(order_time), SUM(amount) FROM orders GROUP BY MONTH(order_time);
复制代码
3. 重复斲丧和性能瓶颈
问题:
在多斲丧者的场景下,Kafka 数据会被多个斲丧组重复拉取,导致网络和存储压力增长。别的,Kafka 的日志存储只能追加写入,不支持高效的实时更新。
举例:
场景:电商平台必要更新订单状态,并实时查看每个用户的订单数量。
- Kafka 的流程:
- 用户 A 创建订单:订单ID: 001, 状态: Pending。
- 订单状态更新为:订单ID: 001, 状态: Confirmed。
- Kafka 的日志存储只支持追加写入,更新后的订单会作为新记录写入:
- 订单ID: 001, 状态: Pending
- 订单ID: 001, 状态: Confirmed
- 斲丧者必要额外处理惩罚重复的状态记录。
- 问题:
- 数据冗余增长,导致存储和网络成本增长。
- 数据更新效率低。
- Fluss 的办理:
- Fluss 在日志表之上构建了 键值索引(Key-Value Index),支持高效的主键更新和查询。
- 订单状态更新可以直接覆盖旧记录:
- 复制代码
- UPDATE orders SET status = 'Confirmed' WHERE order_id = '001';
- ```
复制代码
- 数据更新后的结果:
- 订单ID: 001, 状态: Confirmed(旧记录被覆盖)。
- 实时查询每个用户的订单数量:
- SELECT user_id, COUNT(*) FROM orders GROUP BY user_id;
复制代码 Fluss 和 Paimon 数据湖的联系和区别
Fluss 和 Paimon 是大数据存储和处理惩罚领域的两种工具,它们各自有专注的场景,但也可以无缝结合利用。通过一个通俗易懂的例子来说明两者的联系和区别。
1. 简单定义
- Fluss:流存储,专注于实时数据的高效写入和查询,得当处理惩罚短期的数据分析和更新。
- Paimon:数据湖,专注于恒久存储和批量分析,得当管理历史数据和大规模盘算。
两者的关系
- Fluss 是数据流的入口,接收和存储实时写入的数据。
- Paimon 是数据流的出口,用于存储整理后的恒久数据。
- Fluss 和 Paimon 通过“流湖一体”架构连接,实时数据从 Fluss 同步到 Paimon,Paimon 负责恒久存储和批量分析。
2. 举例:电商平台订单系统
场景描述
某电商平台有一个订单系统,记任命户的下单和状态更新。假设用户的数据厘革如下:
- 实时写入数据:用户 A 下单,订单状态从 Pending 到 Confirmed。
- 恒久存储需求:系统必要记录全部订单的完备历史,用于年终分析。
2.1 Fluss 的工作流程
- 用户 A 下单:
- 订单ID: 001, 用户ID: A, 金额: 100, 状态: Pending, 时间: 2024-12-25 10:00:00。
复制代码 数据被写入 Fluss 的 Log Store,实时存储,供秒级查询。
- 用户 A 更新订单状态:
- 订单ID: 001, 用户ID: A, 金额: 100, 状态: Confirmed, 时间: 2024-12-25 10:05:00。
复制代码 新数据也实时写入 Fluss,覆盖旧状态(基于主键去重)。
实时查询:
- 用户盼望查看订单的最新状态:
- SELECT * FROM orders WHERE order_id = '001';
复制代码 Fluss 返回最新状态:
- 订单ID: 001, 用户ID: A, 金额: 100, 状态: Confirmed。
复制代码 2.2 Paimon 的工作流程
- Fluss 定期将数据同步到 Paimon:
- 用户的订单记录被整理成 Paimon 的批量存储格式(如 Parquet 文件)。
- 假设 Fluss 中的状态厘革如下:
- Fluss 日志:
- [Offset=1] 订单ID: 001, 用户ID: A, 金额: 100, 状态: Pending。
- [Offset=2] 订单ID: 001, 用户ID: A, 金额: 100, 状态: Confirmed。
复制代码 - Paimon 存储终极整理后的数据(合并 Fluss 的日志):
- Paimon 数据:
- 订单ID: 001, 用户ID: A, 金额: 100, 状态: Confirmed。
复制代码
- 恒久分析:
- 年终,运营团队必要分析整年订单的状态和金额分布:
- SELECT COUNT(*) AS total_orders, SUM(amount) AS total_revenue FROM orders$lake WHERE year(order_time) = 2024;
复制代码 - Paimon 提供大规模批量查询的支持,返回结果:
- total_orders: 1000000, total_revenue: 50000000。
复制代码
2.3 Fluss 和 Paimon 的团结查询
- 用户必要实时查询全部订单的最新状态:
- Fluss 读取最新的日志数据。
- Paimon 提供历史快照数据。
- 查询逻辑:
- Fluss 和 Paimon 的数据合并时,通过主键去重:
- Paimon 提供历史快照(订单ID: 001, 状态: Pending)。
- Fluss 提供实时更新(订单ID: 001, 状态: Confirmed)。
- 终极查询结果:
- 订单ID: 001, 用户ID: A, 金额: 100, 状态: Confirmed。
复制代码
3. 区别总结
特性FlussPaimon定位实时流存储,得当短期数据处理惩罚恒久数据存储,得当历史数据分析性能优化秒级写入和查询,支持实时更新高效批量存储,支持大规模查询存储方式日志存储(Log Store)文件存储(如 Parquet)应用场景查询最新状态、实时流分析大规模历史数据分析、离线盘算数据生命周期短期存储(实时数据更新)恒久存储(历史数据)典型查询查询最新订单状态:SELECT *查询整年收入:SELECT SUM(amount) 写在最后
上面列举了一些Kafka 在大数据分析领域现在可能存在的劣势,但是不是说 Fluss 就能代替 Kafka ,这显然是不实际的。Kafka 的超高性能,系统解耦,稳定度,社区生动度等这些都是非常好的,只能说每个服务组件都有自己的应用的场景。
这篇文章也只是站在大数据分析场景中讨论 Fluss、Kafka、Paimon 的一些特点。后面会给大家更新 Fluss 的数据查询方面的知识,接待大家一起来讨论。
本文由博客一文多发平台 OpenWrite 发布!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |