开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink本地可以执行,在服务器上不能执行

springboot项目里集成flink,idea本地启动项目,flink任务可以执行,打包放服务器上跑执行就报错了,flink1.19 cdc3.0.1

            <groupId>org.apache.flink</groupId>
            <artifactId>flink-core</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-java -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-java -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.ververica/flink-cdc-runtime -->
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-cdc-runtime</artifactId>
            <version>${flink.cdc.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-clients -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients</artifactId>
            <version>${flink.version}</version>
        </dependency>
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-mysql-cdc</artifactId>
            <version>${flink.cdc.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.bahir/flink-connector-redis -->
        <dependency>
            <groupId>org.apache.bahir</groupId>
            <artifactId>flink-connector-redis_2.12</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-mongodb-cdc</artifactId>
            <version>${flink.cdc.version}</version>
        </dependency>
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-sqlserver-cdc</artifactId>
            <version>${flink.cdc.version}</version>
        </dependency>
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-oracle-cdc</artifactId>
            <version>${flink.cdc.version}</version>
        </dependency>
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-postgres-cdc</artifactId>
            <version>${flink.cdc.version}</version>
        </dependency>
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-db2-cdc</artifactId>
            <version>${flink.cdc.version}</version>
        </dependency>
[flink-pekko.actor.default-dispatcher-9] o.a.f.r.d.StandaloneDispatcher [Dispatcher.java : 1343] Job a9f375a2c1d30edda63a04b77c979cdc reached terminal state FAILED.
org.apache.flink.runtime.client.JobInitializationException: Could not start the JobMaster.

Caused by: java.util.concurrent.CompletionException: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.apache.flink.api.common.ExecutionConfig

Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.apache.flink.api.common.ExecutionConfig

展开
收起
尊敬的用户 2024-05-15 15:14:06 37 0
1 条回答
写回答
取消 提交回答
  • 遇到在本地IDEA中运行Flink任务正常,但在服务器上运行时报错的情况,通常与以下几个因素相关:

    1. 环境差异:确保服务器上的Java环境与本地一致,包括Java版本和环境变量设置。Flink对Java版本有特定要求,不同版本的Flink可能需要特定版本的Java运行时环境。
    2. 依赖冲突:从错误信息来看,ClassNotFoundException: org.apache.flink.api.common.ExecutionConfig表明可能存在类路径问题或依赖冲突。检查服务器上的应用程序包是否完整,确保所有依赖都已正确打包进去,没有遗漏。同时,确认没有其他版本的Flink库或与其冲突的库存在于服务器的类路径中。有时候,服务器上可能有全局的Maven仓库或旧版库,这些可能会干扰你的应用。
    3. Flink配置:检查服务器上的Flink配置文件(如flink-conf.yaml),确保配置正确且与本地开发环境相匹配,特别是关于网络、内存、并行度等方面的设置。
    4. 打包方式:确认你的项目在打包时是否正确地包含了所有必要的依赖。使用Maven或Gradle打包时,确保使用了正确的命令,如Maven的mvn clean package -DskipTests,并且检查是否使用了正确的打包类型(如jarwar)。
    5. Classpath问题:如果项目中有自定义类或依赖,确保它们在服务器上运行时也能正确加载。可能需要检查启动脚本或命令,确认CLASSPATH环境变量是否正确设置了。
    6. 权限问题:虽然错误信息未直接指出,但有时服务器上的权限问题也会导致任务无法正常启动,确保Flink运行用户有足够的权限访问相关目录和资源。

    解决思路:

    • 验证依赖:首先,通过查看项目的依赖树(使用Maven的mvn dependency:tree或Gradle的gradle dependencies命令)确认所有依赖正确无冲突。
    • 检查打包内容:解压服务器上的应用包,确认所有依赖库都已包含其中。
    • 日志分析:查看Flink在服务器上的详细日志,可能会有更多的错误信息提示问题所在。
    • 环境一致性:确保服务器上的Java版本、Flink配置等与本地开发环境保持一致。
    • 启动脚本:如果使用自定义脚本启动应用,检查脚本中是否正确指定了Java路径、Flink配置路径以及是否正确设置了CLASSPATH。

    如果以上步骤都无法解决问题,考虑将服务器上的Flink运行环境完全复刻到本地进行调试,或者进一步提供详细的错误日志进行分析。

    2024-05-16 08:45:28
    赞同 1 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    如何运维千台以上游戏云服务器 立即下载
    网站/服务器取证 实践与挑战 立即下载
    ECS计算与存储分离架构实践 立即下载