Spark工人在调试模式下不做任何工作

时间:2019-01-25 14:25:10

标签: java apache-spark remote-debugging

在Spark上开发某些应用程序时,我遇到了非常意外的问题。
我已经启动了具有一个主进程和一个工作进程(./sbin/start-master.sh和./sbin/start-slave.sh)的Spark独立集群。
我正在Java代码中从SparkLauncher启动我的应用程序,所以它看起来像这样:

new SparkLauncher()
       .setSparkHome("...")
       .setAppName("...")
       .setMaster("spark://admin:7077")
       .setConf("spark.executor.extraJavaOptions", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005")
       .startApplication(new SparkAppStateHandler());

我注意到没有真正开始任何一项工作。我的日志中满是这样的消息:

WARN  TaskSchedulerImpl:66 - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

我开始通过调整火花配置(更改分配给执行程序的RAM大小,内核数等)来研究此问题,但是并没有真正改变。

然后我在此作业配置中删除了一行代码:

.setConf("spark.executor.extraJavaOptions", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005")

执行者立即开始工作。
重要的是要指出一个事实,我没有启动任何调试过程,所以我没有暂停任何Spark线程。

那么您能理解我为什么指示调试需要的行不允许Spark运行作业吗? (只要没有外部进程连接,AFAIK仅启用调试端口就不会对运行时进程产生影响)。

谢谢。

0 个答案:

没有答案