使用Flink下令行和Java API远程提交Flink任务到Yarn

打印 上一主题 下一主题

主题 922|帖子 922|积分 2766

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,如下所示:
  1. export HADOOP_CLASSPATH=`/root/hadoop-2.8.5/hadoop-2.8.5/bin/hadoop classpath`
复制代码
2.3 代码提交

  1. [root@bigdata flink-remote-submit]#
  2. [root@bigdata flink-remote-submit]# mkdir data-sync-test
  3. [root@bigdata flink-remote-submit]#
  4. [root@bigdata flink-remote-submit]# cd data-sync-test/
  5. [root@bigdata data-sync-test]#
复制代码
然后上传datasync-test的jar包到创建的目录下
然后使用flink下令行提交任务
  1. [root@bigdata data-sync-test]#
  2. [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
  3. [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

  1.         <!-- 用于flink提交任务获取StreamExecutionEnvironment -->
  2.         <dependency>
  3.             <groupId>org.apache.flink</groupId>
  4.             <artifactId>flink-streaming-java</artifactId>
  5.             <version>1.15.0</version>
  6.             <scope>provided</scope>
  7.         </dependency>
  8.         <dependency>
  9.             <groupId>org.apache.flink</groupId>
  10.             <artifactId>flink-yarn</artifactId>
  11.             <version>1.15.0</version>
  12.             <scope>compile</scope>
  13.         </dependency>
  14.         <!-- 用于代码提交flink程序 -->
  15.         <dependency>
  16.             &
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表