1 什么是Flink?

什么是Flink?

  • 初识flink

Flink 源于 Stratosphere 项目,2014 年 12 月,Flink 成为 Apache 软件基金会的顶级项目。Apache Flink 是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架。Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink 被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。
在这里插入图片描述

  • Flink重要特点

  • 事件驱动型

    事件驱动应用程序是一种有状态应用程序,它从一个或多个事件流中摄取事件,并通过触发计算、状态更新或外部操作来响应传入事件。事件驱动应用程序是传统应用程序设计的演变,具有独立的计算和数据存储层。在这种体系结构中,应用程序从远程事务数据库读取数据并将数据持久化。相反,事件驱动的应用程序是基于有状态流处理应用程序的。在这种设计中,数据和计算是位于一起的,这就产生了本地(内存中或磁盘中)数据访问。通过定期将检查点写入远程持久存储来实现容错。下图描述了传统应用程序体系结构和事件驱动应用程序之间的区别。

在这里插入图片描述

  • 流与批的世界观

    在 flink 的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没有界限的流,这就是所谓的有界流和无界流。

    • 无界数据流:无界数据流有一个开始但是没有结束,它们不会在生成时终止并提供数据,必须连续处理无界流,也就是说必须在获取后立即处理 event。对于无界数据流我们无法等待所有数据都到达,因为输入是无界的,并且在任何时间点都不会完成。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取 event,以便能够推断结果完整性。

    • 有界数据流:有界数据流有明确定义的开始和结束,可以在执行任何计算之前通过获取所有数据来处理有界流,处理有界流不需要有序获取,因为可以始终对有界数据集进行排序,有界流的处理也称为批处理。

在这里插入图片描述

  • 分层api

在这里插入图片描述

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

2 The DataStream API
DataStream API为许多常见的流处理操作提供原语,例如窗口化、一次记录转换,以及通过查询外部数据存储来丰富事件。DataStream API可用于Java和Scala,它基于map()、reduce()和aggregate()等函数。函数可以通过扩展接口来定义,也可以定义为Java或Scala lambda函数。
3 SQL & Table API
Flink有两个关系API,表API和SQL。这两个api都是用于批处理和流处理的统一api,也就是说,查询在无边界的实时流或有边界的记录流上以相同的语义执行,并产生相同的结果。Table API和SQL利用Apache Calcite进行解析、验证和查询优化。它们可以与DataStream和DataSet api无缝集成,并支持用户定义的标量、聚合和表值函数。Flink的关系api旨在简化数据分析、数据流水线和ETL应用程序的定义。
4 Libraries
Flink为常用数据处理用例提供了几个库。这些库通常嵌入到API中,而不是完全自包含的。因此,它们可以从API的所有特性中受益,并与其他库集成。

  • 复杂事件处理
  • 图计算
  • dataSetAPI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值