Flink 安装部署、环境配置及运行应用程序(一)| 学习笔记

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 快速学习 Flink 安装部署、环境配置及运行应用程序。

开发者学堂课程【Apache Flink 入门到实战 - Flink 开源社区出品 Flink 安装部署、环境配置及运行应用程序(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/632/detail/10034


Flink 安装部署、环境配置及运行应用程序(一)

 

目录

一、 Flink 开发环境部署和配置

二、 运行 Flink 应用

 

一、 Flink 开发环境部署和配置

(1)java 的安装和配置

★Flink 译和运行要求 Java 版本至少  Java 8,且最好选用 Java 8u51 及以上版本,以前版本有问题。

★如果要能够编译 Fink 代码,需要安装 JDK

★安装好 Java 后,还需要配置 JAVA_HOME 和 PATH

这三个要点在 mac 系统 Linux 系统  Windows 及系统上都是适用的。

Mac OS 上安装 JKD 方 法如下:

在下面这个下载链接中下载并安装 Mac OS 对应的安装包

https://www.oracle. com/technetwork/java/javas/downloads/idk8-download

s-2133151.html

和应用的配置

的文章,故不详述

(2).Maven 的安装和配置

编 Fnk 要求必 Maven 须使用3,推荐使用  Maven3.2.5。 Maven3.3x 能够编译成功,但是在 shade-dependencies-些的过程中有些问题,故不推荐便用。

具体步骤如下:

直接下载 Maven32. 5的 binary 包即可

wget

https:/larchive. apache. org/dist/maver/maven-3/3.2.5/binarie/apache-ma

ven-3.2.5-bin.tar.gz

下载完成后解压到指定目录中

tar zof apache-maven-3.2.5-bin.tar.gz -C $_application_install_dir}

环境变量配置

将 Maven 的安装目录配置为 Maven_HOME,并把 maven 的 bin 加到 PATH 中

export MAVEN_HOME=$(your_application_install dir)

export PATH=SJAVA_HOME/bin: SMAVEN HOME/bin SPATH

使环境变量生效,如果使用 zsh,则使用 zshrc

source-/.bashrc

查看 maven的版本

mvn-v

PS:在 mac 上还可以使用 brew 下载指定版本的 maven

brew install maven@3.2

(3)Git 的安装和配置

Git 的安装可以参考这篇文章:

https:/lgit-scm.com/book/en/v1/Getting-Started-Installing-Git

对于 Mac 用户可以  Home 直接用 Brew 安装命令如下:

brew install git

(可选)另外可以配置 git allas 来简化创建 gitconfig 文件加入如下内容:

[alias]

co checkout

st=status

ci= commit

br branch

这里直接略过。

(4)下载 flink 代码

当我们完成上述安装配置后,我们就可以从 github 上下载 Flink 代码了。

github 上 flink 的代码仓库是:

https: //github.com/apache/flink

(可选)对于国内的用户,下载 github 上的代码可能比较慢,可以在 /etc/hosts 中增加如下配置,可以显著提升 github 的下载速度:

151.101.72.133 assets-cdn.github.com

151.101.73.194 github.global.ssl.fastly.net

192.30.253.113 192.30.253.113 github.com.com

11.238.159.92 git.node5.mirror.et2sqa

如果使用 windows 系统,则是配置在

C:/ Window s/System32/drivers/etc/hosts 文件中。

如果使用 Win10 Linux 子系统,建议也配置在 C:/ Window s/System32/drivers/etc/hosts 文件中,然后重启 Linux 子系统,

因为 Linux  子系统中的 /etc/hosts 文件是根据 Windows  系统中的

Windows/System32/drivers/etc/hosts 这个文件生成的

国内的同学可能发现比较慢,换个方式,显著提高速度。

使用 Win10 LinuxLinux 子系统还可以通过删除系统的 etchosts 文件中的这一行来阻止 Linuxhosts 子系统启动的时候覆盖修改过的文件:

This file was automatically generated by WSL. To prevent automatic

generation of this file, remove this line

下载 Flink 代码到本地

git clone https://github. com/apache/flink.git

(可选)代码下载完后,默认是在 master 分支考虑到代码质量,一般会选择合适的发布分支使用,比如 release--1.6 或者 release--1.7,在本次演示中,我们选用阿里巴巴最新开源的 blink 做演示。PS: blink 分支的代码会逐步合并到 master 上。

git checkout release-1.6

git checkout release-1.7

git check out blink

flink 最新的发布是1.7,可能大概用的比较多的是1.6,阿里巴巴 blink 团队也提供可在 blink 的开源版本,本次主要是以 blink 分支的代码做演示。

(5)编译 flink 代码

Flink 代码使用  Maven 构建项目,编译代码的时候 maven 默认会根据当前用户下的“~/.m2/settings.xml 文件中的配置信息下载 Flink 的依赖包,也可以在mvn命令中增加

