资讯详情

flink_01

上硅谷大数据项目之一Flink (作者:尚硅谷大数据研发部)

版本:V1.12.0

Flink简介初识Flink

Flink起源于Stratosphere项目,Stratosphere是在2010~2014年4月Stratosphere代码被复制并捐赠给Apache本次孵化项目的初始成员是软件基金会Stratosphere2014年12月,系统核心开发人员,Flink一跃成为Apache顶级软件基金会项目。 在德语中,Flink一个词表示快速和灵巧,项目使用松鼠的颜色图案作为logo,这不仅是因为松鼠快速灵巧,还因为柏林松鼠有迷人的红棕色Flink的松鼠logo尾巴可爱,尾巴的颜色和Apache软件基金会logo颜色相呼应,也就是说,这是一个Apache风格的松鼠。

Flink项目的概念是:Apache Flink开源流处理框架是为分布式、高性能、随时可用、准确的流处理应用程序而建立的。 Apache Flink用于有状态计算无界和有界数据流的框架和分布式处理引擎。Flink以内存执行速度和任群环境中运行,计算内存执行速度和任何规模。

Flink驱动型事件的重要特征(Event-driven)

事件驱动应用程序是一种状态应用程序,它从一个或多个事件流中提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。更典型的是kafka几乎所有以事件为代表的新闻队列都是驱动应用。(Flink计算也是事件驱动型) 不同的是SparkStreaming如图所示:

事件驱动型:流与批的世界观

批处理的特点是有界、大量,非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。 流处理的特点是无限、实时,不需要对整个数据集进行操作,而是对通过系统传输的每个数据项进行操作,一般用于实时统计。 在spark在世界观中,一切都是由批次组成的,离线数据是大批次,实时数据是由无限小批次组成的。 而在flink在世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是无界限的流,这就是所谓的有界流和无界流。

无限数据流: 无界数据流有一个开始,但还没有结束。它们不会在生成时终止并提供数据,必须连续处理无界流,即获得后必须立即处理event。对于无限数据流,我们不能等待所有数据到达,因为输入是无限的,不会在任何时候完成。处理无限数据通常需要以特定的顺序(如事件的顺序)获取event,为了推断结果的完整性。 有界数据流: 有界数据流有明确的开始和结束定义。在执行任何计算之前,都可以获取所有数据来处理有界流。处理有界流不需要有序获取,因为它可以始终对有界数据集进行排序,有界流处理也称为批处理。 分层API

最底层的抽象只提供状态流,通过过程函数(Process Function)被嵌入到DataStream API中。底层过程函数(Process Function) 与 DataStream API 集成允许用户自由处理来自一个或多个数据流的事件,并使用一致的容错状态。此外,用户可以注册事件时间并回调处理时间,以便程序可以处理复杂的计算。 事实上,大多数应用程序不需要上述底部抽象,而是针对核心API(Core APIs) 编程,例如DataStream API(有界或无界流数据)DataSet API(有界数据集)。API为用户定义的多种形式的转换等数据处理提供了一般的构建模块(transformations),连接(joins),聚合(aggregations),窗口操作(windows)等等。DataSet API 为循环和迭代等有界数据集提供额外支持。API数据类型的处理(classes)各自的编程语言表示形式。 Table API 是以表为中心的声明编程,表可能会动态变化(表达流数据时)。Table API遵循(扩展)关系模型:表中有二维数据结构(schema)(类似于关系数据库中的表)API例如,提供可比操作,select、project、join、group-by、aggregate等。Table API程序声明地定义了应该执行的逻辑操作,而不是准确地确定这些操作代码的外观。 尽管Table API可通过多种类型的用户自定义函数进行定制(UDF)扩展还不如核心API表达能力更强,但使用起来更简单(代码量更少)。Table API内置优化器将优化程序。 表与 你可以DataStream/DataSet 之间许程序将 无缝切换Table API 与 DataStream 以及 DataSet 混合使用。 Flink最高级别的抽象是 SQL 。这一层抽象在语法与表达能力上与 Table API 类似,但以SQL查询表达式表达程序。SQL抽象与Table API同时,互动密切SQL可直接查询Table API表上执行定义。 目前Flink批处理不是主流,不如Spark成熟,所以DataSet用的不多。Flink Table API和Flink SQL也不完美,大部分都是各大厂商定制的。所以我们主要学习。DataStream API实际使用Flink作为最接近Google DataFlow模型的实现是流批统一的观点,所以基本使用DataStream就可以了。 2020年12月8日发布的最新版本1.12.0.实现了真正的流批一体化. 编写的代码可以处理流式数据或离线数据. 这种处理有界流的方界流的方式不同,Flink优化批处理数据. Spark or Flink Spark 和 Flink 一开始有同样的梦想。他们都希望用同样的技术统一流程处理和批处理,但他们走了两条完全不同的道路。前者以批处理技术为基础,试图支持批处理上的流程计算;后者认为流程计算技术是最基本的,在流程计算的基础上支持批处理。由于这种结构的不同,两者在未来所能做的事情上会有一些细微的差异。例如,在低延迟场景中,Spark 基于微批处

标签: 如何将传感器封装成一个库

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台