您当前的位置:首页 > 电脑百科 > 数据库 > 百科

Kafka 正在成为新一代数据湖?

时间:2023-11-14 10:56:08  来源:IT168企业级  作者:

数据管理向数据湖的转变确实是必然的,也是一次全平台的变革。

数据湖将成为管理大量原始、非结构化和半结构化数据的基础。它可以将历史数据存储为单一事实来源,这对于在不同部门和团队之间保持数据一致性、完整性和可信度是至关重要的。

通过集成Apache Spark、Trino或ClickHouse等计算引擎,data lake变为data lakehouse。这不仅有助于存储大量数据,而且有助于高效处理数据。

Kafka 正在成为新一代数据湖?

Apache Kafka是一种广泛使用的事件流平台,几乎所有的公司都在使用。起初,Kafka一直被作为数据管道来进行实现,随着其持久化能力与可靠性,它也被视为现代数据技术中的“新兴的数据存储库”。

许多数据工程师使用 Kafka 保存最近读取的数据,通常持续 7 天到一个月,然后再将这些数据传输到数据湖中。

在印象中“事件流平台是针对实时数据的,而数据湖是针对历史数据的”。然而,随着数据组件的发展,越来越多的表明 Kafka 正在演变成一种新形式的数据湖。

一、为什么说Kafka是数据湖?

数据湖是一个集中式存储库,允许您存储任意规模的所有结构化和非结构化数据。与以结构化和有组织的方式存储数据的数据仓库不同,数据湖以原始、本机格式保留数据,通常采用扁平架构

目前流行的数据湖管理框架有三种,即Apache Iceberg、Apache Hudi和Delta Lake。虽然这些系统都有其独特的功能和优势,但这三个系统都被广泛用于大规模存储和管理历史数据。

它们的设计和功能使处理大量数据变得更加容易,并且它们与 Apache Spark、Flink 等流行计算引擎的集成功能使它们适合各种大数据应用程序和分析用例。

Kafka 拥有所有数据湖属性

Kafka 本质上非常适合作为数据湖。在讨论 Kafka 是否是数据湖的新形式之前,我们首先检查一下 Kafka 是否具备成为数据湖所需的所有属性。

ACID属性:正如 Martin Kleppmann 在 2018 年旧金山 Kafka 峰会主题演讲“ Kafka 是数据库吗?”中强调的那样。,Kafka 已经发展到包含所有类似数据库的属性,特别是原子性、一致性、隔离性和持久性 (ACID)。虽然许多人使用 Kafka 只存储最近的数据,但 Kafka 实际上具有无限保留性,类似于现代数据湖。这种功能使 Kafka 成为存储大量数据的有吸引力的选择。

分层存储:人们犹豫是否使用 Kafka 存储长期数据的一个关键原因是认为 Kafka 是基于高性能机器的,其使用价格昂贵。但这已经是曾经的事实,Kafka 的经典设计需要将数据存储在计算实例中,这可能比对象存储或HDFS存储昂贵得多。然而,这种情况已经改变。Confluence 构建的最新版本 Kafka以及Redpanda和Apache Pulsar等其他流行的事件流平台都采用了分层存储,将冷数据存储在廉价的对象存储中,从而降低了成本并使得持久数据成为可能。这种新设计使 Kafka 适合以低成本存储大量数据,而无需担心可扩展性。

存储实时数据:虽然许多人使用数据湖来存储历史数据,但现代数据湖正在不断发展并变得越来越实时,例如越来越多的人使用数据湖来支持流批一体的能力。这种演变是自然的,因为现代应用程序和设备可以连续生成大量数据。因此,数据湖正在实施优化以允许实时提取数据。作为一个事件流平台,Kafka 本质上支持实时数据摄取。其架构非常适合存储快速移动的实时数据和缓慢移动的历史数据。

存储不同类型的数据:Kafka 可以处理多种数据类型,从关系数据等结构化数据,到 JSON 和 Avro 等半结构化数据,甚至文本文档、图像和视频等非结构化数据(尽管不常见)。这种多功能性在当今多样化的数据环境中至关重要,它使 Kafka 能够充当组织所有数据的集中存储库,从而降低管理多个存储解决方案的复杂性和开销。

二、Kafka适合成为新的数据湖吗?

Kafka 拥有数据湖的所有属性,但 Kafka 是否有潜力成为生产中的新数据湖?

这里有支持这个观点的理由:

作为Data Source:许多业务直接将数据提取到 Kafka 中,然后再将其传输到数据仓库或其他存储系统中。如果使用Kafka作为永久保留数据的数据湖,就消除了在不同系统之间重新定位数据的必要性。消除数据移动不仅可以降低成本,还可以最大限度地减少数据不一致和丢失的可能性。