--settings=${your_maven _settings_file)来指定 maven settings 文件的位置。 

如果你之前已有合适的 maven settings 的配置,可以直接使用已有的配置即可。

一个可用的 maven settings.xml 配置文件见链接:

https: //drive. google. com/file/d/1cUa9BaHSxEelKB

B/view?usp=sharing

flink 依赖一个 mapr public,这个源在国外,国内下载比较慢,可能会导致编译失败,专门为这个源做了代理,在国内可用的配置放在一个文档里。

打开链接,直接复制文件内容,然后贴到 m2settings. xml 文件(或其他 settings.xml 文件)中。

如果需要指定 maven 的local repository 的路径,可以在 settings.xml 文件中配置localRepository 这个参数。默认情况下会下载到 ~/m2/repository/( 即当前用户home 目录下的“m2/repository 目录)。 

重要的配置片段如下所示。

<mirror>

<id>nexus-aliyun</id>

<mirrorof>*, !jeecg, jeecg-snapshot, mapr-releases</mirrorof>

<name>Nexus aliyun</name>

<url>http:  //maven. all yun. com/nexus/content/groups/publ

ic</url>

</mirror>

<mirror>

<id>mapr-public</id>

<mirrorof>mapr-releases</mirrorof>

<name>mapr-releases</name>

<url>https: //maven. aliyun. com/repository/mapr-public</

url>

</mirror>

公司会提供计算源,但大部分都没有为 mapr-releases 提供镜像,所以 mapr-releases 默认会从国外下载。所以提供这个代理,这里要加表示 mirror,通过阿里的专门 mapr-public repository 去下载。

简要说明一下第一个 mirroraliyunm 使用的是提供的镜像仓库能够为国内用户加速 maven repository 的访问你也可以配置成国内其他的 maven 镜像仓库或者自己搭建的仓库。最重要的是下面片段中红色标注的内容。

由于 flink-filesystems 中的 fink-/fink-mapr-fs 模块依赖 mapr- repository 提供的jar包然而由于国内访问 mapr- -releases repository 比较慢而且所依赖的 maprfs--5.2.1-mapr.jar 这个 jar  包有 48MBfink 依赖中最大的一个 jar 包

故初次编译 fink 时,往往会由于下载 map 相关依赖超时导致编译失败。因此 aliyunreleases 专门有一个镜像仓库代理 mapr- repository以期望能让用户更容易地下载 mapr 相关的 jar 包。

可以过这个链接查 aliyun 提供的镜像仓库的 meta 信息:

https: //maven. alivyun. com/mvn/view

在我们配置好之前的几个工具后,编译fink非常简单了,执行如下命令即可:

#删除已有的 build,编译 flink binary

#接着把 fink binary 安装在 maven 的 local repository (默认是~/.m2/repository)中

mvn clean install-DskipTests

#另一种编译命令,相对于上面这个命令,主要的确保是:

#不编译 tests、 QA pluginsJavaDocs 和,因此编译要更快一些

mvn clean install -DskipTests-Dfast

另外,在一些情况下,我们可能并不想把编译后的 flink binary 安装在 maven 的 local repository 下,我们可以使用下面的命令:

#删除已有的 build,编译 flink binary

mvn clean package-DskipTests

#另一种编译命令,相对于上面这个命令,主要的确保是:

#不编 tests、 QA pluginsJavaDocs 和,因此编译要更快一些

mvn clean package-Dskip Tests-Dfas

如果你需要使用指定 hadoop 的版本,可以通过指定-Dhadoop version 来设置,编译命令如下:

mvn clean install -Dskip Tests -Dhadoop.version=2.6.1

#或者

mvn clean package-DskipTests -Dhadoop. version=2.6.1

当成功编译完成后,上述几种编译方式最终都能在当前 fink code 的 path 下编译出完整的 flink binary,可以在 fin -disttarget/目录中看到:

flink-1.5.1-bin

flink-dist_2.11-1.5.1.jar

flink-1.5.1. tar.gz

如果要运行服flink,只需要一个压缩包和这个bin就好了。本例中是社区推荐是2. 5,2.5修复了一些2 .4的问题。

其中有三个文件可以留意一下(在之后的章节中我们会介绍 flink binary的

用法):

●flink binary 目录,本例中是

flink-dist/targetflink--1.5.-binfink-15.

●flink binary目录的压缩包本例中是

flink-dist/target/flink-1.5.1.tar.gz

●包含flink核心功能的jar包,本例中是

flink-dist/target/flink-dist_2.11-1.5.1.jar

另外,为了方便用户使用,编译时会为 link binary 目录在 flink 当前 code path 下建一个名为 build-target 的软链接。指向就是上面的目录。

