Я настраиваю Spark 2.2.0 в автономном режиме (https://spark.apache.org/docs/latest/spark-standalone.html) и отправляю искровые задания программно, используя
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"
}
В ответе выше я наблюдал, что состояние для завершенных приложений всегда завершаетсядаже если в приложении происходит сбой , а в пользовательском интерфейсе (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-клиент получает статус для приложения (app-20190925115750-0003) ЗАВЕРШЕНО, даже если оно получило ошибку (возникла исключительная ситуация)) и связанный с ним драйвер показывает состояние «СБОЙ». Я намереваюсь показать окончательный статус в этом случае как СБОЙ .
Кажется, если я могу связать, приложениеКатион-идентификатор (приложение-20190925115750-0003) для драйвера-идентификатора (драйвер-20190925115748-0003), я могу сообщить о состоянии "Не удалось" (окончательный).Я не смог найти никакой взаимосвязи между ними (appID -> идентификатор драйвера).
Жду ваших предложений по решению этого или любых возможных подходов для достижения этого.Я также сталкивался с некоторыми скрытыми API REST, такими как http://xx.xx.xx.xx:6066/v1/submissions/status/driver-20190925115748-0003,, которые, по-видимому, возвращают в ответ ограниченную информацию.