单一事实来源:利用 Kafka 作为数据湖意味着它可以作为整个组织真正的单一事实来源。数据不一致的发生是因为人们转换数据。但如果我们使用数据源作为数据目的地,那么我们就不会遇到任何数据不一致的问题。此外,这种方法通过减少需要维护、同步和集成的系统数量,显着简化了数据架构,从而使基础设施更易于管理、更不易出错且更具成本效益。

丰富的生态系统:Kafka 拥有非常丰富且强大的生态系统,用于从各种数据源获取数据,并且大多数计算引擎可以轻松使用来自 Kafka 的数据。这种灵活性极大地促进了 Kafka 与现有系统和工作流程的集成,从而减少了采用 Kafka 作为数据湖所需的工作量和复杂性。此外,Kafka 的功能不仅仅限于数据摄取和存储。它还本身提供轻量级流处理功能(通过Kafka Streams),这意味着数据可以在摄取时实时处理。对于需要实时分析和决策能力的组织来说,这是一个显著的优势。

三、Kafka能取代现有的数据湖组件吗?

首先我的答案是否定的,至少在不久的将来不会。

尽管 Kafka 能够存储实时和历史数据,但这并不意味着它将取代广泛使用的数据湖管理组件,如 Apache Iceberg、Apache Hudi 和 Delta Lake。

这些数据湖管理框架针对大规模数据存储进行了优化,同时保持了 ACID 属性。从功能上来说,Kafka 尚未整合关键功能,例如用于压缩的数据类型感知、对查询下推的支持以及对更新和插入的支持,对列式数据的支持,这使得它在提供历史数据方面的吸引力较低。

近期可能采用的架构是利用Kafka作为统一的读写接口,将热数据和温数据存储在Kafka中。然后,冷数据可以在用户不知情的情况下透明地从 Kafka 逐步过渡到 Iceberg/Hudi/Delta。

这种方法利用了 Kafka 和现有数据湖的优势。用户可以直接调用Kafka API继续读写数据,无需考虑底层结构和数据格式。这意味着底层数据转换和存储机制的复杂性被从最终用户手中抽象出来,简化了他们与系统的交互。

四、使用 Kafka 构建流数据 Lakehouse

Lakehouse融合了数据湖和数据仓库功能,它提供了一个统一的平台,可以处理大量结构化和非结构化数据,并支持高级分析和机器学习。

随着Kafka演变成一个新的数据湖,本质上可以构建一个可以存储和处理实时数据和历史数据的“流式的Lakehouse”。

在 Kafka 之上构建流数据 Lakehouse 至少需要两个关键组件:

流处理系统。第一个基本组件是流处理系统,例如Apache Flink,Spark Streaming。这些系统旨在处理存储在 Kafka 中的实时数据流,使企业能够通过分析生成的数据来做出更快、更明智的决策。

实时分析引擎。第二个关键组件是实时分析引擎,例如 Apache Spark、Trino 或 ClickHouse。这些引擎旨在分析处理后的数据、提供见解并促进决策。它们能够以低延迟处理大量数据,这使得它们非常适合基于 Kafka 构建的流数据 Lakehouse 架构。

Kafka 正在成为新一代数据湖?

通过将 Kafka 与强大的流处理系统和强大的实时分析引擎相结合,企业可以创建能够处理现代数据处理和分析需求的流数据 Lakehouse 架构。

该架构使组织能够最大限度地发挥数据的价值,提供实时洞察,从而推动更好的决策并创造竞争优势。

五、Kafka成为真正数据湖还需提供的能力

虽然 Kafka 非常强大且用途广泛,但如果 Kafka 真正演变成一个数据湖,那么还有一些需要改进的地方。

压缩的数据类型感知。目前,Kafka 将数据视为字节数组,不知道数据的实际结构和类型。这种意识的缺乏意味着 Kafka 执行的压缩是通用的,并且不如理解数据结构时的效率高。如果 Kafka 能够了解它正在处理的数据类型,它就可以更有效地执行数据压缩。这一改进将通过最大限度地减少需要传输和处理的数据量来降低存储需求并优化分析查询的性能。

支持查询下推。查询下推是一种将查询的部分内容(例如过滤器)下推到存储层的技术,从而实现更高效的数据检索和处理。目前,Kafka不支持查询下推,这意味着所有数据都需要加载到内存中并进行处理,即使只需要一小部分数据。如果 Kafka 能够支持查询下推,那么它将通过减少需要加载到内存和处理的数据量来提高分析查询的性能。

支持更新和删除。目前,Kafka 被设计为仅追加日志,虽然有处理更新和删除的解决方法,但它们并不像传统数据库那样简单和高效。如果Kafka能够原生支持更新和删除操作,那么数据维护将会变得更加简单和高效。它还将使 Kafka 成为一个更完整、更通用的数据存储解决方案,从而提高其作为数据湖的适用性。对于许多组织来说,这一新增功能将改变游戏规则,简化其数据架构并减少与数据维护相关的开销。

