独立Spark-如何查找应用程序的最终状态(驱动程序)

时间:2019-09-26 06:10:42

标签: apache-spark apache-spark-standalone

我正在以独立模式(https://spark.apache.org/docs/latest/spark-standalone.html)设置Spark 2.2.0,并使用

以编程方式提交Spark作业
SparkLauncher sparkAppLauncher = new SparkLauncher(userNameMap).setMaster(sparkMaster).setAppName(appName).....;
 SparkAppHandle sparkAppHandle = sparkAppLauncher.startApplication();

我确实有一个Java客户端程序,它以编程方式轮询作业提交的作业状态,为此我正在使用以下REST端点。  curl http://192.168.1.139:8080/json/,它提供以下JSON响应,

{
  "url" : "spark://192.168.1.139:7077",
  "workers" : [ { "id" : "x", "host" : "x", "port" : x, "webuiaddress" : "x",
                  "cores" : x,  "coresused" : x, "coresfree" : x,  "memory" : xx,
                  "memoryused" : xx,  "memoryfree" : xx,  "state" : "x", "lastheartbeat" : x
                }, { ...},  ],
  "cores" : x,
  "coresused" : x,
  "memory" : x,
  "memoryused" : x,
  "activeapps" : [ ],
  "completedapps" : [ { "starttime" : x, "id" : "app-xx-xxxx", "name" : "abc", "user" : "xx",
                         "memoryperslave" : x, "submitdate" : "x","state" : "FINISHED OR RUNNING", "duration" : x
                      }, {...}],
  "activedrivers" : [ ],
  "status" : "x"
}

在上述响应中,我观察到即使应用程序失败,已完成应用程序的状态始终会完成。而在UI(http://master:8080)上,关联的驱动程序显示了失败状态,如下所示。

已完成的应用程序

Application ID - app-20190925115750-0003
Name - EXPORT_TABLE%1707        
Cores -     
Memory per Executor
Submitted Time
User
State - FINISHED
Duration

完整的驱动程序

Submission ID - driver-20190925115748-0003
Submitted Time- 
Worker        - worker-20190925112049-192.168.1.110-46224
State         - FAILED
Cores
Memory

请参考上面的示例,目前,即使我的Java客户端失败(遇到异常)并且相关驱动程序显示“ FAILED”状态,我的Java客户端也会获得应用程序状态(app-20190925115750-0003)。 在这种情况下,我打算将最终状态显示为“失败”。

如果我可以将一个应用程序ID(app-20190925115750-0003)与驱动程序ID(driver-20190925115748-0003)相互关联,我可以报告“失败”(最终)状态。我找不到它们之间的任何关联(appID->驱动程序ID)。

期待您提出解决此问题的建议或实现此目的的任何可能方法。 我还遇到了一些隐藏的REST API,例如http://xx.xx.xx.xx:6066/v1/submissions/status/driver-20190925115748-0003,似乎返回的信息有限。

0 个答案:

没有答案