同时提交多个火花应用(动态资源分配)

时间:2017-02-20 12:23:15

标签: apache-spark

如何在同一时间运行2x spark submits? 我有一个简单的火花(我的电脑没有额外配置),分配了4个核心。

如果我尝试提交应用程序2次,则第二次获取 “WARN TaskSchedulerImpl:初始作业未接受任何资源;请检查您的集群UI以确保工作人员已注册且资源充足”

代码:     来自 future import print_function

import sys
from operator import add

from pyspark.sql import SparkSession

if __name__ == "__main__":

    spark = SparkSession\
        .builder\
        .appName("test")\
        .getOrCreate()

    rdd = spark.sparkContext.parallelize(xrange(1000000000), 100)
    print(rdd.sample(False, 0.1, 81).count())

    spark.stop()

我如何尝试启动它们: ./spark-submit --master spark:// myaddresshere:7077 --name“app1”--conf spark.shuffle.service.enabled = true --conf park.shuffle.service.enabled = true /path_to_py_file.py < / p>

我知道我可以预先设置要使用的核心数,但我的目的是动态分配资源。如果只有1个任务在运行=&gt;消费100%,如果他们是4个任务=&gt;每个25%。

我尝试了多种选择,但没有运气。

任何提示都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

看起来您在本地运行,因此没有像Yarn这样的资源管理器来分配资源。您的应用可能会以

运行
val conf = new SparkConf()
  .setMaster(local[*])

这告诉spark使用所有核心......你不能在这里使用动态值,这取决于未来的提交。

您要求的是资源管理器,它将在应用程序之间平均分配资源......我不知道任何提供这些内容的资源。

像动态分配这样的配置将允许资源管理器根据需要提供应用资源,但对于2个应用来说,这不一定是50%(可能会赢得)。

据我所知,你别无选择,只能告诉&#34; Spark使用多少个执行程序以及每个执行程序有多少个核心(使用spark-submit参数或spark-defaults配置),以便资源均匀分布。