当我们将 Spark 从 Standalone 切换到 Yarn-Client 时需要改变啥?

Posted

技术标签:

【中文标题】当我们将 Spark 从 Standalone 切换到 Yarn-Client 时需要改变啥?【英文标题】:What needs to be changed when we switch Spark from Standalone to Yarn-Client?当我们将 Spark 从 Standalone 切换到 Yarn-Client 时需要改变什么? 【发布时间】:2015-08-19 08:12:28 【问题描述】:

目前我们有一个程序是一个网络服务,接收 SQL 查询并使用SQLContext 来响应。该程序现在处于独立模式,我们将spark.master 设置为特定的 URL。结构如下:

object SomeApp extends App

    val conf = new SparkConf().setMaster("spark://10.21.173.181:7077")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)

    while(true)
    
        val query = Listen_to_query()
        val response = sqlContext.sql(query)
        send(response)
    

现在我们要将系统转移到 Yarn 上的 Spark,看来我们应该使用 submit 来向 yarn 提交作业。在纱线上部署这样一个不会像普通的“工作”一样停止的“服务”会很奇怪。但我们不知道如何将“工作”与我们的程序分开。

你有什么建议吗?谢谢!

【问题讨论】:

【参考方案1】:

因此,如果您只想将作业提交给 yarn,您只需更改主参数即可。但是,听起来您正在寻找一个长期运行的共享 Spark 上下文,并且有一些类似的选项。有 https://github.com/spark-jobserver/spark-jobserver 和 https://github.com/ibm-et/spark-kernel 。

【讨论】:

感谢您的回复,确实只需要更改spark.master参数即可。在我们完成当前的程序工作后,我会观察spark-jobserver

以上是关于当我们将 Spark 从 Standalone 切换到 Yarn-Client 时需要改变啥?的主要内容,如果未能解决你的问题,请参考以下文章

Spark Standalone如何将本地.jar文件传递给集群

Spark Standalone如何通过start-all.sh启动集群

Spark Standalone + Zeppelin + Docker:如何设置 SPARK_HOME

Spark standalone下的运行过程

Spark的运行模式--Local和Standalone

大数据:Spark Standalone 集群调度从远程调试开始说application创建