在 flinkcode 的 path 的根目录,执行

工程

cd build-target

#查看 flink 的版本

./bin/flink-VI

在编译中可能遇到的问题 

问题1:编译失败 BUILD FAILURE”,失败信息中有 mapr 相关信息

这种错误一般都和 mapr相关的依赖包的下载失败有关,在实际测试时即使

配置了之前说的 aliyun-releases 代理的 mapr- 镜像,还是可能出现下载失败的情况,问题可能还是和 mapr 的 jar 包比较大,容易下载失败有关。

遇到这些问题时,,试即可。在重试之前,要先根据失败信息删除  maven

local repository 中对应的目录,否则需要等待 maven 下载的超时时间才能再次出发下载依赖到本地。

比如下面这个编译失败:

失败信息显示 com.mapr. hadoop maprfs jar:5.2.1-mapr 和它依赖的

org. apache. hadoop: hadoop-auth-jar27.0-mapr-1703 有问题,就直接把这两个包对应在 maven local repository 中的目录删掉,然后重新编译即可。

rm-rf-/.m2/repository/com/mapr/hadoop/maprfs/5.2.1-mapr

rm-rf/.m2/repository/org/apache/hadoop/hadoop-auth/2.7.0-mapr-1703

我还遇到过上面这种情况,直接删除 maprfs 的 jar 包后重试即可

rm-rf-/.m2/repository/com/mapr/hadoop/maprfs/5.2.1-mapr

这些问题等到编译成功后,相关的 mapr 的 jar 包就保存在本地的 local repository目录下,之后的编译就没有问题了。

问题2:发现在 Win10 的 Linux flink  子系统中编译比较耗时

在 Win10 的 Linuxflink 子系统中编译发现,编译 flink-runtime--web 过程中执行“ng build--prod--base-href.命令非常慢,最后虽然编译过了,但差不多花了一个小时的时间。

单独执行“ng build-prod--base-href.这命令时,会长时间停留在92%

chunk asset optimization"处。不确定是否和 Linu 子系统有关,也可能和我

的Win10机器的内存比较少有关(我的 Win10 机器编译之前的剩余内存只有3GB左右,执行这个 ng 命令比较耗内存,整机内存差不多用完了)。这个问题目前没有结论,有兴趣和条件的同学,也可以试一试。

(6)开发环境准备

一个好的 DE 不仅能有效的提高开发者的开发效率,而且对于不做代码开发。

但是希望通过代码学习 Flink 的人来说,也非常有助于其对代码的理解。

推荐使用 IntelliJ IDEA IDE 作为 Flink 的 DE 工具官方的说法是,,不建议使用 Eclipse IDE,主要原因是 EclipseScala 的 Scala IDE 和 Flinks 用 Scala 的不兼容。

1.下载安装 Intellij IDEA

intell IDEA IDE: https:/www.jetbrains.com/idea的下载地址:hsww.erainscomda,下载最新版本安装即可。

2.安装 Scala plugin

Flink 项目使用了 java 和 Scala 开发,Intellij 带 java 的支持,在导入 Flink代码前,还需要确保安装 IntellijScala 的 plugin。安装方法如下:

a. IntelliJ IDEA-> Preferences-> Plugins, "Install Jetbrains

plugin...

b.搜索scala",点击 "install

c.重启 Intellij

3.检查 Intellij 的 Maven 的配置

a. IntelliJ IDEA-> Preferences-> Build Execution, Deployment->Build Tools-> Maven

b.检查 Maven home directory 是否符合预期,如果不是,则选择正确的 maven 路径然后 apply

c.检查 User settings file 是否符合预期默认是

${your home diry}/.m2/settings.xml 如果之前没有特殊配置则无需更改

4.检查 Local directory 是否符合预期默认是

your home diry.m 22/repository,如果之前没有特殊配置,则无需更改

(7)导入 Flink 代码

1. IntelliJ IDEA>File->New>Project from existing sources...,

Flink 代码的根路径

2. “Import project from external model中选择 Maven然后一路点击next 直到结束

 3. IntelliJ IDEA-> File-> Project Structure...-> Project Settings-> Project检查 Project SDK是否符合预期因为在之前的步骤中我们已经配置了 JAVAHOME所以一般是符合预期的),如果不是就点击New然后选择之前步骤中安装的 JDK home 录

Ps:代码导入完后 Intellijin 自动 sync 代码并创建用于代码查找。如果

之前代码没有编译过需要做一次代码全编译然后 Intelli 经一次 svnc 后,

Ps:代码导入完后, Intellij 会自动 sync 代码并创建用于代码查找。如果

之前代码没有编译过,则需要做一次代码全编译,然后 Intellij 经过一次 sync 后,就能这样 Intellij 就能识别所有的代码。

(7)添加 Java的 Checkstyle

