-位于客户端模式下但不在群集模式下工作的代理后面的程序包

时间:2019-05-23 16:57:03

标签: apache-spark

我正在具有一个主节点和两个工作节点的gcloud dataproc集群上运行spark提交作业。 Spark作业需要解决来自受密码保护的私有关系存储库的依赖关系。 Spark集群也位于公司代理的后面。

我正在使用的spark提交命令是:

spark-submit --verbose --master yarn --deploy-mode cluster/client --conf "spark.jars.ivySettings=./ivysettings.xml" --conf "spark.executor.extraJavaOptions=-Dhttp.proxyHost=<proxy host> -Dhttp.proxyPort=<proxy port> -Dhttps.proxyHost=<proxy host> -Dhttps.proxyPort=<proxy port> -Drepo.username=<nexus username> -Drepo.password=<nexus password> -Djavax.net.ssl.trustStore=./truststore" --conf "spark.driver.extraJavaOptions=-Dhttp.proxyHost=<proxy host> -Dhttp.proxyPort=<proxy port> -Dhttps.proxyHost=<proxy host> -Dhttps.proxyPort=<proxy port> -Drepo.username=<nexus username> -Drepo.password=<nexus password> -Djavax.net.ssl.trustStore=./truststore" --files ./truststore,./ivysettings.xml --packages groupId:artifactId:version somejar.jar

ivysettings.xml文件是:

<ivysettings>
    <settings defaultResolver="nexus-resolver" />
    <credentials host="<host>" realm="Sonatype Nexus Repository Manager" username="${repo.username}" passwd="${repo.password}"/>
    <property name="repository-root" value="<nexus/repo/url>"/>
    <resolvers>
       <ibiblio name="nexus-resolver" m2compatible="true" root="${repository-root}"/>
    </resolvers>
</ivysettings>

如果我使用客户端模式,这可以成功解决依赖关系并完成作业。但是,在群集模式下,尝试解决依赖关系时火花会挂起。

:: resolving dependencies :: org.apache.spark#spark-submit-parent;1.0
        confs: [default]

最终由于服务器访问错误而超时。从代理访问日志中,我看到没有建立与代理的连接。

调试

我可以看到spark正在通过检查调试输出来读取传递给执行程序的额外java选项。

我尝试过将其切入工作节点并从每个节点运行相同的命令。在这里,我遇到相同的行为(客户端模式无法在群集模式下工作)。这样可以排除工作节点上的防火墙设置。

我还尝试在所有框上的环境级别设置代理。行为相同。

似乎--packages在代理后面时无法在群集模式下工作吗?

1 个答案:

答案 0 :(得分:0)

由于您依靠-Djavax.net.ssl.trustStore设置指向已暂存的--files文件,因此似乎在客户端与群集模式下暂存文件有关此问题。 https://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/Spark-job-fails-in-cluster-mode/td-p/58772

您可以尝试此处描述的修复程序,在其中对暂存的文件进行别名化,然后在java选项中引用短文件名:

--files ./truststore#truststore,./ivysettings.xml#ivysettings.xml ...
--conf "spark.jars.ivySettings=ivysettings.xml"  ...
-Djavax.net.ssl.trustStore=truststore