You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oozie 5.2.0启动Spark应用报错“不支持Spark动作”,求解决方案

Oozie 5.2.0 运行Spark 3.0.0应用报错解决方案

一、报错核心原因

报错Action of type spark is not supported说明Oozie服务器未加载Spark动作执行器。Spark动作是Oozie的插件式功能,默认可能未启用或配置存在问题。

二、能否将Spark应用作为Java动作启动?

可以,但不推荐。Spark应用依赖Spark集群配置、类路径管理等复杂逻辑,用Java动作启动需要手动处理spark-submit命令、所有依赖包、环境变量等,不仅维护成本极高,还容易引发类冲突、资源不足等问题。优先推荐修复Oozie的Spark动作支持,而非改用Java动作。

三、修复Spark动作支持的操作步骤

1. 检查并安装Spark动作插件

查看Oozie本地共享库目录$OOZIE_HOME/share/lib/oozie,确认是否存在oozie-spark-action-*.jar文件。若缺失,需补充与Oozie 5.2.0版本匹配的Spark动作插件包。

2. 启用Spark动作执行器配置

修改Oozie配置文件oozie-site.xml,添加或更新以下配置:

<property>
    <name>oozie.action.executor.ext.classes</name>
    <value>org.apache.oozie.action.hadoop.SparkActionExecutor</value>
</property>

若已有其他动作执行器,用逗号分隔追加即可。

3. 同步Oozie共享库到HDFS

将Spark 3.0.0相关依赖包(含Spark核心jar、Scala库等)上传至HDFS的Oozie共享库目录(通常为/user/oozie/share/lib/lib_<timestamp>/spark),然后执行同步命令:

oozie admin -oozie http://<oozie-server>:11000/oozie -sharelibupdate

确保共享库中Spark版本与业务使用的3.0.0完全兼容。

4. 修正Workflow配置细节

你的workflow.xml存在参数配置错误,修正后的配置示例如下:

<workflow-app name="KafkaUnload_Maspers" xmlns="uri:oozie:workflow:0.5">
    <global>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>${yarn_queue}</value>
            </property>
            <property>
                <name>oozie.action.max.output.data</name>
                <value>102400000</value>
            </property>
        </configuration>
    </global>

    <start to="runDataMartStreaming"/>

    <action name="runDataMartStreaming">
        <spark xmlns="uri:oozie:spark-action:1.0">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>spark.sql.shuffle.partitions</name>
                    <value>100</value>
                </property>
                <!-- 配置Kerberos认证参数 -->
                <property>
                    <name>spark.yarn.principal</name>
                    <value>u_sklsdprozn_s_custom_rozn_productshelf@DEV.DF.SBRF.RU</value>
                </property>
                <property>
                    <name>spark.yarn.keytab</name>
                    <value>s_custom.keytab</value>
                </property>
            </configuration>
            <master>yarn</master>
            <mode>client</mode>
            <name>Spark Example</name>
            <class>ru.kafkaconnector.Main</class>
            <jar>kafka-connector-init-0.0.0-jar-with-dependencies.jar</jar>
            <spark-opts>
                -Djava.security.krb5.conf=/etc/krb5.conf 
                -Djavax.security.auth.useSubjectCredsOnly=false
                --queue ${yarn_queue}
                --jars spark-sql-kafka-0-10_2.12-3.0.0.jar,kafka-clients-3.0.0.jar
                --files /etc/krb5.conf,s_custom.keytab
            </spark-opts>
            <!-- 以下为业务需要的文件依赖 -->
            <file>${wf:appPath()}/lib/kafka-connector-init-0.0.0-jar-with-dependencies.jar</file>
            <file>${wf:appPath()}/lib/spark-sql-kafka-0-10_2.12-3.0.0.jar</file>
            <file>${wf:appPath()}/lib/kafka-clients-3.0.0.jar</file>
            <file>${wf:appPath()}/s_custom.keytab</file>
            <file>/etc/krb5.conf</file>
        </spark>
        <ok to="end"/>
        <error to="fail"/>
    </action>

    <kill name="fail">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>

关键修正点:

  • 补充<ok>、<error>分支,完善workflow的执行逻辑
  • 将--jar、--keytab等spark-submit参数移至<spark-opts>,<arg>仅用于传递给业务主类的参数
  • 添加Kerberos相关配置到Spark的configuration中
  • 确保所有依赖文件(如keytab)都通过<file>标签声明

5. 重启Oozie服务

完成上述配置后,重启Oozie服务器,确保所有配置和插件加载生效。

内容的提问来源于stack exchange,提问作者Nikasyauskas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 21:55:14