写点什么

Flink 应用开发

作者:阿泽🧸
  • 2023-05-05
    北京
  • 本文字数:993 字

    阅读完需:约 3 分钟

Flink应用开发

Flink 作为批流一体的计算引擎,其面对的是业务场景,面向的使用者是开发人员和运维管理人员。


Flink 应用,也叫作 Flink 作业、Flink Job。Flink 作业包含了两个基本的块:数据流(DataStream)转换(Transformation)。DataStream 是逻辑概念,为开发者提供了 API 接口,Transformation 是处理行为的抽象,包含了数据的读取、计算、写出。所以 Flink 的作业中的 DataStream API 调用,实际上构建了多个由 Transformation 组成的数据处理流水线(Pipeline)。


执行时,Flink 应用被映射成 Dataflow,由数据流和转换操作组成。每个 Dataflow 从一个或多个数据源开始,并以一个或多个 Slink 输出结束。Dataflow 本质上是一个有向无环图(DAG),但是允许通过迭代构造允许特殊形式的有向有环图。为了简单起见,大部分任务都是有向无环图。


Flink 应用由相同的基本部分组成。

  • 获取参数(可选)

如果有配置参数,则读取配置参数,可以是命令行输入的参数,也可以是配置文件(配置文件可能是命令行给的 1 个配置文件路径)。


  • 初始化 Stream 执行环境

这是必须要做的,读取数据的 API 依赖于该执行环境。


  • 配置参数

读取到的参数可以是执行环境参数或者业务参数。执行环境参数调用对应的 API 赋予即可,这些参数会覆盖 flink.conf 中默认的配置参数,如最大并行度 maxParallism 等。如果是业务级的参数,可以放入 GlobalJobParameters 中,在 Job 执行时从 GlobalJobParameters 读取参数。


一般在生产或者实际的应用场景中,多多少少需要提供一些配置信息,如果只是为了学习用途,则可以不用考虑。GlobalJobParameters 可以视作一个 Map,执行环境参数等具体细节可以参照官方文档的详细说明。


  • 读取外部数据

Flink 作为分布式执行引擎,本身没有数据存储能力,所以定义了一系列接口、连接器与外部存储进行交互,读写数据。在 Flink 中,数据来源叫作 Source,Flink 支持从 Kafka、HDFS、HBase、数据库等外部存储读取数据。


  • 数据处理流程

调用 DataStream 的 API 组成数据处理的流程,如调用 DataStream.map().filter()...组成一个数据处理流水线。


  • 将处理结果写入外部

在 Flink 中将数据写入外部的过程叫作 Sink,Flink 支持写出数据到 Kafka、HDFS、HBase、数据库等外部存储。


  • 触发执行

StreamExecutionEnvironment#execute 是 Flink 应用执行的触发入口,无论是一般的 DataStream API 开发还是 Table &SQL 开发都是如此。调用该 API 之后,才会触发后续的一系列生成 StreamGraph、JobGraph、ExecutionGraph 和任务分发执行的过程。


发布于: 刚刚阅读数: 5
用户头像

阿泽🧸

关注

还未添加个人签名 2020-11-12 加入

还未添加个人简介

评论

发布
暂无评论
Flink应用开发_flink_阿泽🧸_InfoQ写作社区