首页 > 解决方案 > Apache Spark 上未显示已完成或正在运行的应用程序

问题描述

当我启动我的 ANN 脚本时,在控制台级别一切正常,但 Spark Web 界面上没有任何变化:应用程序未显示在正在运行的应用程序或已完成的应用程序中。我创建了一个配置文件 spark-defaults.conf 我在其中放置:

spark.master                     spark://master:7077
spark.eventLog.enabled           true
spark.eventLog.dir               /opt/spark/eventLogging

我在 /tmp 中创建了一个 spark-event 文件夹,以便能够运行命令:

start-history-server.sh

可以正常工作。我在java 8下运行,我没有安装hadoop。我也试试这个命令:

spark-submit --driver-memory 2G --conf spark.eventLog.enabled=true --conf spark.eventLog.dir=/opt/spark/eventLogging ./<my_script.py>

剧本:

#make the ANN

from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName('Elephas_App').setMaster('local[4]')
sc = SparkContext(conf=conf)


# Initialising the ANN
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(6, input_dim=11))
model.add(Activation('relu'))
model.add(Dense(6))
model.add(Activation('relu'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam')

# Fitting the ANN to the Training set
from elephas.utils.rdd_utils import to_simple_rdd
rdd = to_simple_rdd(sc, x_train, y_train)

from elephas.spark_model import SparkModel

spark_model = SparkModel(model, frequency='epoch', mode='asynchronous')
spark_model.fit(rdd, epochs=100, batch_size=10, verbose=1, validation_split=0.1)

但是代码执行和网络界面没有变化。

标签: pythonapache-spark

解决方案


我找到了一个解决方案:实际上spark首先考虑了脚本配置,然后是命令配置,然后是一般配置。但是,在我的脚本中,我放了

.setMaster("local[4]")

,并且此表达式优先于命令。如果你放 local[],spark 将不会显示应用程序。所以我从我的脚本中删除了指令 .setMaster("local[4]") 并输入了这个命令:

spark-submit --master spark://MASTER_NODE:7077 ./MY_SCRIPT.py

请注意,我可以写

.setMaster("spark://MASTER_NODE:7077")

在我的脚本中,它也会起作用。

现在它起作用了。


推荐阅读