Flink on Yarn-Session Cluster模式
介绍
Session Cluster 方式是提前确定资源,初始化一个Flink集群,之后提交的任务都会由这个Flink集群来处理,集群会一直存活;当提交任务时,会竞争资源,如果空闲资源不够,任务就会失败;任务结束自动释放资源;
1. 准备工作
1.确保各服务器已安装并配置了Java环境,我使用的是jdk1.8
2.已完成hadoop集群搭建
3.下载已下文件
- commons-cli-1.5.0.jar
- flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar
- Apache Flink 1.16.0 for Scala 2.12
2. Flink配置
a. 解压缩下好的Flink包解压缩
使用命令 ---- tar -zxvf 压缩包 目标文件夹
b. 修改配置
1. 配置Flink环境变量
使用命令 ---- vim /etc/profile
添加flink环境变量
#flink
export FLINK_HOME=/opt/flink/flink-1.16.0
export PATH=$PATH:$FLINK_HOME/bin
2. 将之前准备好的俩Jar包放到lib下
否则启动时候会有这两种错误
1. java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:650)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:632)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.exceptions.YarnException
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 7 more
2. NoSuchMethodError: org.apache.commons.cli.Option.builder(Ljava/lang/String;)Lorg/apache/commons/cli/Option$Builder
java.lang.NoSuchMethodError: org.apache.commons.cli.Option.builder(Ljava/lang/String;)Lorg/apache/commons/cli/Option$Builder;
at org.apache.flink.yarn.cli.FlinkYarnSessionCli.<init>(FlinkYarnSessionCli.java:230)
at org.apache.flink.yarn.cli.FlinkYarnSessionCli.<init>(FlinkYarnSessionCli.java:156)
at org.apache.flink.yarn.cli.FlinkYarnSessionCli.main(FlinkYarnSessionCli.java:853)
3. yarn session模式启动
在bin目录下使用命令 ---- nohup ./yarn-session.sh -s 2 -jm 256 -nm 256 &
后台模式启动
4. 查看启动是否成功
a. 使用jps命令查看是否有了Flink进程
b. 查看启动输出日志,获取application_id,在Application页面查看
c. 点击该application最右侧tracking ui跳转Flink ui界面
c. 提交任务,查看运行情况
1. 提交任务
提前准备好Flink任务,使用命令;
application.id 换成自己的;
com.flink.workCountTable_datagen 为我的执行类 ;
/opt/original-flink_learn-0.0.1-SNAPSHOT.jar 为我的jar包路径
./flink run -t yarn-session -Dyarn.application.id=application_1673229962292_0010 -d -c com.flink.workCountTable_datagen /opt/original-flink_learn-0.0.1-SNAPSHOT.jar --port 9000
2. 在Flink UI界面查看执行情况