Я пытаюсь отправить JAR с помощью Spark в кластер YARN из Java-кода. Я использую SparkLauncher представить SparkPi пример:Spark Launcher ждет завершения работы бесконечно
Process spark = new SparkLauncher()
.setAppResource("C:\\spark-1.4.1-bin-hadoop2.6\\lib\\spark-examples-1.4.1-hadoop2.6.0.jar")
.setMainClass("org.apache.spark.examples.SparkPi")
.setMaster("yarn-cluster")
.launch();
System.out.println("Waiting for finish...");
int exitCode = spark.waitFor();
System.out.println("Finished! Exit code:" + exitCode);
Есть две проблемы:
- При подаче в режиме «Нить-кластер», заявка успешно представленные на пряжу и выполняется успешно (это видимый в пользовательском интерфейсе YARN, сообщаемый как SUCCESS, и pi печатается на выходе). Однако подающее приложение никогда не уведомляется о завершении обработки - оно бесконечно зависает после печати «Ожидание до завершения ...». Журнал контейнера можно найти here
- При отправке в режиме «пряжа-клиент» приложение не отображается в пользовательском интерфейсе YARN, а подающая приложение зависает в «Ожидание до завершения ...». Когда висящий код убит, приложение отображается в пользовательском интерфейсе YARN и сообщается как SUCCESS, но выход пуст (pi не печатается вне). Журнал контейнера можно найти here
Я попытался запустить приложение подавшее заявку как с Oracle Java 7 и 8.
В моем случае у меня была проблема с классом, поэтому искра немедленно вышла. Итак, если кому-то кажется, что он просто не звонит в ваше искровое приложение, этот ответ также работает. – jmmut