当前位置: 首页 > article >正文

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

目录

  • 1. 背景
  • 2. 命令行远程提交
    • 2.1 环境部署
      • 2.1.1 配置hosts文件
      • 2.1.2 部署Flink
      • 2.1.3 部署Hadoop
    • 2.3 代码提交
  • 3. 代码远程提交
    • 3.1 环境部署
      • 3.1.1 配置hosts文件
      • 3.1.2 部署Flink
      • 3.1.3 下载java运行所需jar包
    • 3.2 程序编写
      • 3.2.1 resources资源准备
      • 3.2.2 pom.xml
      • 3.2.3 远程提交Flink任务到Yarn
      • 3.2.4 远程stop Yarn上的Flink任务
    • 3.3 代码提交

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>
            &

http://www.kler.cn/news/316214.html

相关文章:

  • DOM XMLHttpRequest
  • yolov5/8/9/10模型在VOC数据集上的应用【代码+数据集+python环境+GUI系统】
  • 如何切换npm到淘宝的最新镜像源?
  • AIoT应用开发:给机器人接入‘记忆‘,完美解决「和谁对话多轮对话」!附 SQLite 入门实战
  • 数据库DML语句详解与实践
  • 金融行业中如何利用数据中台的数据来有效的驱动业务决策呢?
  • [Redis][预备知识]详细讲解
  • Hive企业级调优[1]——计算资源配置
  • 照片写真记录摄影作品记录网站源码
  • setup.py详解 及 pip install用法
  • 【QT开发-Pyside】使用Pycharm与conda配置Pyside环境并新建工程
  • 如何在 Qt 的 QListWidget 中为某一行添加点击事件
  • Oracle数据库中什么情况下需要使用游标
  • 微信小程序拨打电话点取消报错“errMsg“:“makePhoneCall:fail cancel“
  • Go-知识recover
  • JbossMQ反序列化漏洞CVE-2017-7504
  • WPF 异步
  • Qt 注册表操作
  • 数据结构--顺序表的创建和增删改查操作
  • windows docker下启动mysql报Bind on unix socket: Input/output error
  • Nginx越界读取缓存漏洞(CVE-2017-7529)
  • 【ShuQiHere】 探索数据挖掘的世界:从概念到应用
  • c++中std::find()函数
  • 【测试】——Selenium API (万字详解)
  • 【dom操作基础】案例题1
  • Ubuntu24.04中安装Electron
  • 8. 防火墙
  • JAVA并发编程系列(8)CountDownLatch核心原理
  • 基于等保2.0标准——区块链安全扩展要求探讨
  • git 介绍+常用命令