【Flink】Flink 流处理和批处理

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 【1月更文挑战第26天】【Flink】Flink 流处理和批处理

数据处理有不同的方式。

对于具体应用来说,有些场景数据是一个一个来的,是一组有序的数据序列,我们把它叫 作“数据流”;而有些场景的数据,本身就是一批同时到来,是一个有限的数据集,这就是批量数据(有时也直接叫数据集)。

容易想到,处理数据流,当然应该“来一个就处理一个”,这种数据处理模式就叫作流处理;因为这种处理是即时的,所以也叫实时处理。与之对应,处理批量数据自然就应该一批读入、一起计算,这种方式就叫作批处理,也叫作离线处理。

那真实的应用场景中,到底是数据流更常见、还是批量数据更常见呢?

生活中,这两种形式的数据都有。比如我们日常发信息,可以一句一句地 说,也可以写一大段一起发过去。一句一句的信息,就是一个一个的数据,它们构成的序列就 是一个数据流;而一大段信息,是一组数据的集合,对应就是批量数据(数据集)。  

当然,有经验的人都会知道,一句一句地发,你一言我一语,有来有往这才叫聊天;一大 段信息直接砸过去,别人看着都眼晕,很容易就没下文了——如果是很重要的整篇内容(比如 表白信),写成文档或者邮件发过去可能效果会更好。  

所以我们看到,“聊天”这个生活场景,数据的生成、传递和接收处理,都是流式的;而 “写信”的场景,数据的生成尽管应该也是流式的(字总得一个个写),但我们可以把它们收集起来,统一传输、统一处理(当然我们还可以进一步较真:处理也是流式的,字得一个一个读)。 不论传输处理的方式是怎样的,数据的生成,一般都是流式的。

在IT应用场景中,这一点会体现得更加明显。企业的绝大多数应用程序,都是在不停地 接收用户请求、记录用户行为和系统日志,或者持续接收采集到的状态信息。所以数据会在不 同的时间持续生成,形成一个有序的数据序列——这就是典型的数据流。

所以流数据更真实地反映了我们的生活方式。真实场景中产生的,一般都是数据流。那处 理数据流,就一定要用流处理的方式吗?  

这个问题似乎问得有点无厘头。不过仔细一想就会发现,很多数据流的场景其实也可以用 “攒一批”的方式来处理。比如聊天,我们可以收到一条信息就回一条;也可以攒很多条一起 回复。对于应用程序,也可以把要处理的数据先收集齐,然后才一并处理。  

但是这样做的缺点也非常明显:数据处理不够及时,实时性变差了。流处理,是真正的即 时处理,没有“攒批”的等待时间,所以会更快、实时性更好。

另外,在批处理的过程中,必须有一个固定的时间节点结束“攒批”的过程、开始计算。 而数据流是连续不断、无休无止的,我们没有办法在某一时刻说:“好!现在收集齐所有数据 了,我们可以开始分析了。”如果我们需要实现“持续计算”,就必须采用流处理的方式,来处 理数据流。

很显然,对于流式数据,用流处理是最好、也最合理的方式。

