作者:fushuzhen68139 | 来源:互联网 | 2023-10-12 17:17
Flink中的编程模型4.1编程模型在Flink,编程模型的抽象层级主要分为以下4种,越往下抽象度越低,编程越复杂,灵活度越高。这里先不一一介绍,后续会做详细说明。这4层中,一般用
Flink中的编程模型
4.1 编程模型
在Flink,编程模型的抽象层级主要分为以下4种,越往下抽象度越低,编程越复杂,灵活度越高。
这里先不一一介绍,后续会做详细说明。这4层中,一般用于开发的是第三层,即DataStrem/DataSetAPI
。用户可以使用DataStream API
处理无界数据流,使用DataSet API
处理有界数据流。同时这两个API都提供了各种各样的接口来处理数据。例如常见的map、filter、flatMap等等,而且支持python,scala,java等编程语言,后面的demo主要以scala为主。
4.2 程序结构
与其他的分布式处理引擎类似,Flink也遵循着一定的程序架构。下面以常见的WordCount为例:
val env = ExecutionEnvironment.getExecutionEnvironment
// get input data
val text = env.readTextFile("/path/to/file")
val counts = text.flatMap { _.toLowerCase.split("\\W+") filter { _.nonEmpty } }
.map { (_, 1) }
.groupBy(0)
.sum(1)
counts.writeAsCsv(outputPath, "\n", " ")
Flink基本架构
2.1、JobManager和TaskManager
JobManager:也称之为Master用于协调分布式执行,它们用来调度task协调检查点,协调失败时恢复等。Flink运行时至少存在一个master处理器,如果配置高可用模式则会存在多个master处理器,其中有一个是leader其他都是standby。
TaskManager:也称之为Worker,用于执行一个dataflow的task(或者特殊的subtask)、数据缓冲和datastream的交换,Flink运行时至少会存在一个worker处理器。
Master和Worker处理器可以直接在物理机上启动或者通过相Yarn这样的资源调度框架。
Worker连接到Master,告知自身的可用性进而获得任务分配。