在 IntellijCheckstyle 中添加是很重要的因为 link 在编译时会强制代码风格的检查如果代码风格不符合规范可能会直接编译失败。对于需要在开源代码基础上做二次开发的同学或者有志于向社区贡献代码的同学来说,及早添加 checkstyle 并注意代码规范能帮你节省不必要的修改代码格式的时间。

IntellijCheckstyle 内置对的支持可以检查 FCheckstyle-IDEA 下- plugin 是否安装(IntelliJ IDEA> Preferences->Plugins搜索 Checkstyle-IDEA

配置 Java Checkstyle

1. IntelliJ IDEA-> Preferences-> Other Settings->Checkstyle

2. 设置“Scan Scope为Only Java sources(including tests)

3.在“Checkstyle Version 下拉框中选择8.9

4.在 Configuration File" 中点击“+新增一个 flink 的配置:

a.Description 填 Flink

b.Use a local Checkstyle file 选择本代码下的

tools/maven/checkstyle.xml文件

c.勾选“ Store relative to project location"然后点击Next

d.配置“checkstyle. suppressions.file的值为suppressions.xm l然后点击Next和Finish

e.勾选上“Flink作为唯一生效的checkstyle配置,点击Apply和OK

5. IntelliJ IDEA-> Preferences-> Editor- Code Stvle-> Java,点击齿轮按钮选择"import Scheme"->“Checkstyle Configuration选择 checkstyle.xml 文件。这样配置后Intelliji在自动的时候会按照规则把 import代码添加到正确的位置。

需要说明的是,Flinkcheckst中的一些模块并不能完全通过包括 fink-core、fink -optimizer-runtime- 和 fink- 但无论如何还是应当保证你新增或修改的代码遵守 checkstyle 的规范。

(8)添加 Scala Checkstyle

1.tools/maven/scalastyle-config-.xml文件拷贝到fink代码根目录的idea子目录中

2. IntelliJ IDEA-> Preferences-> Editor-> Inspections, "Scala style inspections",勾选这一项

(9)小试牛刀:在 Intellijexample 中运行 example

flink 代 码编译完成后直接选择一个 example 即可运行如:

org. apache. flink. streaming. examples. windowing WindowWordCount. java

我们找到文件,简单看一下简单的 word count,因为没有传入 input 参 数,所以默认 word,这个文本方大看一下,这个是莎士比亚的一段话。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
分布式计算 资源调度 大数据
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(二)
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(二)
82 0
|
2月前
|
分布式计算 资源调度 大数据
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(一)
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(一)
82 0
|
流计算 资源调度 Java
Apache Flink 零基础入门(二):开发环境搭建和应用的配置、部署及运行
本文主要面向于初次接触 Flink、或者对 Flink 有了解但是没有实际操作过的同学。希望帮助大家更顺利地上手使用 Flink,并着手相关开发调试工作。
Apache Flink 零基础入门(二):开发环境搭建和应用的配置、部署及运行
|
7月前
|
数据采集 物联网 大数据
NiFi【部署 01】NiFi最新版本1.18.0下载安装配置启动及问题处理(一篇学会部署NiFi)
NiFi【部署 01】NiFi最新版本1.18.0下载安装配置启动及问题处理(一篇学会部署NiFi)
1067 0
|
监控 大数据 流计算
环境篇之 flink 的集群测试|学习笔记
快速学习环境篇之 flink 的集群测试
291 0
环境篇之 flink 的集群测试|学习笔记
|
大数据 流计算 开发者
环境篇之 flink 的 historyserver 的测试|学习笔记
快速学习环境篇之 flink 的 historyserver 的测试
446 0
环境篇之 flink 的 historyserver 的测试|学习笔记
|
流计算
【Flink伪分布式环境搭建及应用,Standlong(开发测试)二】
【Flink伪分布式环境搭建及应用,Standlong(开发测试)二】
134 0
【Flink伪分布式环境搭建及应用,Standlong(开发测试)二】
|
网络安全 数据安全/隐私保护 流计算
【Flink伪分布式环境搭建及应用,Standlong(开发测试)一】
【Flink伪分布式环境搭建及应用,Standlong(开发测试)一】
235 0
【Flink伪分布式环境搭建及应用,Standlong(开发测试)一】
|
分布式计算 Hadoop Java
【Flink完全分布式环境搭建及应用,Standalone(开发测试)二】
【Flink完全分布式环境搭建及应用,Standalone(开发测试)二】
212 0
【Flink完全分布式环境搭建及应用,Standalone(开发测试)二】
|
分布式计算 Java Hadoop
【Flink完全分布式环境搭建及应用,Standalone(开发测试)一】
【Flink完全分布式环境搭建及应用,Standalone(开发测试)一】
268 0
【Flink完全分布式环境搭建及应用,Standalone(开发测试)一】