oozie spark action - 如何指定spark-opts

时间:2016-05-08 17:30:12

标签: apache-spark oozie

我正在通过oozie spark动作在yarn-client模式下运行spark工作。我需要指定驱动程序和应用程序主相关的设置。我尝试配置oozie记录的spark-opts,但它不起作用。

来自oozie doc:

Example:

<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <action name="myfirstsparkjob">
        <spark xmlns="uri:oozie:spark-action:0.1">
            <job-tracker>foo:8021</job-tracker>
            <name-node>bar:8020</name-node>
            <prepare>
                <delete path="${jobOutput}"/>
            </prepare>
            <configuration>
                <property>
                    <name>mapred.compress.map.output</name>
                    <value>true</value>
                </property>
            </configuration>
            <master>local[*]</master>
            <mode>client<mode>
            <name>Spark Example</name>
            <class>org.apache.spark.examples.mllib.JavaALS</class>
            <jar>/lib/spark-examples_2.10-1.1.0.jar</jar>
            <spark-opts>--executor-memory 20G --num-executors 50</spark-opts>
            <arg>inputpath=hdfs://localhost/input/file.txt</arg>
            <arg>value=2</arg>
        </spark>
        <ok to="myotherjob"/>
        <error to="errorcleanup"/>
    </action>
    ...
</workflow-app>

以上spark-opts指定为--executor-memory 20G --num-executors 50

在描述的同一页面上说:

&#34; spark-opts元素(如果存在)包含可以传递给spark驱动程序的spark选项列表。可以通过指定&#39; - conf key = value&#39;来传递Spark配置选项。这里&#34;

所以根据文件它应该是--conf executor-memory=20G

那么哪一个就在这儿?我试过了两个,但它似乎不起作用。我正在使用纱线客户端模式,因此主要想要设置与驱动程序相关的设置。我认为这是我可以设置驱动程序设置的唯一地方。

<spark-opts>--driver-memory 10g --driver-java-options "-XX:+UseCompressedOops -verbose:gc" --conf spark.driver.memory=10g --conf spark.yarn.am.memory=2g --conf spark.driver.maxResultSize=10g</spark-opts>

<spark-opts>--driver-memory 10g</spark-opts>

在实际的驱动程序jvm中没有设置上述驱动程序相关设置。我在linux进程信息上验证了它。

参考:https://oozie.apache.org/docs/4.2.0/DG_SparkActionExtension.html

3 个答案:

答案 0 :(得分:3)

我确实找到了问题所在。在纱线客户端模式下,您无法使用<spark-opts>--driver-memory 10g</spark-opts>指定驱动程序相关参数,因为您的驱动程序(oozie启动程序作业)已在该点之前启动。它是一个oozie发射器(这是一个mapreduce工作)启动你的实际火花和任何其他工作,并为那个工作火花选择是相关的。但要在yarn-client模式下设置驱动程序参数,您需要在oozie工作流中基本配置configuration

<configuration>
               <property>
                        <name>oozie.launcher.mapreduce.map.memory.mb</name>
                        <value>8192</value>
                </property>
                <property>
                        <name>oozie.launcher.mapreduce.map.java.opts</name>
                        <value>-Xmx6000m</value>
                </property>
                <property>
                        <name>oozie.launcher.mapreduce.map.cpu.vcores</name>
                        <value>24</value>
                </property>
                <property>
                    <name>mapreduce.job.queuename</name>
                    <value>default</value>
                </property>
            </configuration> 

我还没有尝试过纱线群集模式,但是火花选择可能适用于那里的驱动程序设置。但我的问题是关于纱线客户端模式。

答案 1 :(得分:2)

<spark-opts>--executor-memory 20G</spark-opts>应该理想。

另外,请尝试使用:

<master>yarn-cluster</master>
<mode>cluster</mode>

&#34;可以通过指定&#39; - conf key = value&#39;来传递Spark配置选项。在这里&#34;可能是指配置标签。 对于Ex: --conf mapred.compress.map.output=true会转换为:

<configuration>
    <property>
        <name>mapred.compress.map.output</name>
        <value>true</value>
    </property>
</configuration>

答案 2 :(得分:0)

尝试将<master>local[*]</master>更改为<master>yarn</master>