1. 背景
因公司要做数据平台,必要使用Java API远程提交Flink任务到Yarn集群
实验在IDEA中直接提交Flink任务到Yarn集群一直报异常:Could not find or load main class org.apache.flink.yarn.entrypoint.YarnApplicationClusterEntryPoint,缘故原由是缺少Hadoop的Classpath,但是在yarn-site中配置了参数yarn.application.classpath,和添加了Hadoop的全部依赖jar包后依然报错
而且Seatunnel和Streampark这种开源项目,也都是通过Flink_HOME来提交Flink任务的,全部本文也是采取这种方式
2. 下令行远程提交
2.1 环境部署
必要先安装Java,并配置Java环境变量
2.1.1 配置hosts文件
将Yarn集群的服务器hostname和IP映射,添加到/etc/hosts文件中
2.1.2 部署Flink
下载开源的Flink 1.15.0二进制包,然后举行解压
2.1.3 部署Hadoop
下载开源的Hadoop 2.8.5二进制包,然后举行解压
然后将Hadoop集群的core-site.xml、hdfs-site.xml、yarn-site.xml拷贝过来,举行覆盖
在/root/.bash_profile中配置HADOOP_CLASSPATH,如下所示:
- export HADOOP_CLASSPATH=`/root/hadoop-2.8.5/hadoop-2.8.5/bin/hadoop classpath`
复制代码 2.3 代码提交
- [root@bigdata flink-remote-submit]#
- [root@bigdata flink-remote-submit]# mkdir data-sync-test
- [root@bigdata flink-remote-submit]#
- [root@bigdata flink-remote-submit]# cd data-sync-test/
- [root@bigdata data-sync-test]#
复制代码 然后上传datasync-test的jar包到创建的目录下
然后使用flink下令行提交任务
- [root@bigdata data-sync-test]#
- [root@bigdata data-sync-test]# /root/flink-1.15.0/flink-1.15.0/bin/flink run -m yarn-cluster -ynm flink_remote_submit_test -c com.gildata.datasync.datasync_test.flink_submit.FlinkTestJob /root/data-sync-test/datasync-test-1.0-SNAPSHOT.jar
- [root@bigdata data-sync-test]#
复制代码 3. 代码远程提交
3.1 环境部署
必要先安装Java,并配置Java环境变量
3.1.1 配置hosts文件
将Yarn集群的服务器hostname和IP映射,添加到/etc/hosts文件中
3.1.2 部署Flink
部署Flink conf目录
下载开源的Flink 1.15.0二进制包,然后举行解压。将FLINK_HOME/conf目录下的全部配置文件,放到/opt/flink-remote-submit/flink-1.15.0-conf目录下。再修改flink-conf.yaml中的state.savepoints.dir参数和Flink集群一样
上传开源的Flink lib中jar包到HDFS
然后将FLINK_HOME/lib目录下的全部jar包,上传到HDFS的/flink/remote-submit-lib下
然后下载flink-runtime-web-1.15.0.jar、flink-connector-jdbc-1.15.0.jar、mysql-connector-java-8.0.29.jar,上传到HDFS的/flink/remote-submit-lib下
3.1.3 下载java运行所需jar包
下载flink-clients-1.15.0.jar、log4j-1.2-api-2.17.2.jar,到/opt/flink-remote-submit/java-lib目录下
3.2 程序编写
3.2.1 resources资源准备
将Yarn集群的core-site.xml、hdfs-site.xml、yarn-site.xml放到项目的src/main/resources目录下
3.2.2 pom.xml
- <!-- 用于flink提交任务获取StreamExecutionEnvironment -->
- <dependency>
- <groupId>org.apache.flink</groupId>
- <artifactId>flink-streaming-java</artifactId>
- <version>1.15.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.flink</groupId>
- <artifactId>flink-yarn</artifactId>
- <version>1.15.0</version>
- <scope>compile</scope>
- </dependency>
- <!-- 用于代码提交flink程序 -->
- <dependency>
- &
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |