Flink 原理、实战与性能优化 (12):环境准备 2.2.2

阅读数:7 2019 年 12 月 11 日 20:40

Flink原理、实战与性能优化(12):环境准备 2.2.2

(基于 Scala 实现的项目模板)

内容简介
这是一部以实战为导向,能指导读者零基础掌握 Flink 并快速完成进阶的著作,从功能、原理、实战和调优等 4 个维度循序渐进地讲解了如何利用 Flink 进行分布式流式应用开发。作者是该领域的资深专家,现就职于第四范式,曾就职于明略数据。
全书一共 10 章,逻辑上可以分为三个部分:
第一部分(第 1~2 章)
主要介绍了 Flink 的核心概念、特性、应用场景、基本架构,开发环境的搭建和配置,以及源代码的编译。
第二部分(第 3~9 章)
详细讲解了 Flink 的编程范式,各种编程接口的功能、应用场景和使用方法,以及核心模块和组件的原理和使用。
第三部分(第 10 章)
重点讲解了 Flink 的监控和优化,参数调优,以及对反压、Checkpoint 和内存的优化。

Flink 在开发接口中同样提供了 Scala 的接口,用户可以借助 Scala 高效简洁的特性进行 Flink App 的开发。在创建项目的过程中,也可以像上述 Java 一样创建 Scala 模板项目,而在 Scala 项目中唯一的区别就是可以支持使用 SBT 进行项目的创建和编译,以下实例,将从 SBT 和 Maven 两种方式进行介绍。

1. 创建项目

(1)创建 Maven 项目

1)使用 Maven archetype 进行项目创建

代码清单 2-2 是通过 Maven archetype 命令创建 Flink Scala 版本的模板项目,其中项目相关的参数同创建 Java 项目一样,需要通过交互式的方式进行输入,用户可以指定对应的项目名称、groupid、artifactid 以及 version 等信息。

代码清单 2-2 使用 Maven archetype 创建 Scala 项目
复制代码
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-scala \
-DarchetypeCatalog=https://repository.apache.org/ \
content/repositories/snapshots/ \
-DarchetypeVersion=1.7.0

执行完上述命令之后,会显示如图 2-2 所示的提示,表示项目创建成功,可以进行后续操作。同时可以在同级目录中看到已经创建好的 Scala 项目模板,其中包括了两个 Scala 后缀的文件。

2)使用 quickstart curl 脚本创建

如上节所述,在创建 Scala 项目模板的过程中,也可以通过 quickstart curl 脚本进行创建,这种方式相对比较简单,只要执行以下命令即可:

复制代码
curl https://flink.apache.org/q/quickstart-scala-SNAPSHOT.sh | bash
-s 1.7.0

Flink原理、实战与性能优化(12):环境准备 2.2.2

图 2-2 Maven 创建 Scala 项目

执行上述命令后就能在路径中看到相应的 quickstart 项目生成,其目录结构和通过 Maven archetype 创建的一致,只是不支持修改项目的 GAV 信息。

(2)创建 SBT 项目

在使用 Scala 接口开发 Flink 应用中,不仅可以使用 Maven 进行项目的编译,也可以使用 SBT(Simple Build Tools)进行项目的编译和管理,其项目结构和 Maven 创建的项目结构有一定的区别。可以通过 SBT 命令或者 quickstart 脚本进行创建 SBT 项目,具体实现方式如下:

1)使用 SBT 命令创建项目

复制代码
sbt new path/flink-project.g8

执行上述命令后,会在客户端输出创建成功的信息,表示项目创建成功,同时在同级目录中生成创建的项目,其中包含两个 Scala 的实例代码供用户参考。

2)使用 quickstart curl 脚本创建项目

可以通过使用以下指令进行项目创建 Scala 项目:

复制代码
bash <(curl https://flink.apache.org/q/sbt-quickstart.sh)

注意 如果项目编译方式选择 SBT,则需要在环境中提前安装 SBT 编译器,同时版本需要在 0.13.13 以上,否则无法通过上述方式进行模板项目的创建,具体的安装教程可以参考 SBT 官方网站 https://www.scala-sbt.org/download.html 进行下载和安装。

2. 检查项目

对于使用 Maven archetype 创建的 Scala 项目模板,其结构和 Java 类似,在项目中增加了 Scala 的文件夹,且包含两个 Scala 实例代码,其中一个是实现 DataSet 接口的批量应用实例 BatchJob,另外一个是实现 DataStream 接口的流式应用实例 StreamingJob,如代码清单 2-3 所示。

代码清单 2-3 Scala 模板项目结构
复制代码
tree quickstart/
quickstart/
├── pom.xml
└── src
└── main
├── resources
│ └── log4j.properties
└── scala
└── org
└── myorg
└── quickstart
├── BatchJob.scala
└── StreamingJob.scala

3. 编译项目

1)使用 Maven 编译

进入到项目路径中,然后通过执行 mvn clean package 命令对项目进行编译,编译完成后产生 target/ -.jar。

2)使用 Sbt 编译

进入到项目路径中,然后通过使用 sbt clean assembly 对项目进行编译,编译完成后再产生 target/scala_your-major-scala-version/project-name-assembly-0.1-SNAPSHOT.jar。

4. 开发应用

在项目创建和检测完成后,用户可以选择在 Scala 项目模板的代码上编写应用,也可以定义 Class 调用 DataSet API 或 DataStream API 进行 Flink 应用的开发,然后通过编译打包,上传并提交到集群上运行。

Flink原理、实战与性能优化(12):环境准备 2.2.2

购书地址 https://item.jd.com/12518733.html?dist=jd

评论

发布