Flink 原理、实战与性能优化 (11):环境准备 2.2&2.2.1

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

Flink原理、实战与性能优化(11):环境准备 2.2&2.2.1

(Flink 项目模板)

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

Flink 为了对用户使用 Flink 进行应用开发进行简化,提供了相应的项目模板来创建开发项目,用户不需要自己引入相应的依赖库,就能够轻松搭建开发环境,前提是在 JDK(1.8 及以上)和 Maven(3.0.4 及以上)的环境已经安装好且能正常执行。在 Flink 项目模板中,Flink 提供了分别基于 Java 和 Scala 实现的模板,下面就两套项目模板分别进行介绍和应用。


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

1. 创建项目

创建模板项目的方式有两种,一种方式是通过 Maven archetype 命令进行创建,另一种方式是通过 Flink 提供的 Quickstart Shell 脚本进行创建,具体实例说明如下。

  • 通过 Maven Archetype 进行创建:
复制代码
$ mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeCatalog=https://repository.apache.org/ \
content/repositories/snapshots/ \
-DarchetypeVersion=1.7.0

通过以上 Maven 命令进行项目创建的过程中,命令会交互式地提示用户对项目的 groupId、artifactId、version、package 等信息进行定义,且部分选项具有默认值,用户直接回车即可,如图 2-1 所示。我们创建了实例项目成功之后,客户端会提示用户项目创建成功,且在当前路径中具有相应创建的 Maven 项目。

Flink原理、实战与性能优化(11):环境准备 2.2&2.2.1

图 2-1 Maven 创建 Java 项目
  • 通过 quickstart 脚本创建:
复制代码
$ curl https://flink.apache.org/q/quickstart-SNAPSHOT.sh | bash -s 1.6.0

通过以上脚本可以比较简单地创建项目,执行后项目会自动生成,但是项目的名称和一些 GAV 信息都是自动生成的,用户不能进行交互式重新定义,其中的项目名称为 quickstart,gourpid 为 org.myorg.quickstart,version 为 0.1。这种方式对于 Flink 入门相对比较适合,其他有一定基础的情况下,则不建议使用这种方式进行项目创建。

注意 在 Maven 3.0 以上的版本中,DarchetypeCatalog 配置已经从命令行中移除,需要用户在 Maven Settings 中进行配置,或者直接将该选项移除,否则可能造成不能生成 Project 的错误。

2. 检查项目

对于使用 quickstart curl 命令创建的项目,我们可以看到的项目结构如代码清单 2-1 所示,如果用户使用 Maven Archetype,则可以自己定义对应的 artifactId 等信息。

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

从上述项目结构可以看出,该项目已经是一个相对比较完善的 Maven 项目,其中创建出来对应的 Java 实例代码,分别是 BatchJob.java 和 Streaming.java 两个文件,分别对应 Flink 批量接口 DataSet 的实例代码和流式接口 DataStream 的实例代码。在创建好上述项目后,建议用户将项目导入到 IDE 进行后续开发,Flink 官网推荐使用的是 Intellij IDEA 或者 Eclipse 进行项目开发,具体的开发环境配置可以参考下一节中的介绍。

3. 编译项目

项目经过上述步骤创建后,可以使用 Maven Command 命令 mvn clean package 对项目进行编译,编译完成后在项目同级目录会生成 target/ -.jar,则该可执行 Jar 包就可以通过 Flink 命令或者 Web 客户端提交到集群上执行。

注意 通过 Maven 创建 Java 应用,用户可以在 Pom 中指定 Main Class,这样提交执行过程中就具有默认的入口 Main Class,否则需要用户在执行的 Flink App 的 Jar 应用中指定 Main Class。

4. 开发应用

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

Flink原理、实战与性能优化(11):环境准备 2.2&2.2.1

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

评论

发布