Apache Flink v1.8 本地单机环境安装和运行Flink应用

Flink 运行环境

Flink 执行环境分为:本地单机环境和集群环境

本地单机环境:主要是为了方便用户编写、调试代码使用。

集群环境:用于正式环境,可以借助Hadoop YARN、Mesos、Kubernetes等不同的资源管理器部署自己的应用。

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

搭建本地单机环境(CentOS 7)

Flink可以在Linux、Mac OS X和Windows上运行,要求安装Java 8.x。

java -version

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

Flink 官网查看最新版本:

http://flink.apache.org/downloads.html

下载最新版本:Flink v1.8

cd opt

wget https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.8.0/flink-1.8.0-bin-scala_2.12.tgz

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

解压缩

tar -zxf flink-1.8.0-bin-scala_2.12.tgz

为了访问方便,可以编辑 /etc/profile文件,在底部添加如下设置:

# Flink setting

export FLINK_HOME=/opt/flink-1.8.0

export PATH=$PATH:$FLINK_HOME/bin

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

保存后,执行 source /etc/profile,使修改立即生效。

启动本地单机版 Flink

start-cluster.sh

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

验证Flink启动之后,默认web 端口8081是否正常。

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

启动成功后,在浏览器中访问 Flink的web dashboard。

http://192.168.56.103:8081

Web Dashboard展示了当前 Job Manager和Task Manager的状态。

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

也可以通过检查log目录下的log文件,来验证Flink系统正在运行中。

tail flink-1.8.0/log/flink-root-standalonesession-0-centos-103.log

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

运行SocketWindowWordCount 应用

(1)通过nc(netcat)启动一个端口号为9000的Socket Server。

nc -l 9000

(2)运行 SocketWindowWordCount 应用程序。

提交Flink应用的执行命令如下:

flink run flink-1.8.0/examples/streaming/SocketWindowWordCount.jar --port 9000

(3)在第一步启动的Socket Server窗口,手动输入单词。

如下所示,输入单词,如果一行有多个单词,就在单词之间输入空格。注意:需要在上述第二步完成之后,才输入单词。

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

如下是第二步运行SocketWindowWordCount应用的运行界面。

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

应用连接到了socket,等待输入。

查看SocketWindowWordCount Job的输出,输出的聚合结果。

tail -f /opt/flink-1.8.0/log/flink-root-taskexecutor-0-centos-103.out

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

也可以访问Flink web界面,验证提交的job的确正在运行中。

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

也可以在Flink web UI里查看输出,如下图所示。

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

针对SocketWindowWordCount中的源代码简要说明一下

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

timeWindow 时间窗口:

(1) timeWindow(Time.seconds(5)),只有一个参数,表示是翻滚时间窗口(Tumbling window),即不重叠的时间窗口,只统计本窗口内的数据;

(2) timeWindow(Time.seconds(5), Time.seconds(1)),有两个参数,表示是滑动时间窗口(Sliding window),即每过t2时间,统计前t1时间内的数据。 本例中就是,每1秒计算前5秒内的数据。

下面是2次输入相同内容的聚合结果,第一次输入比较快(5s之内完成),第二次输入比较慢一点(超过了5s),聚合结果就不一样了。

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

停止本地单机版Flink

stop-cluster

Apache Flink v1.8 本地单机环境安装和运行Flink应用

 

相关链接:

Flink 下载页面

https://flink.apache.org/downloads.html

Local Setup Tutorial

https://ci.apache.org/projects/flink/flink-docs-release-1.8/tutorials/local_setup.html