在YARN上运行Spark应用程序,没有spark-submit

时间:2015-03-26 10:28:45

标签: apache-spark yarn

我知道可以使用spark-submit --master yarn在YARN上执行Spark应用程序。

问题是: 是否可以使用yarn命令在纱线上运行Spark应用程序?

如果是这样,YARN REST API可以用作以统一方式运行spark和MapReduce应用程序的接口。

4 个答案:

答案 0 :(得分:3)

就像所有YARN应用程序一样,Spark在YARN上部署时实现了Client和ApplicationMaster。如果您查看Spark存储库中的实现,您将获得有关如何创建自己的Client / ApplicationMaster的线索: https://github.com/apache/spark/tree/master/yarn/src/main/scala/org/apache/spark/deploy/yarn。但开箱即用它似乎不可能。

答案 1 :(得分:3)

我看到这个问题已经有一年了,但是对于那些偶然发现这个问题的人来说,现在看来这应该是可能的。我一直在尝试做类似的事情,并试图关注Hortonworks的Starting Spark jobs directly via YARN REST API Tutorial

基本上您需要做的是将jar上传到HDFS,根据YARN REST API文档创建Spark Job JSON文件,然后使用curl命令启动应用程序。该命令的一个示例是:

curl -s -i -X POST -H "Content-Type: application/json" ${HADOOP_RM}/ws/v1/cluster/apps \
     --data-binary spark-yarn.json 

答案 2 :(得分:0)

我还没有看过lates包装,但几个月前这样的事情是不可能的"开箱即用" (这是直接来自cloudera支持的信息)。我知道这不是你所希望的,但这就是我所知道的。

答案 3 :(得分:0)

感谢您的提问。 如上所述,AM是一个很好的途径,可以在不调用spark-submit的情况下编写和提交应用程序。 社区围绕YARN的spark-submit命令构建,添加了标记,以便于添加成功执行应用程序所需的jar和/或配置等。 Submitting Applications

另一种解决方案(可以尝试):您可以将火花作业作为Oozie工作流程中的操作。 Oozie Spark Extension 根据您希望实现的目标,两种路线都看起来不错。 希望它有所帮助。