【发布时间】:2016-01-08 18:20:19
【问题描述】:
我使用以下命令以 yarn-cluster 模式部署我的 spark 应用程序
spark-submit --master yarn --deploy-mode cluster --class com.rocai.controller.Controller --jars <absolute-path-to-ojdbc6.jar> --driver-memory 1g --executor-memory 1g --num-executors 2 --executor-cores 2 <absolute-path-to-app.jar> <absolute-path-to-controller.xml>
controller.xml 是 app.jar 的参数。我总是以 controller.xml 文件的文件未找到异常结束。我什至尝试使用 --files 标签传递 controller.xml 文件,就像这样
spark-submit --master yarn --deploy-mode cluster --class com.rocai.controller.Controller --jars <absolute-path-to-ojdbc6.jar> --driver-memory 1g --executor-memory 1g --num-executors 2 --executor-cores 2 <absolute-path-to-app.jar> <absolute-path-to-controller.xml> --files <absolute-path-to-controller.xml>
这可能是因为 controller.xml 文件没有上传到应用程序容器。据我了解,yarn-cluster 模式下的驱动程序进程将在集群中的任意节点启动。查看日志,我看到 app.jar、ojdbc6.jar、hadoop_conf.zip 和 spark-assembly.jars 正在上传到容器中。如何确保 controller.xml 文件也被上传到 yarn 容器?
我可能在这里误解了一些东西,所以非常感谢任何帮助。
谢谢
【问题讨论】:
-
作为一种可能的 WA,您可以将
.xml文件打包为 jar,并通过资源位置引用它。 -
这将涉及每次我有一个新的控制器文件时重建 app.jar,这对我来说是不可行的。 Yarn-client 模式工作得非常好。我想知道这是否是 yarn-cluster 模式下 spark-submit 不可用的功能。
-
无需重建。您可以将它作为另一个 jar 添加到类路径中。
标签: apache-spark