Bootstrap

Flink Standalone集群模式安装部署全攻略

Flink Standalone集群模式安装部署全攻略

一、引言

Flink作为一款强大的分布式流处理和批处理框架,在大数据领域有着广泛的应用。本文将详细介绍Flink Standalone集群模式的安装部署过程,帮助大家快速搭建起开发测试环境。

二、安装前准备

首先,确保已经安装好了Hadoop环境(因为后续配置中涉及到与Hadoop的集成)。

三、安装步骤

(一)环境准备

  1. 退出conda的base环境(如果存在):
    conda deactivate
    
  2. 下载Flink安装包:
    下载链接为:https://archive.apache.org/dist/flink/flink-1.13.1/flink-1.13.1-bin-scala_2.11.tgz

(二)安装包处理

  1. 上传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
    
  2. 配置环境变量:
    编辑 /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 使环境变量生效。

(三)配置文件修改

  1. 修改 /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.xmlhdfs-site.xmlflinkconf目录下):
      • 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/:历史服务器存档目录。
  2. 修改 /opt/installs/flink/conf/masters 文件:
    bigdata01:8081
    
    这里指定了JobManager的地址和端口。
  3. 修改 /opt/installs/flink/conf/workers 文件:
    bigdata01
    bigdata02
    bigdata03
    
    列出了集群中的TaskManager节点。

(四)上传相关jar包

将资料下的flink-shaded-hadoop-2-uber-2.7.5-10.0.jar放到flinklib目录下,然后使用xsync.sh脚本进行分发:

xsync.sh /opt/installs/flink
xsync.sh /etc/profile

四、启动服务

  1. 启动HDFS:
    start-dfs.sh
    
  2. 启动Flink集群:
    start-cluster.sh
    
  3. 启动历史服务器:
    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有三台,而数据只在本地存放一份,所以需要将数据分发给bigdata02bigdata03,可以使用xsync.sh脚本进行分发:

xsync.sh /home/wc.txt

通过以上步骤,我们就完成了Flink Standalone集群模式的安装部署,并能够进行简单的任务提交和运行测试。在实际应用中,还可以根据具体需求进一步深入探索Flink的更多功能和配置优化。

;