Spark on YARN - 从Django提交Spark作业

时间:2015-07-07 21:29:58

标签: django apache-spark yarn

我正在开发一个包含以下组件的Web应用程序:

  • 在具有3个节点的群集上运行Apache Spark(spark 1.4.0,hadoop 2.4和YARN)
  • Django Web App服务器

Django应用程序将创建“按需”火花作业(它们可以是并发作业,具体取决于使用该应用程序的用户数量)

我想知道是否有任何方法可以从Django中的python代码提交spark作业?我可以在django中整合pyspark吗?或者我可以直接调用YARN API来提交工作吗?

我知道我可以使用spark-submit脚本向集群提交作业,但我试图避免使用它。 (因为它必须是从代码执行的shell命令,并且执行起来不太安全)

非常感谢任何帮助。

非常感谢,

JG

2 个答案:

答案 0 :(得分:2)

部分未经测试的答案:Django是一个Web框架,因此很难管理长时间的工作(超过30秒),这可能就是你的火花工作。

因此,您需要一个异步作业队列,例如芹菜。这有点痛苦(不是很糟糕但仍然如此),但我会建议你从那开始。

然后你会:

  • Django启动/监控工作
  • rabbitMQ /芹菜异步作业队列
  • 自定义芹菜任务,使用pySpark并启动sparks

答案 1 :(得分:0)

github上有一个名为Ooyala的作业服务器的项目: https://github.com/ooyala/spark-jobserver

这允许您通过HTTP请求向YARN提交火花作业。

在Spark 1.4.0+中添加了支持以通过HTTP请求监视作业状态。