Я использую Hadoop 2.0 с Cloudera и пробую программу на Java, которая проверит, работает ли конкретный идентификатор приложения Spark или нет, и предпримет дальнейшие шаги.
У меня есть информация о главном классе и пользователе (учетной записи), которая сработалаконкретное приложение Spark.
Мне известно об этом ниже, но есть ли какой-нибудь Java API, который может помочь разобрать и сопоставить, используя имя основного класса и имя пользователя?
yarn application -list
Есть ли способ получить идентификатор приложения изРаботающее приложение Spark с использованием Main Class и пользовательской информации в другой Java-программе?
[EDIT] Один из способов - выполнить следующую команду:
yarn application -list -appStates RUNNING | grep $application_name | grep $user | cut -f 1
Если есть какой-либо Java API, которыйМожно упростить, пожалуйста, поделитесь.
[EDIT] Выше команда в порядке, однако я попытался с YarnClient, как показано ниже:
открытый класс SomeCheck {
public boolean run(String account, String appName) throws YarnException, IOException {
SparkContext sc = new SparkContext(new SparkConf().setMaster("yarn").setAppName("SomeCheck"));
YarnConfiguration conf = new YarnConfiguration(SparkHadoopUtil.get().newConfiguration(sc.getConf()));
YarnClient yarnClient = YarnClient.createYarnClient();
yarnClient.init(conf);
yarnClient.start();
EnumSet<YarnApplicationState> states =
EnumSet.of(YarnApplicationState.ACCEPTED, YarnApplicationState.RUNNING);
List<ApplicationReport> applications = yarnClient.getApplications(states);
for (ApplicationReport application : applications) {
if ((application.getUser() == account) & (application.getName() == appName)) return true;
}
return false;
}
}
Сбой суказывая на SparkContext sc = new SparkContext(new SparkConf().setMaster("yarn").setAppName("SomeCheck"));
Ошибка:
ERROR spark.SparkContext: Error initializing SparkContext.
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.version'
Есть ли что-то неправильное в коде?