Apache Flink是一个支持有边界的和无边界的数据流的有状态计算的框架。因为很多流式应用被设计成在最短的停机时间内持续运行,所以一个流式处理器必须提供卓越的失败恢复能力,同时提供工具在应用运行的时候监控和维护他们。
Flink非常关注流式处理的操作方面。下面,我们说明一下Flink的失败恢复机制并且列出他的管理和监控运行程序的特性。
一、 24/7不间断地运行你的应用
机器和处理失败在分布式系统中是非常常见的。为了可以七天二十四小时(24/7)的运行流式应用,像Flink这样的分布式流式处理器必须能够从失败中恢复。很明显,这意味着不仅仅是在失败以后重启嘤嘤,同时也要保证它内部状态的持续性,也就是说应用就好像什么也没有发生一样的运行。
Flink提供了几个特性来保证应用保持运行并且保持一致性:
- 一致的检查点(Consistent Checkpoints):Flink的恢复机制是基于应用的状态的一致性检查点。万一发生了失败,应用会重启并且它的状态会从最近的检查点中恢复。
- 高效的检查点(Efficient Checkpoints):如果应用管理TB的状态信息,那么该应用的状态检查点将是非常昂贵的。Flink可以执行异步的增量检查点,这样是为了使服务的应用等级协议(SLAs)延迟非常小。
- 端到端的仅仅一次(End-to-End Exactly-Once):Flink 针对特定的存储系统提供了支持事务的sink以保证数据仅仅被写一次,即使是在失败的情况下。
- 与集群管理器集成(Integration with Cluster Managers):Flink与集群管理器紧密集成,比如Hadoop Yarn, Mesos 或者Kubernetes。当一个进程失败的时候,另一个进程会自动的启动并且接管他的工作。
- 高可用的设置(High-Availability Setup):Flink提供了一种高可用性模式,可以消除所有的单点故障。高可用性模式是基于Apache Zookeeper的,它为可靠地分布式协调提供了久经考验的服务。
二、更新、迁移、暂停以及重启你的应用
支持关键业务的流式应用需要被维护。bug需要被修复,改进或者新功能需要被实现。然而,更新一个有状态的流式应用,并不是简单的。经常来说我们并不能简单的停止应用并且重启一个已修复的或者改进的版本,因为我们不能失去应用的状态。
Flink的SavePoints是惟一的并且非常强大的特性,它可以解决更新有状态的应用的问题以及相关的挑战。保存点是一个应用状态的连续快照,因此它与检查点非常类似。然而与检查点相比,保存点需要手动的触发,并且当应用停止以后不会自动的移除。保存点可以用来启动状态兼容的应用并且初始化它的状态。保存点支持以下特性:
- 应用升级(Application Evolution):保存点可以被用于升级应用。应用的修复bug或者升级的版本可以从保存点重启,保存点是来源于这个应用的先前版本。它也可以从更早的保存点来启动应用(假如这样的保存点存在的话),这样可以用来修复有缺陷的版本产生的结果。
- 集群迁移(Cluster Migration):使用保存点,应用可以迁移或者克隆岛不同的集群。
- Flink 版本更新(Flink Version Updates):使用保存点,可以把一个应用迁移到新的Flink版本运行。
- A/B测试以及假定场景(A/B Test And What-If Scenarios):同一个应用的两个(或者更多)不同版本的性能或者质量可以通过从相同的保存点来启动所有的版本进行比较。
- 暂停和重启(Pause and Resume):可以通过产生保存点然后停止来暂停应用。在随后的任意时间,这个应用可以通过这个保存点来重启。
- 归档(Archiving):保存点可以被归档,这样可以重置应用的状态到更早的时间点。
三、监控和控制你的应用
正如其他服务一样,持续运行的流式应用需要被监控并且集成到一个组织的基础的操作中去,比如监控和日志服务。监控有助于预测问题并且提前做出反应。日志有助于在研究失败时进行根本问题分析。最后,控制运行的应用的简单访问的接口是重要的特性。
Flink与许多常见的日志和监控服务集成的很好,并且提供了REST API来控制应用和查询信息。
- Web UI:Flink提供了web UI来检查、监控和调试运行的应用。它也可以用于提交执行或者取消他们的执行操作。
- Logging:Flink 实现了流行的slf4j日直接扣并且与日志框架log4j或者logback相集成。
- Metrics:Flink 提供了一套复杂的指标系统来收集和报告系统和用户定义的指标。指标可以被导出到不同的报告,比如JMX、Ganglia、Graphite、 Prometheus、 StatsD、 Datadog以及 Slf4j。
- REST API:Flink 提交了REST API来提交一个新的应用,产生一个正在运行的应用的保存点,或者取消(cancel)应用。REST API也用来披露元数据(meta data)以及收集运行中或者已完成的应用的指标。
相关推荐
在这个“flink 操作iceberg 的示例代码”中,我们将探讨如何将 Flink 与 Iceberg 结合,实现数据的读写以及元数据管理。 首先,让我们了解 Flink 与 Iceberg 的集成。Flink 提供了对 Iceberg 的原生支持,允许用户...
《Flink操作Doris实战详解》 在大数据处理领域,Apache Flink与Doris的结合应用日益受到关注。本教程将深入探讨如何使用Java API在Flink中操作Doris,帮助开发者实现高效的数据分析和实时处理任务。 1. **Apache ...
3. **Flink操作符**: - **Transformation**:如map、filter、keyBy、join等,用于转换数据流。 - **Sink**:数据流的终点,将处理结果输出到指定位置,如文件系统、数据库或消息队列。 - **Source**:数据流的...
实现flinksql 操作clickhouse基本的增删改查。 jar包含: 1、clickhouse-jdbc-0.3.1.jar 2、flink-connector-clickhouse-1.16.0-SNAPSHOT.jar 3、flink-table-common-1.16.0.jar 4、guava-31.0.1-jre.jar flink ...
使用Flink操作Paimon 数据湖 时需要用到的jar包。
Flink客户端操作是Flink用户与Flink集群交互的主要途径,通过客户端操作可以提交、管理和监控Flink作业。 首先,Flink客户端操作包含各种命令,它们允许用户从命令行与Flink集群进行交互。Flink的命令行工具提供了...
Apache Flink 实践操作 Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink 被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。 一、Flink 框架 API ...
Flink SQL大数据项目实战课程以FlinkSQL流批一体技术为主线,全面讲解Flink Table编程、SQL编程、Time与WaterMark、Window操作、函数使用、元数据管理,最后以一个完整的实战项目为例,详细讲解FlinkSQL的流式项目...
flink13.2 操作clickhouse 所需要的jar 包 以及自定义flink 连接clickhouse 的驱动包 主要是 flink-connector-clickhouse-22.07.11.jar
Flink 的 API 层次提供了数据处理的基本操作:各种数据转化、分组、开窗、状态编程等等。 Flink 是一个功能强大的大数据处理框架,具有批流一体、高容错、高吞吐、低延迟、大规模计算、多平台部署等核心特点。Flink...
例如,你可以找到一个简单的WordCount示例,它展示了如何使用Flink读取文本数据,通过Split和flatMap操作将文本拆分成单词,然后使用KeyBy和Reduce操作对每个单词进行计数。 Flink的另一大亮点是其状态管理和检查点...
FlinkSql之Table操作1 FlinkSql是 Apache Flink 的一个SQL解析引擎,它提供了对结构化数据的查询、转换和分析能力。Table是FlinkSql中的一种核心概念,表示的是一个结构化的数据集。在本篇文章中,我们将详细介绍...
这个连接器使得Flink可以监听MySQL数据库的变化,将DML操作(如INSERT, UPDATE, DELETE)转换为事件流,然后传递给Flink作业进行处理。 2. "flink-sql-connector-elasticsearch7_2.12-1.13.6.jar":这是Flink SQL ...
【标题】中的“管理系统系列--给flink开发的web系统”指的是一个专为Apache Flink设计的Web应用程序,它的目标是提供一个用户...对于希望简化Flink操作流程,提升团队协作效率的组织来说,这是一个极具价值的解决方案。
Flink 的核心实现基于操作符的连续流模型。 计算模型 Spark 采用了微批处理模型,对数据进行小批量处理。这种模型可以提供高性能的批处理能力,但是在流式处理方面存在一定的延迟。Flink 则采用了流式处理模型,...
总之,Flink 1.15.2 是一个强大的流处理框架,提供了一系列高级特性,包括高效的状态管理、灵活的窗口操作、丰富的数据源和接收器,以及易用的 SQL 支持。通过深入理解这些概念和操作,开发者能够充分利用 Flink ...
Flink SQL支持标准的SQL语法,并且通过Table API提供了丰富的函数和操作符,包括聚合、窗口、连接等。 **RabbitMQ** 是基于AMQP(Advanced Message Queuing Protocol)协议的消息代理,能够可靠地路由和存储消息。...
4. **时间窗口**:Flink提供了滑动窗口、会话窗口、 tumbling窗口等多种窗口机制,用于处理基于时间的聚合操作。 5. **事件时间与处理时间**:Flink允许用户根据事件时间进行处理,这在处理乱序事件时尤为重要。 *...
所有涉及Flink操作的人员都应接受安全意识培训,理解加密工作模式的优缺点,了解最新的威胁动态,以便在日常工作中作出正确的决策,防止因人为错误导致的安全风险。 综上所述,理解和正确应用分组密码工作模式是...