使用 oozie 工作流启动 spark 程序

launching a spark program using oozie workflow

我正在使用 spark 包处理一个 scala 程序。 目前我 运行 程序使用来自网关的 bash 命令: /homes/spark/bin/spark-submit --master yarn-cluster --class "com.xxx.yyy.zzz" --driver-java-options "-Dyyy.num=5" a.jar arg1 arg2

我想开始使用 oozie 来完成这项工作 运行。我有一些挫折:

我应该将 spark-submit 可执行文件放在哪里?在 hfs 上? 如何定义火花动作? --driver-java-选项应该出现在哪里? oozie 动作应该是什么样子的?和出现的那个相似吗here?

如果您有足够新的 oozie 版本,您可以使用 oozie 的 spark 任务:

https://github.com/apache/oozie/blob/master/client/src/main/resources/spark-action-0.1.xsd

否则你需要执行一个 java 任务来调用 spark。类似于:

   <java>
        <main-class>org.apache.spark.deploy.SparkSubmit</main-class>

        <arg>--class</arg>
        <arg>${spark_main_class}</arg> -> this is the class com.xxx.yyy.zzz

        <arg>--deploy-mode</arg>
        <arg>cluster</arg>

        <arg>--master</arg>
        <arg>yarn</arg>

        <arg>--queue</arg>
        <arg>${queue_name}</arg> -> depends on your oozie config

        <arg>--num-executors</arg>
        <arg>${spark_num_executors}</arg>

        <arg>--executor-cores</arg>
        <arg>${spark_executor_cores}</arg>

        <arg>${spark_app_file}</arg> -> jar that contains your spark job, written in scala

        <arg>${input}</arg> -> some arg 
        <arg>${output}</arg>-> some other arg

        <file>${spark_app_file}</file>

        <file>${name_node}/user/spark/share/lib/spark-assembly.jar</file>
    </java>