ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flink概述

2022-05-28 09:31:56  阅读:267  来源: 互联网

标签:提供 Flink 支持 API 概述 流式 计算


Flink产生缘由

随着大数据时代的发展,海量数据和多种业务的实时处理需求激增,比如:

  • 实时监控报警系统;
  • 实时风控系统;
  • 实时推荐系统等等。

传统的批处理方式和早期的流式处理框架因其自身的局限性,难以在延迟性、吞吐量、容错能力,以及使用便捷性等方面满足业务日益苛刻的要求

在这种形势下,Flink 以其独特的天然 流式计算特性和更为先进的架构设计 ,极大地改善了以前的流式处理框架所存在的问题。

Flink定义

Apache Flink :是一个分布式流处理器,具有直观和富有表现力的 API,可实现有状态的流处理应用程序,它以容错的方式有效地大规模运行这些应用程序,还提供了有状态的计算,支持状态管理,支持强一致性的数据语义以及支持基于Event Time的WaterMark对延迟或乱序的数据进行处理等。

Flink官方地址:https://flink.apache.org/

Flink组件栈

Flink分层的组件栈如下图所示(每一层所包含的组件都提供了特定的抽象,用来服务于上层组件):

主要分为如下几层:

  • 物理部署层
  • Runtime核心层
  • API&Libraries层
  • 扩展

物理部署层

Flink 支持的部署模式:

  • 本地:本地运行
  • 集群:独立集群(Standalone)、Yarn管理的集群
  • 云上:GCE/EC2
  • 容器化部署:Kubenetes

Flink能够通过该层支持不同平台的部署,用户可以根据需要选择使用对应的部署模式。

Runtime核心层

  • 提供了支持Flink计算的全部核心实现,为上层API层提供基础服务,该层主要负责对上层不同接口提供基础服务,也是Flink分布式计算框架的核心实现层;
  • 支持分布式Stream作业的执行、JobGraph到ExecutionGraph的映射转换、任务调度等;
  • 将DataSteam和DataSet转成统一的可执行的Task Operator,达到在流式引擎下同时处理批量计算和流式计算的目的。

API & Libraries层

  • Flink 首先支持了 Scala和 Java 的 API,Python也正在测试中;
  • DataStream、DataSet、Table、SQL API,作为分布式数据处理框架,Flink同时提供了支撑计算和批计算的接口,两者都提供给用户丰富的数据处理高级API,例如Map、FlatMap操作等,也提供比较低级的Process Function API,用户可以直接操作状态和时间等底层数据

扩展库

  • Flink 还包括用于复杂事件处理的CEP,机器学习库FlinkML,图处理库Gelly等。
  • Table 是一种接口化的 SQL支持,也就是 API支持(DSL),而不是文本化的SQL解析和执行。

Flink 四大基石

如上图,Fink有四大基石,分别为:

  • Checkpoint
  • State
  • Time
  • Window

Checkpoint

Checkpoint是Flink最重要的一个特性。

Flink基于 Chandy-Lamport 算法实现了一个分布式的一致性的快照,从而提供了一致性的语义。

Chandy-Lamport算法实际上在1985年的时候已经被提出来,但并没有被很广泛的应用,而Flink则把这个算法发扬光大了。

State

在提供了一致性的语义之后,Flink为了让用户在编程时能够更轻松、更容易地去管理状态,还提供了一套非常简单明了的State API,包括里面的有ValueState、ListState、MapState及BroadcastState。

使用State API能够自动享受到这种一致性的语义。

Time

除此之外,Flink还实现了Watermark的机制,能够支持基于事件的时间(Time)的处理,能够容忍迟到/乱序的数据。

Window

另外流计算中一般在 对流数据进行操作之前 都会先进行开窗Window),即:基于一个什么样的窗口上做这个计算。

Flink提供了开箱即用的各种窗口,比如滑动窗口、滚动窗口、会话窗口以及非常灵活的自定义的窗口。

Flink 应用场景

Flink的应用场景主要在这三个方面:

  • 事件驱动:Event-driven Applications
  • 数据分析:Data Analytics Applications
  • 数据管道:Data Pipeline Applications

事件驱动(Event-driven Applications)

事件驱动应用与传统应用的区别

 

标签:提供,Flink,支持,API,概述,流式,计算
来源: https://www.cnblogs.com/xfeiyun/p/16319850.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有