但我们知道,传统的数据处理架构并不是这样。无论是关系型数据库、还是数据仓库,都 倾向于先“收集数据”,然后再进行处理。为什么不直接用流处理的方式呢?这是因为,分布 式批处理在架构上更容易实现。想想生活中发消息聊天的例子,我们就很容易理解了:如果来 一条消息就立即处理,“微信秒回”,这样做一定会很受人欢迎;但是这要求自己必须时刻关注 新消息,这会耗费大量精力,工作效率会受到很大影响。如果隔一段时间查一下新消息,做个 “批处理”,压力明显就小多了。当然,这样的代价就是可能无法及时处理有些消息,造成一定 的后果。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
6月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
773 5
|
5月前
|
监控 大数据 Java
使用Apache Flink进行大数据实时流处理
Apache Flink是开源流处理框架,擅长低延迟、高吞吐量实时数据流处理。本文深入解析Flink的核心概念、架构(包括客户端、作业管理器、任务管理器和数据源/接收器)和事件时间、窗口、状态管理等特性。通过实战代码展示Flink在词频统计中的应用,讨论其实战挑战与优化。Flink作为大数据处理的关键组件,将持续影响实时处理领域。
788 5
|
3月前
|
Java 关系型数据库 MySQL
实时计算 Flink版操作报错合集之在使用批处理模式中使用flat_aggregate函数时报错,该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
3月前
|
Java Spring 安全
Spring 框架邂逅 OAuth2:解锁现代应用安全认证的秘密武器,你准备好迎接变革了吗?
【8月更文挑战第31天】现代化应用的安全性至关重要,OAuth2 作为实现认证和授权的标准协议之一,被广泛采用。Spring 框架通过 Spring Security 提供了强大的 OAuth2 支持,简化了集成过程。本文将通过问答形式详细介绍如何在 Spring 应用中集成 OAuth2,包括 OAuth2 的基本概念、集成步骤及资源服务器保护方法。首先,需要在项目中添加 `spring-security-oauth2-client` 和 `spring-security-oauth2-resource-server` 依赖。
50 0
|
3月前
|
消息中间件 数据挖掘 Kafka
揭秘大数据时代的极速王者!Flink:颠覆性流处理引擎,让实时数据分析燃爆你的想象力!
【8月更文挑战第29天】Apache Flink 是一个高性能的分布式流处理框架,适用于高吞吐量和低延迟的实时数据处理。它采用统一执行引擎处理有界和无界数据流,具备精确状态管理和灵活窗口操作等特性。Flink 支持毫秒级处理和广泛生态集成,但学习曲线较陡峭,社区相对较小。通过实时日志分析示例,我们展示了如何利用 Flink 从 Kafka 中读取数据并进行词频统计,体现了其强大功能和灵活性。
67 0
|
3月前
|
监控 搜索推荐 数据挖掘
Flink流处理与批处理大揭秘:实时与离线,一文让你彻底解锁!
【8月更文挑战第24天】Apache Flink 是一款开源框架,擅长流处理与批处理。流处理专攻实时数据流,支持无限数据流及事件驱动应用,实现数据的连续输入与实时处理。批处理则聚焦于静态数据集,进行一次性处理。两者差异体现在处理方式与应用场景:流处理适合实时性要求高的场景(例如实时监控),而批处理更适用于离线数据分析任务(如数据挖掘)。通过提供的示例代码,读者可以直观理解两种模式的不同之处及其实际应用。
162 0
|
3月前
|
消息中间件 大数据 Kafka
Apache Flink 大揭秘:征服大数据实时流处理的神奇魔法,等你来解锁!
【8月更文挑战第5天】Apache Flink 是一款强大的开源大数据处理框架,专长于实时流处理。本教程通过两个示例引导你入门:一是计算数据流中元素的平均值;二是从 Kafka 中读取数据并实时处理。首先确保已安装配置好 Flink 和 Kafka 环境。第一个 Java 示例展示了如何创建流执行环境,生成数据流,利用 `flatMap` 转换数据,并使用 `keyBy` 和 `sum` 计算平均值。第二个示例则演示了如何设置 Kafka 消费者属性,并从 Kafka 主题读取数据。这两个示例为你提供了使用 Flink 进行实时流处理的基础。随着进一步学习,你将能应对更复杂的实时数据挑战。
65 0
|
4月前
|
消息中间件 Java Kafka
Java中的流处理框架:Kafka Streams与Flink
Java中的流处理框架:Kafka Streams与Flink
|
6月前
|
存储 算法 API
Flink DataStream API 批处理能力演进之路
本文由阿里云 Flink 团队郭伟杰老师撰写,旨在向 Flink Batch 社区用户介绍 Flink DataStream API 批处理能力的演进之路。
598 2
Flink DataStream API 批处理能力演进之路
|
6月前
|
SQL 大数据 数据处理
[AIGC大数据基础] Flink: 大数据流处理的未来
[AIGC大数据基础] Flink: 大数据流处理的未来

热门文章

最新文章