django - Spark on YARN - 从 Django 提交 Spark 作业

标签 django apache-spark hadoop-yarn

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

  • 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/

相关文章:

Python JSON 提取

python - 如何在 Django 中使用 pytest?

amazon-web-services - EmrActivity 的输入/输出 - AWS Data Pipeline

java - 提交远程应用到hadoop时如何设置jar路径?

java - 使用 Java API 查找提交 yarn 应用程序的用户

apache-kafka - Spark Streaming 应用程序因 KafkaException : String exceeds the maximum size or with IllegalArgumentException 而失败

javascript - 在 django 模板中使用 javascript 变量

python - 将Django部署到Google云平台

scala - 如何在scala中保存RandomForestClassifier Spark模型?

python - 如何从 pyspark 的列中删除连字符?