结论

如果Kafka完成了数据湖能力的支持,那么对于整个数据产品来说就是一次整合和变革,将根本性缩短现有的数据处理链路,同时可以统一数据源,减少数据产品间的转换适配等成本。

Kafka天生的“流式底子”能力,也正代表了现代数据架构的转变,加上流处理系统和实时分析引擎,使其成为构建流式湖仓一体架构的坚实基础。此外,它对数据持久化的支持、以及作为单一事实来源的能力和丰富的生态系统进一步巩固了其作为可行的数据湖选项的地位。

我是希望数据下层组件们最好能够统一下,不同特定领域数据存储数据引擎事实上本身是有很多共通点的。当前不同数据组件间数据的共享已然成为很大的成本项,也造成了体验感差的问题。最后让我们看看Kafka和其他事件流平台在不久的将的发展,是否可以实现简单统一的数据源平台框架。



Tags:Kafka   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  Search: Kafka  点击:(84)  评论:(0)  加入收藏
如何使用Python、Apache Kafka和云平台构建健壮的实时数据管道
译者 | 李睿审校 | 重楼在当今竞争激烈的市场环境中,为了生存和发展,企业必须能够实时收集、处理和响应数据。无论是检测欺诈、个性化用户体验还是监控系统,现在都需要接近即时...【详细内容】
2024-01-26  Search: Kafka  点击:(46)  评论:(0)  加入收藏
深入浅出Kafka:高可用、顺序消费及幂等性
在我们旅行于数据海洋的途中,如果把 Kafka 比作是一艘承载无数信息航行的快船,前文《Kafka实战漫谈:大数据领域的不败王者》已经讲述了如何搭建起这艘快船,让它在起风的早晨开始...【详细内容】
2023-12-18  Search: Kafka  点击:(172)  评论:(0)  加入收藏
7k Star,一款开源的 Kafka 管理平台,功能齐全、页面美观!
Apache Kafka UI 是一个免费的开源 Web UI,用于监控和管理 Apache Kafka 集群,可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情况,支持多集群管理、性能监控、访问控...【详细内容】
2023-12-15  Search: Kafka  点击:(128)  评论:(0)  加入收藏
利用Apache Kafka、Flink和Druid构建实时数据架构
译者 | 陈峻审校 | 重楼如今,对于使用批处理工作流程的数据团队而言,要满足业务的实时要求并非易事。从数据的交付、处理到分析,整个批处理工作流往往需要大量的等待,其中包括:等...【详细内容】
2023-12-11  Search: Kafka  点击:(227)  评论:(0)  加入收藏
运维兄弟!Kafka怎么又"超时"了?
现象凌晨,当运维刚躺下,就被业务研发的电话叫醒,"哥们!kafka服务又异常了?影响到业务了,快看看",业务研发给出的异常日志如下:基本分析 集群检查:立即确认kafka集群以及涉及到topic健...【详细内容】
2023-12-07  Search: Kafka  点击:(137)  评论:(0)  加入收藏
图解Kafka适用场景,全网最全!
消息系统消息系统被用于各种场景,如解耦数据生产者,缓存未处理的消息。Kafka 可作为传统的消息系统的替代者,与传统消息系统相比,kafka有更好的吞吐量、更好的可用性,这有利于处...【详细内容】
2023-11-29  Search: Kafka  点击:(182)  评论:(0)  加入收藏
Kafka有哪些应用场景?你能说上来几个?
下面我们来总结一下Kafka的一些应用场景:1、日志处理与分析(最常用的场景)下图显示了典型的 ELK(Elastic-Logstash-Kibana)堆栈。Kafka 有效地从每个实例收集日志流。ElasticSe...【详细内容】
2023-11-28  Search: Kafka  点击:(162)  评论:(0)  加入收藏
Kafka:解锁大数据时代的搜索与分析
在当今大数据时代,数据湖作为一种新兴的数据存储和分析解决方案,正受到越来越多企业的青睐。而作为一种高性能、可扩展的事件流平台,Kafka在数据湖领域发挥着重要的作用。本文...【详细内容】
2023-11-24  Search: Kafka  点击:(286)  评论:(0)  加入收藏
解密Kafka主题的分区策略:提升实时数据处理的关键
Kafka几乎是当今时代背景下数据管道的首选,无论你是做后端开发、还是大数据开发,对它可能都不陌生。开源软件Kafka的应用越来越广泛。面对Kafka的普及和学习热潮,哪吒想分享一...【详细内容】
2023-11-21  Search: Kafka  点击:(179)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(4)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(3)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(13)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(12)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(6)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(13)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(5)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(4)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(25)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(19)  评论:(0)  加入收藏
站内最新
站内热门
站内头条