Apache Flink v1.8 本地单机环境安装和运行Flink应用
Flink 运行环境
Flink 执行环境分为:本地单机环境和集群环境
本地单机环境:主要是为了方便用户编写、调试代码使用。
集群环境:用于正式环境,可以借助Hadoop YARN、Mesos、Kubernetes等不同的资源管理器部署自己的应用。
搭建本地单机环境(CentOS 7)
Flink可以在Linux、Mac OS X和Windows上运行,要求安装Java 8.x。
java -version
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
解压缩
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
保存后,执行 source /etc/profile,使修改立即生效。
启动本地单机版 Flink
start-cluster.sh
验证Flink启动之后,默认web 端口8081是否正常。
启动成功后,在浏览器中访问 Flink的web dashboard。
http://192.168.56.103:8081
Web Dashboard展示了当前 Job Manager和Task Manager的状态。
也可以通过检查log目录下的log文件,来验证Flink系统正在运行中。
tail flink-1.8.0/log/flink-root-standalonesession-0-centos-103.log
运行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窗口,手动输入单词。
如下所示,输入单词,如果一行有多个单词,就在单词之间输入空格。注意:需要在上述第二步完成之后,才输入单词。
如下是第二步运行SocketWindowWordCount应用的运行界面。
应用连接到了socket,等待输入。
查看SocketWindowWordCount Job的输出,输出的聚合结果。
tail -f /opt/flink-1.8.0/log/flink-root-taskexecutor-0-centos-103.out
也可以访问Flink web界面,验证提交的job的确正在运行中。
也可以在Flink web UI里查看输出,如下图所示。
针对SocketWindowWordCount中的源代码简要说明一下
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),聚合结果就不一样了。
停止本地单机版Flink
stop-cluster
相关链接:
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