Flink 基础知识大补

Flink 概念(流处理和批处理)

  • 一个面向数据流处理和批量数据处理的可分布式的开源计算框架,它基于同一个Flink流式执行模型。能够支持流处理和批处理两种应用类型。
  • Flink在实现流处理和批处理时,与传统的一些方案完全不同,它从另一个视角看待流处理和批处理,将二者统一起来:Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。


Flink相关术语

  • 即使数据源是无序的或者晚到达的数据,也能保持结果准确性
  • 有状态并且容错,可以无缝的从失败中恢复,并可以保持exactly-once
  • 大规模分布式
  • Flink可以确保仅一次语义状态计算;Flink有状态意味着,程序可以保持已经处理过的数据;
  • Flink支持流处理和窗口事件时间语义,Flink支持灵活的基于时间窗口,计数,或会话数据驱动的窗户;
  • Flink容错是轻量级和在同一时间允许系统维持高吞吐率和提供仅一次的一致性保证,Flink从失败中恢复,零数据丢失;
  • Flink能够高吞吐量和低延迟;
  • Flink保存点提供版本控制机制,从而能够更新应用程序或再加工历史数据没有丢失并在最小的停机时间。


Flink 开发环境搭建和应用的配置、部署及运行

待补充,如需要,请留言

构建第一个 Flink 应用

待补充,如需要,请留言

Flink 应用及成熟案例

  • 复杂特性,但也有专门的操作符来有效地处理有界流。
  • 实时流和记录流:所有数据都作为流生成。有两种处理数据的方法。当流生成或将其持久化到存储系统(例如文件系统或对象存储)时实时处理,并在稍后处理。Flink应用程序可以处理记录或实时流。
  • 状态

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

应用程序状态是Apache Flink的一等公民。可以通过查看Flink在状态处理环境中提供的所有功能来查看。

  • 多状态基元(Multiple State Primitives):Flink为不同的数据结构提供状态基元,例如原子值,列表或映射。开发人员可以根据函数的访问模式选择最有效的状态原语。
  • 可插拔状态后端(Pluggable State Backends):应用程序状态由可插拔状态后端管理和检查点。Flink具有不同的状态后端,可以在内存或RocksDB中存储状态,RocksDB是一种高效的嵌入式磁盘数据存储。也可以插入自定义状态后端。
  • 完全一次的状态一致性(Exactly-once state consistency):Flink的检查点和恢复算法可确保在发生故障时应用程序状态的一致性。因此,故障是透明处理的,不会影响应用程序的正确性。
  • 非常大的状态(Very Large State):由于其异步和增量检查点算法,Flink能够维持几TB的应用程序状态。
  • 可扩展的应用程序(Scalable Applications):Flink通过将状态重新分配给更多或更少的工作人员来支持有状态应用程序的扩展。
  • 时间

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

  • 成熟案例
  • 美团点评实时数仓平台实践
  • 携程实时智能检测平台实践
  • 大规模准实时数据分析平台
  • 趣头条实时平台建设实践


spark、storm、flink吞吐量比较

  • spark是mirco-batch级别的计算,各种优化做的也很好,它的throughputs是最大的。但是需要提一下,有状态计算需要通过额外的rdd来维护状态,导致开销较大,对吞吐量影响也较大。
  • storm的容错机制需要对每条data进行ack,因此容错开销对throughputs影响巨大,throughputs下降甚至可以达到70%。storm trident是基于micro-batch实现的,throughput中等。
  • flink的容错机制较为轻量,对throughputs影响较小,而且拥有图和调度上的一些优化机制,使得flink可以达到很高 throughputs。

throughputs 含义:吞吐量

Flink 基础知识大补



分享到:


相關文章: