精华内容
下载资源
问答
  • flink技术框架分享.zip

    2019-11-26 21:13:34
    flink框架,采用flink原生框架,集成了mybatis、spring等技术,本框架主要是消费kafka消息,对大数据量的数据进行实时入库。
  • Flink运行框架

    2021-01-23 11:56:12
    Flink集群采用Mater-Slave架构,Master的角色是JobManager,负责集群和作业管理,Slave的角色是TaskManager,负责执行计算任务。除此之外,Flink还提供了客户端来管理集群和提交任务,其中JobManager和TaskManager是...

    Flink集群采用Mater-Slave架构,Master的角色是JobManager,负责集群和作业管理,Slave的角色是TaskManager,负责执行计算任务。除此之外,Flink还提供了客户端来管理集群和提交任务,其中JobManager和TaskManager是集群的进程,Flink客户端是在集群外部执行的进程,不是集群的一部分。

    1.Flink客户端

    Flink客户端是Flink提供的CLI命令行工具,用来提交Flink作业到Flink集群,在客户端中负责Stream Graph(流图)和Job Graph(作业图)的构建。

    2.JobManager

    JobManager根据并行度将Flink客户端提交的Flink应用分解为子任务,从资源管理器申请所需的计算资源,资源具备之后,开始分发任务到TaskManager执行Task,并负责应用容错,跟踪作业的执行状态,发现异常则恢复作业等。

    JobManager里面有三个组件:

    1)ResourceManager  (flink自己的)

    主要负责管理任务管理器(TaskManager)的插槽(slot),TaskManger插槽是Flink中定义的处理资源单元。(事实上ResourceManager里面还有SlotManager)

    2) Dispatcher

    负责接收用户提供的作业,并且负责为这个新提交的作业启动一个新的JobManager 组件

    3) JobMaster

    JobMaster负责管理单个JobGraph的执行.多个Job可以同时运行在一个Flink集群中, 每个Job都有一个自己的JobMaster.

    3.TaskManager

    TaskManager接收JobManager分发的子任务,根据自身的资源情况,管理子任务的启动,停止,销毁,异常恢复等生命周期阶段。
      在这里插入图片描述

    展开全文
  • Flink是一个分布式数据流处理引擎,用于处理带状态的有边界或无边界数据流。可以部署在通用的分布式集群上,实现海量数据在内存上快速计算。 无边界数据流:数据有产生标志但是没有结束标志。数据持续产生,因此...

    目录

     

    架构

    应用

    状态

    时间

    分层API

     运维


    架构

    Flink是一个分布式数据流处理引擎,用于处理带状态的有边界或无边界数据流。可以部署在通用的分布式集群上,实现海量数据在内存上快速计算。

    无边界数据流:数据有产生标志但是没有结束标志。数据持续产生,因此需要连续地处理,只能通过一定的方法根据事件的产生和结束进行分割处理。

    有边界数据流:数据可以明确的产生开始和结束标志,处理时一般不需要顺序处理,因为有边界数据流一般是按顺序产生的,可以用批处理的方法进行处理。

     

      Flink通过精确的控制状态和时间实现对无边界数据流的处理;通过内部处理算法和数据结构,灵活控制固定数据集的大小实现对有边界数据流的处理。

      Flink 是分布式系统,运行时需要计算资源,可以部署在Hadoop YARN, Apache Mesos, Kubernetes上,同时也可以以standalone的方式单独部署。

    有状态Flink应用程序针对本地状态访问进行了优化。 任务状态始终保持在内存中,或者,如果状态大小超出可用内存,则始终保持在访问有效的磁盘数据结构中。 因此,任务通过访问本地(通常在内存中)状态执行所有计算,从而产生非常低的处理延迟。 Flink通过定期将本地状态异步指向持久性存储来确保出现故障时一次状态的一致性。

     

     

    应用

    Flink是用于无限制和有限制的数据流上的有状态计算的框架。 Flink在不同的抽象级别提供了多个API,并为常见用例提供了专用的库。以下描述数据流处理中基本的术语定义

    流是流处理的基本方面。 但是,流可能具有不同的特性,这些特性会影响流的处理方式。 Flink是一个通用的处理框架,可以处理任何类型的流。如有边界或无边界流,实时流和记录

    状态

    每个非普通的流应用程序都是有状态的,即,仅对各个事件应用转换的应用程序不需要状态。 任何运行基本业务逻辑的应用程序都需要记住事件或中间结果,以便在以后的某个时间点访问它们,例如,在收到下一个事件时或在特定的持续时间之后。

    应用程序状态是Flink中的一等公民。 通过查看Flink在状态处理上下文中提供的所有功能,您可以看到这一点。

    多个状态原语:Flink为不同的数据结构(例如原子值,列表或映射)提供状态原语。开发人员可以根据功能的访问模式选择最有效的状态原语。

    可插拔状态后端:在可插拔状态后端中管理应用程序状态,并由该点检查点。 Flink具有不同的状态后端,这些后端将状态存储在内存或RocksDB(一种高效的嵌入式磁盘数据存储)中。自定义状态后端也可以插入。

    严格一次状态一致性:Flink的检查点和恢复算法可确保发生故障时应用程序状态的一致性。因此,可以透明地处理故障,并且不会影响应用程序的正确性。

    非常大状态:Flink由于具有异步和增量检查点算法,因此能够保持大小为数TB的应用程序状态。

    可扩展的应用程序:Flink通过将状态重新分配给更多或更少的工作程序来支持有状态应用程序的扩展。

     

    时间

    时间是流应用程序的另一个重要组成部分。大多数事件流具有固有的时间语义,因为每个事件都是在特定的时间点产生的。此外,许多常见的流计算都是基于时间的,例如窗口聚合,会话化,模式检测和基于时间的联接。流处理的一个重要方面是应用程序如何测量时间,即事件时间与处理时间之差。

    Flink提供了一组丰富的与时间相关的功能。

    事件时间模式:使用事件时间语义处理流的应用程序根据事件的时间戳计算结果。因此,无论是处理记录的事件还是实时事件,事件时间处理都可以提供准确一致的结果。

    水印支持:Flink在事件时间应用程序中使用水印推理时间。水印还是一种权衡结果的延迟和完整性的灵活机制。

    后期数据处理:在带有水印的事件时间模式下处理流时,可能会发生所有相关事件到达之前已经完成计算的情况。这种事件称为迟发事件。 Flink具有多个选项来处理较晚的事件,例如通过侧面输出重新路由它们并更新先前完成的结果。

    处理时间模式:除事件时间模式外,Flink还支持处理时间语义,该语义执行由处理机的挂钟时间触发的计算。处理时间模式可能适合具有严格的低延迟要求的某些应用程序,这些应用程序可以忍受近似结果。

    分层API

    Flink提供了三层API。 每个API在简洁性和表达性之间提供了不同的权衡,并且针对不同的用例。

     

    1、过程函数(The ProcessFunctions):

    ProcessFunctions是Flink提供的最具表现力的功能接口。 Flink提供ProcessFunctions来处理来自一个或两个输入流或在一个窗口中分组的事件的单个事件。 ProcessFunctions提供对时间和状态的细粒度控制。 ProcessFunction可以任意修改其状态并注册计时器,这些计时器将来会触发回调函数。 因此,ProcessFunctions可以根据许多有状态事件驱动的应用程序的需要,实现复杂的每事件业务逻辑。

    2、DataStream API

    DataStream API 为许多通用的流处理操作提供了处理原语。这些操作包括窗口、逐条记录的转换操作,在处理事件时进行外部数据库查询等。DataStream API 支持 Java 和 Scala 语言,预先定义了例如map()、reduce()、aggregate() 等函数。你可以通过扩展实现预定义接口或使用 Java、Scala 的 lambda 表达式实现自定义的函数。

    3、SQL & Table API

    Flink 支持两种关系型的 API,Table API 和 SQL。这两个 API 都是批处理和流处理统一的 API,这意味着在无边界的实时数据流和有边界的历史记录数据流上,关系型 API 会以相同的语义执行查询,并产生相同的结果。Table API 和 SQL 借助了 Apache Calcite 来进行查询的解析,校验以及优化。它们可以与 DataStream 和 DataSet API 无缝集成,并支持用户自定义的标量函数,聚合函数以及表值函数。

    4、库

    Flink 具有数个适用于常见数据处理应用场景的扩展库。这些库通常嵌入在 API 中,且并不完全独立于其它 API。它们也因此可以受益于 API 的所有特性,并与其他库集成。

    复杂事件处理(CEP):模式检测是事件流处理中的一个非常常见的用例。Flink 的 CEP 库提供了 API,使用户能够以例如正则表达式或状态机的方式指定事件模式。CEP 库与 Flink 的 DataStream API 集成,以便在 DataStream 上评估模式。CEP 库的应用包括网络入侵检测,业务流程监控和欺诈检测。

    DataSet API:DataSet API 是 Flink 用于批处理应用程序的核心 API。DataSet API 所提供的基础算子包括map、reduce、(outer) join、co-group、iterate等。所有算子都有相应的算法和数据结构支持,对内存中的序列化数据进行操作。如果数据大小超过预留内存,则过量数据将存储到磁盘。Flink 的 DataSet API 的数据处理算法借鉴了传统数据库算法的实现,例如混合散列连接(hybrid hash-join)和外部归并排序(external merge-sort)。

    Gelly: Gelly 是一个可扩展的图形处理和分析库。Gelly 是在 DataSet API 之上实现的,并与 DataSet API 集成。因此,它能够受益于其可扩展且健壮的操作符。Gelly 提供了内置算法,如 label propagation、triangle enumeration 和 page rank 算法,也提供了一个简化自定义图算法实现的 Graph API。

     运维

    1、7 * 24小时稳定运行

    在分布式系统中,服务故障是常有的事,为了保证服务能够7*24小时稳定运行,像Flink这样的流处理器故障恢复机制是必须要有的。显然这就意味着,它(这类流处理器)不仅要能在服务出现故障时候能够重启服务,而且还要当故障发生时,保证能够持久化服务内部各个组件的当前状态,只有这样才能保证在故障恢复时候,服务能够继续正常运行,好像故障就没有发生过一样。

    Flink通过几下多种机制维护应用可持续运行及其一致性:

    检查点的一致性: Flink的故障恢复机制是通过建立分布式应用服务状态一致性检查点实现的,当有故障产生时,应用服务会重启后,再重新加载上一次成功备份的状态检查点信息。结合可重放的数据源,该特性可保证精确一次(exactly-once)的状态一致性。

    高效的检查点: 如果一个应用要维护一个TB级的状态信息,对此应用的状态建立检查点服务的资源开销是很高的,为了减小因检查点服务对应用的延迟性(SLAs服务等级协议)的影响,Flink采用异步及增量的方式构建检查点服务。

    端到端的精确一次: Flink 为某些特定的存储支持了事务型输出的功能,及时在发生故障的情况下,也能够保证精确一次的输出。

    集成多种集群管理服务: Flink已与多种集群管理服务紧密集成,如 Hadoop YARN, Mesos, 以及 Kubernetes。当集群中某个流程任务失败后,一个新的流程服务会自动启动并替代它继续执行。

    内置高可用服务: Flink内置了为解决单点故障问题的高可用性服务模块,此模块是基于Apache ZooKeeper 技术实现的,Apache ZooKeeper是一种可靠的、交互式的、分布式协调服务组件

    2、Flink能够更方便地升级、迁移、暂停、恢复应用服务

    驱动关键业务服务的流应用是经常需要维护的。比如需要修复系统漏洞,改进功能,或开发新功能。然而升级一个有状态的流应用并不是简单的事情,因为在我们为了升级一个改进后版本而简单停止当前流应用并重启时,我们还不能丢失掉当前流应用的所处于的状态信息。

    而Flink的Savepoint 服务就是为解决升级服务过程中记录流应用状态信息及其相关难题而产生的一种唯一的、强大的组件。一个 Savepoint,就是一个应用服务状态的一致性快照,因此其与checkpoint组件的很相似,但是与checkpoint相比,Savepoint 需要手动触发启动,而且当流应用服务停止时,它并不会自动删除。Savepoint 常被应用于启动一个已含有状态的流服务,并初始化其(备份时)状态。Savepoint 有以下特点:

    便于升级应用服务版本: Savepoint 常在应用版本升级时使用,当前应用的新版本更新升级时,可以根据上一个版本程序记录的 Savepoint 内的服务状态信息来重启服务。它也可能会使用更早的 Savepoint 还原点来重启服务,以便于修复由于有缺陷的程序版本导致的不正确的程序运行结果。

    方便集群服务移植: 通过使用 Savepoint,流服务应用可以自由的在不同集群中迁移部署。

    方便Flink版本升级: 通过使用 Savepoint,可以使应用服务在升级Flink时,更加安全便捷。

    增加应用并行服务的扩展性: Savepoint 也常在增加或减少应用服务集群的并行度时使用。

    便于A/B测试及假设分析场景对比结果: 通过把同一应用在使用不同版本的应用程序,基于同一个 Savepoint 还原点启动服务时,可以测试对比2个或多个版本程序的性能及服务质量。

    暂停和恢复服务: 一个应用服务可以在新建一个 Savepoint 后再停止服务,以便于后面任何时间点再根据这个实时刷新的 Savepoint 还原点进行恢复服务。

    归档服务: Savepoint 还提供还原点的归档服务,以便于用户能够指定时间点的 Savepoint 的服务数据进行重置应用服务的状态,进行恢复服务

    3、监控和控制应用服务

    如其它应用服务一样,持续运行的流应用服务也需要监控及集成到一些基础设施资源管理服务中,例如一个组件的监控服务及日志服务等。监控服务有助于预测问题并提前做出反应,日志服务提供日志记录能够帮助追踪、调查、分析故障发生的根本原因。最后,便捷易用的访问控制应用服务运行的接口也是Flink的一个重要的亮点特征。

    Flink与许多常见的日志记录和监视服务集成得很好,并提供了一个REST API来控制应用服务和查询应用信息。具体表现如下:

    Web UI方式: Flink提供了一个web UI来观察、监视和调试正在运行的应用服务。并且还可以执行或取消组件或任务的执行。

    日志集成服务:Flink实现了流行的slf4j日志接口,并与日志框架log4j或logback集成。

    指标服务: Flink提供了一个复杂的度量系统来收集和报告系统和用户定义的度量指标信息。度量信息可以导出到多个报表组件服务,包括 JMX, Ganglia, Graphite, Prometheus, StatsD, Datadog, 和 Slf4j.

    标准的WEB REST API接口服务: Flink提供多种REST API接口,有提交新应用程序、获取正在运行的应用程序的Savepoint服务信息、取消应用服务等接口。REST API还提供元数据信息和已采集的运行中或完成后的应用服务的指标信息。

    展开全文
  • 透过源码看懂Flink核心框架的执行流程.pdf透过源码看懂Flink核心框架的执行流程.pdf
  • 文章目录什么flink运行架构计算框架运行模式 什么flink 一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。 下载地址 ...

    什么是flink

    • 一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。
    • 下载地址

    运行架构

    • 计算架构:JobManager和TaskManger
      • JobManager主要负责调度task,协调checkpoint已经错误恢复等
      • TaskManger具体任务执行

    计算框架

    在这里插入图片描述

    • Flink SQL,原型是阿里2019开源 Blink代码。
      • Flink SQL定义sql语句,代码加载实现数据结构化和处理功能。
    • Table API:
      • 有source和sink概念,source是输入源,sink为输出源,代码有相关sql方法,无需定义sql语句
    • DataStream和DataSetAPI,纯代码实现计算,一个负责实时,一个服务批处理。

    运行模式

    • 资料
    • 三种模式
      • 模式一:Local(本地)模式
        • 本地主机计算
      • 模式二:Standalone(独立)模式
        • 无hadoop集群,flink自身集群运行。
      • on yarn模式
        • Yarn-session 模式
          • 预先在yarn上面划分一部分资源给flink集群用,flink提交的所有任务,共用这些资源
        • Single job 模式
          • 每次提交任务,都会创建一个新的flink集群
    展开全文
  • Flink 日志框架Flink 1.11 之前,Flink 使用的日志框架是 Log4j,配置信息在flink/conf/log4j.properties中。配置文件会将 JobManager 和 TaskManager 的日志分别打印在不同的文件中。Flink 1.11.1 版本对 UI ...

    Flink 日志框架

                Flink 1.11之前,Flink 使用的日志框架是 Log4j,配置信息在 flink/conf/log4j.properties 中。配置文件会将 JobManager 和 TaskManager 的日志分别打印在不同的文件中。Flink 1.11.1 版本对 UI 进行了优化,会将JobManager 和 TaskManager 的日志都打印在一个文件里面,但任务跑时间长的话,日志文件会非常大,查看日志页面时出现卡顿的情况,所以可以对 Flink 的日志做一个滚动的配置。如果想把日志信息实时存入到kafka,es等存储介质也是可以的,本文将详细介绍Flink日志的基本使用方式和滚动配置。

     Flink 1.11 之前

                   log4j.properties配置文件会将 JobManager 和 TaskManager 的日志分别打印在不同的文件中,每个文件的日志大小一直会增加,如果想配置日志文件按大小滚动的话可以使用 RollingFileAppender,则要将log4j.properties配置文件改成如下即可:

    展开全文
  • 这个是一个很好的flink框架,反正你们可以参考看一下,实现了陈及时编程
  • 追源索骥:透过源码看懂Flink核心框架的执行流程 不错的源码分析
  • 一、Flink中的状态 1)由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态; 2)可以认为状态就是一个本地变量,可以被任务的业务逻辑访问; 3)Flink会进行状态管理,包括状态一致性、...
  • 大数据实时流计算学习的可以稍微了解一下 追源索骥:透过源码看懂Flink核心框架的执行流程
  • Flink是一个开源的流式处理框架,它具有如下特点: 分布式: Flink 程序可以运行在多台机器上。 高性能: 处理性能比较高。 高可用: 由于Flink 程序本身是稳定的,因此它支持高可用性(High Availability,HA)。 准确:...
  • 资源为作者精心总结,包括flink框架介绍,使用场景,以及示例代码等
  • Flink框架基础原理

    2021-02-26 09:47:34
    Flink是分布式、高性能、随时可用、准确的流处理框架Flink是一个一个框架、分布式处理引擎,用于对无界和有界数据流进行有状态计算。 1.1 Flink特点 ①事件驱动型(Event-driven) 事件驱动型应用是一类具有状态...
  • Apache Flink是一种可以处理批处理任务的流处理框架。该技术可将批处理数据视作具备有限边界的数据流,借此将批处理任务作为流处理的子集加以处理。为所有处理任务采取流处理为先的方法会产生一系列有趣的副作用。 ...
  • 参考https://blog.csdn.net/lisenyeahyeah/article/details/100662367
  • 001FlinkFlink简介处理无界和有界数据部署应用到任意地方运行任意规模应用利用内存性能Flink架构图 Flink简介 SparkStreaming需要整合...Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进
  • 大数据教程,Flink框架教程,flink从入门到精通.pdf
  • 对于Flink中各个组件(JobMaster、TaskManager、Dispatcher等),其底层RPC框架基于Akka实现,本文着重分析Flink中的Rpc框架实现机制及梳理其通信流程。 2. Akka介绍 由于Flink底层Rpc是基于Akka实现,我们先了解...
  • Apache Flink 框架浅析

    2020-12-17 17:44:58
    这篇文章准备对Blink所基于的Apache社区开源产品--Flink的架构做一些浅显分析。 一:Flink历史、基本架构及分布式部署 历史 Flink项目最早开始于2010年由柏林技术大学、柏林洪堡大学、哈索普拉特纳研究所共同合作...
  • 大数据处理的相关技术框架,从Hadoop到Spark,Storm、Flink,在各个应用场景下,不同的技术框架,各自表现出来的性能优势也都不同。今天的Flink大数据开发分享,我们主要来分享一下Flink技术框架入门。 在Hadoop之后...
  • Apache Flink是一个面向数据流处理和批量数据处理的可分布式的开源计算框架,它基于同一个Flink流式执行模型(streaming execution model),能够支持流处理和批处理两种应用类型。由于流处理和批处理所提供的SLA...
  • flink-spector, Apache Flink单元测试框架 Flinkspector这个项目提供了一个框架来定义Apache数据流的单元测试。 框架在本地执行数据流并使用预定义的期望验证输出。功能包括:定义测试方案的简洁 DSL 。用于表达期望...
  • Flink大数据计算框架

    2019-09-02 21:37:37
    本文从flink基本概念、flink的特点有点开始介绍,并详细介绍了flink save point的应用,以及flink提交参数的设置及其含义。。。
  • Flink框架内部是自主进行内存管理的,其实现大量使用堆外内存,对开发者隐藏无论类型与逻辑类型的转换细节,Flink自己实现了一套TypeInformation,用于推断与转换数据类型,实现serializers以及comparators。...
  • reduce reduce是归并操作,它可以将KeyedStream 转变为 DataStream,实质...import org.apache.flink.api.common.functions.{RichFlatMapFunction, RichMapFunction, RichReduceFunction} import org.apache.flink....
  • Flink基本架构 standalone模式:主从式的架构 yarn模式 概述 Flink 整个系统主要由两个组件组成,分别为 JobManager 和 TaskManager,Flink 架构也遵循 Master - Slave 架构设计原则,JobManager 为 Master 节点,...
  • flink的技术分享,现在将我的ppt整理成文档:flink流式处理框架的架构与应用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,233
精华内容 6,493
关键字:

flink什么框架