【问题标题】:why Livy or spark-jobserver instead of a simple web framework?为什么使用 Livy 或 spark-jobserver 而不是简单的 Web 框架?
【发布时间】:2017-01-11 20:11:14
【问题描述】:

我正在 Apache Spark 之上构建一个 RESTful API。使用spark-submit 提供以下 Python 脚本似乎可以正常工作:

import cherrypy
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('myApp').getOrCreate()
sc = spark.sparkContext

class doStuff(object):
    @cherrypy.expose
    def compute(self, user_input):
        # do something spark-y with the user input
        return user_output

cherrypy.quickstart(doStuff())

但是在谷歌上搜索时,我看到了 Livyspark-jobserver 之类的东西。我阅读了这些项目的文档和一些教程,但我仍然不完全理解 Livy 或 spark-jobserver 相对于使用 CherryPy 或 Flask 或任何其他 Web 框架的简单脚本的优势。是关于可扩展性吗?上下文管理?我在这里想念什么?如果我想要的是一个用户不多的简单 RESTful API,那么 Livy 或 spark-jobserver 值得麻烦吗?如果有,为什么?

【问题讨论】:

    标签: apache-spark spark-jobserver livy


    【解决方案1】:

    如果你使用spark-submit,你必须手动上传JAR文件到集群并运行命令。一切都必须在运行前准备好

    如果您使用 Livy 或 spark-jobserver,那么您可以通过编程方式上传文件并运行作业。您可以添加其他应用程序,这些应用程序将连接到同一个集群并使用下一个作业上传 jar

    更重要的是,Livy 和 Spark-JobServer 允许您在交互模式下使用 Spark,这是 spark-submit 很难做到的;)

    【讨论】:

      【解决方案2】:

      我不会特别评论使用 Livy 或 spark-jobserver,但至少有三个原因可以避免将 Spark 上下文直接嵌入到您的应用程序中:

      • 安全性,主要侧重于减少集群对外界的暴露。如果集群配置不正确,控制您的应用程序的攻击者可以在访问您的数据和在集群上执行任意代码之间做任何事情。

      • 稳定性。 Spark 是一个复杂的框架,有许多因素会影响其长期性能和稳定性。将 Spark 上下文和应用程序解耦让您可以优雅地处理 Spark 问题,而不会导致应用程序完全停机。

      • 响应能力。面向用户的 Spark API 大部分(仅在 PySpark 中)是同步的。使用外部服务基本上可以为您解决这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-23
        • 1970-01-01
        • 2017-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多