Flink Standalone集群模式安装部署全攻略
一、引言
Flink作为一款强大的分布式流处理和批处理框架,在大数据领域有着广泛的应用。本文将详细介绍Flink Standalone集群模式的安装部署过程,帮助大家快速搭建起开发测试环境。
二、安装前准备
首先,确保已经安装好了Hadoop环境(因为后续配置中涉及到与Hadoop的集成)。
三、安装步骤
(一)环境准备
-
退出conda的base环境(如果存在):
conda deactivate
-
下载Flink安装包:
下载链接为:https://archive.apache.org/dist/flink/flink-1.13.1/flink-1.13.1-bin-scala_2.11.tgz
(二)安装包处理
-
上传Flink安装包到服务器后,进行解压操作:
[root@hadoop11 modules]# tar -zxf flink-1.13.6-bin-scala_2.11.tgz -C /opt/installs/ [root@hadoop11 installs]# mv flink-1.13.6/ flink
-
配置环境变量:
编辑/etc/profile
文件,添加以下内容:export FLINK_HOME=/opt/installs/flink export PATH=$PATH:$FLINK_HOME/bin export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop
记得执行
source /etc/profile
使环境变量生效。
(三)配置文件修改
-
修改
/opt/installs/flink/conf/flink-conf.yaml
文件:jobmanager.rpc.address: bigdata01
:指定JobManager的RPC地址。taskmanager.numberOfTaskSlots: 2
:设置每个TaskManager的任务槽数量。web.submit.enable: true
:开启Web提交功能。- 配置历史服务器相关参数(如果HDFS是高可用,则需要先复制
core-site.xml
、hdfs-site.xml
到flink
的conf
目录下):jobmanager.archive.fs.dir: hdfs://bigdata01:9820/flink/completed-jobs/
:JobManager存档目录。historyserver.web.address: bigdata01
:历史服务器Web地址。historyserver.web.port: 8082
:历史服务器Web端口。historyserver.archive.fs.dir: hdfs://bigdata01:9820/flink/completed-jobs/
:历史服务器存档目录。
-
修改
/opt/installs/flink/conf/masters
文件:bigdata01:8081
这里指定了JobManager的地址和端口。
-
修改
/opt/installs/flink/conf/workers
文件:bigdata01 bigdata02 bigdata03
列出了集群中的TaskManager节点。
(四)上传相关jar包
将资料下的flink-shaded-hadoop-2-uber-2.7.5-10.0.jar
放到flink
的lib
目录下,然后使用xsync.sh
脚本进行分发:
xsync.sh /opt/installs/flink
xsync.sh /etc/profile
四、启动服务
-
启动HDFS:
start-dfs.sh
-
启动Flink集群:
start-cluster.sh
-
启动历史服务器:
historyserver.sh start
如果历史服务器无法启动,很可能是没有上传关于Hadoop的jar包到
lib
下。
五、WebUI观察
http://bigdata01:8081
:Flink集群管理界面,当前有效,重启后里面跑的内容就消失了,能够访问是因为集群处于启动状态。http://bigdata01:8082
:Flink历史服务器管理界面,及时服务重启,运行过的服务都还在,能够访问是因为历史服务启动着。
两者的区别在于,当服务都停止后再重启,8081上已经完成的任务中是空的,而8082上的历史任务都还在,原因是8082读取了HDFS上的一些数据,而8081没有。不过从Web提供的功能来看,8081提供的功能还是比8082要丰富得多。
六、提交官方示例
可以使用以下命令提交官方示例WordCount.jar
:
flink run /opt/installs/flink/examples/batch/WordCount.jar
或者指定输入输出路径:
flink run /opt/installs/flink/examples/batch/WordCount.jar --input 输入数据路径 --output 输出数据路径
例如:
flink run /opt/installs/flink/examples/batch/WordCount.jar --input /home/wc.txt --output /home/result
运行该案例时,会出现有时候运行成功,有时候运行失败的问题,错误信息如下:
Caused by: java.io.FileNotFoundException: /home/wc.txt (没有那个文件或目录)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at org.apache.flink.core.fs.local.LocalDataInputStream.<init>(LocalDataInputStream.java:50)
at org.apache.flink.core.fs.local.LocalFileSystem.open(LocalFileSystem.java:134)
at org.apache.flink.api.common.io.FileInputFormat$InputSplitOpenThread.run(FileInputFormat.java:1053)
原因是:TaskManager有三台,而数据只在本地存放一份,所以需要将数据分发给bigdata02
和bigdata03
,可以使用xsync.sh
脚本进行分发:
xsync.sh /home/wc.txt
通过以上步骤,我们就完成了Flink Standalone集群模式的安装部署,并能够进行简单的任务提交和运行测试。在实际应用中,还可以根据具体需求进一步深入探索Flink的更多功能和配置优化。