如何在同一时间运行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%。
我尝试了多种选择,但没有运气。
任何提示都将受到赞赏。
答案 0 :(得分:0)
看起来您在本地运行,因此没有像Yarn这样的资源管理器来分配资源。您的应用可能会以
运行val conf = new SparkConf()
.setMaster(local[*])
这告诉spark使用所有核心......你不能在这里使用动态值,这取决于未来的提交。
您要求的是资源管理器,它将在应用程序之间平均分配资源......我不知道任何提供这些内容的资源。
像动态分配这样的配置将允许资源管理器根据需要提供应用资源,但对于2个应用来说,这不一定是50%(可能会赢得)。
据我所知,你别无选择,只能告诉&#34; Spark使用多少个执行程序以及每个执行程序有多少个核心(使用spark-submit参数或spark-defaults配置),以便资源均匀分布。