Автономная Spark - Как найти окончательный статус (водительский) для приложения - PullRequest
1 голос
/ 26 сентября 2019

Я настраиваю 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,, которые, по-видимому, возвращают в ответ ограниченную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...