我正在开发一个包含以下组件的网络应用程序:
- Apache Spark 在具有 3 个节点的集群上运行(spark 1.4.0、hadoop 2.4 和 YARN)
- Django Web 应用服务器
Django 应用程序将创建“按需”spark 作业(它们可以是并发作业,具体取决于使用该应用程序的用户数量)
我想知道是否有任何方法可以从 Django 中的 python 代码提交 Spark 作业?我可以将 pyspark 集成到 django 中吗?或者我可以直接调用 YARN API 来提交作业吗?
我知道我可以使用 Spark-submit 脚本向集群提交作业,但我试图避免使用它。 (因为它必须是从代码执行的 shell 命令,而且这样做不太安全)
任何帮助将不胜感激。
非常感谢,
JG
最佳答案
部分未经测试的答案:Django 是一个 Web 框架,因此很难管理长作业(超过 30 秒),这可能是您的 Spark 作业的情况。
所以你需要一个异步作业队列,比如 celery。这有点痛苦(虽然没那么糟糕,但仍然如此),但我建议你从这个开始。
然后你就会:
- Django 启动/监控作业
- rabbitMQ/celery 异步作业队列
- 自定义 celery 任务,使用 pySpark 并启动 Spark
关于django - Spark on YARN - 从 Django 提交 Spark 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31279626/