我知道可以使用spark-submit --master yarn
在YARN上执行Spark应用程序。
问题是:
是否可以使用yarn
命令在纱线上运行Spark应用程序?
如果是这样,YARN REST API可以用作以统一方式运行spark和MapReduce应用程序的接口。
答案 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 根据您希望实现的目标,两种路线都看起来不错。 希望它有所帮助。