Spark 2.0独立模式动态资源分配工作者启动错误

Eil*_*iar 5 apache-spark jupyter-notebook apache-spark-2.0

我在独立模式下运行Spark 2.0,成功将其配置为在服务器上启动,并且还能够将Ipython Kernel PySpark配置为Jupyter Notebook中的选项.一切正常但我面临的问题是,对于我启动的每个笔记本,我的所有4个工作人员都被分配到该应用程序.因此,如果我的团队中的另一个人尝试使用PySpark内核启动另一个笔记本,那么在我停止第一个笔记本并释放所有工作人员之前,它根本不起作用.

为了解决这个问题,我试图按照Spark 2.0文档中的说明进行操作.所以,就我而言,$SPARK_HOME/conf/spark-defaults.conf我有以下几行:

spark.dynamicAllocation.enabled    true
spark.shuffle.service.enabled      true
spark.dynamicAllocation.executorIdleTimeout    10
Run Code Online (Sandbox Code Playgroud)

另外,$SPARK_HOME/conf/spark-env.sh我有:

export SPARK_WORKER_MEMORY=1g
export SPARK_EXECUTOR_MEMORY=512m
export SPARK_WORKER_INSTANCES=4
export SPARK_WORKER_CORES=1
Run Code Online (Sandbox Code Playgroud)

但是当我尝试启动工作时,使用时$SPARK_HOME/sbin/start-slaves.sh,只有第一个工作人员成功启动.来自第一个工作人员的日志最终如下:

16/11/24 13:32:06 INFO工人:成功注册了主人spark:// cerberus:7077

但工人2-4的日志显示了这个错误:

INFO ExternalShuffleService:使用useSasl = false在端口7337上启动shuffle服务16/11/24 13:32:08错误收件箱:忽略错误java.net.BindException:地址已在使用中

看来(对我来说)第一个工作人员在7337端口成功启动了shuffle-service,但工作人员2-4"不知道"这个并尝试在同一个端口上启动另一个shuffle-service.

如果我首先启动shuffle-service(使用$SPARK_HOME/sbin/start-shuffle-service.sh)然后尝试启动所有worker($SPARK_HOME/sbin/start-slaves.sh),那么所有工作人员(1-4)也会出现问题.

有没有选择绕过这个?如果有一个shuffle服务正在运行并连接到它而不是尝试创建一个新服务,那么所有工作人员都能够修复吗?

Joh*_*ard 1

我遇到了同样的问题,似乎通过从配置文件中删除spark.shuffle.service.enabled项目(事实上我没有任何与dynamicAllocation相关的项目)来让它工作,而是将其放入SparkConf中我请求一个 SparkContext:

sconf = pyspark.SparkConf() \
    .setAppName("sc1") \
    .set("spark.dynamicAllocation.enabled", "true") \
    .set("spark.shuffle.service.enabled", "true")
sc1 = pyspark.SparkContext(conf=sconf)
Run Code Online (Sandbox Code Playgroud)

我正常启动主站和从站:

$SPARK_HOME/sbin/start-all.sh
Run Code Online (Sandbox Code Playgroud)

我必须启动 shuffler-service 的一个实例:

$SPARK_HOME/sbin/start-shuffle-service.sh
Run Code Online (Sandbox Code Playgroud)

然后我开始用这个上下文写两个笔记本,让它们都做一个小工作。第一个笔记本的应用程序执行该工作并处于 RUNNING 状态,第二个笔记本的应用程序处于 WAITING 状态。一分钟后(默认空闲超时),资源将被重新分配,第二个上下文将开始执行其工作(并且两者都处于“运行”状态)。

希望这有帮助,约翰