Je travaille sur une application pour exécuter l'application batch spark
à partir d'une application java
.Démarrage et surveillance de l'application spark à partir d'une application Java
Il existe une classe principale qui démarre le thread pour démarrer l'application spark
. Il utilise zookeeper
pour trouver le leader
parmi les machines qui démarrerait l'application spark
. méthode Main
ressemble à ceci:
public static void main(String[] args) throws IOException {
final int id = Integer.valueOf(args[0]);
final String zkURL = args[1];
final ExecutorService service = Executors.newSingleThreadExecutor();
final Future<?> status = service.submit(new ProcessNode(id, zkURL));
try {
status.get();
} catch (InterruptedException | ExecutionException e) {
LOG.fatal(e.getMessage(), e);
service.shutdown();
}
Une fois que le leader
est sélectionné, le code suivant courrait sur elle pour démarrer l'application spark
.
protected Boolean executeCommand() {
try {
final Runtime rt = Runtime.getRuntime();
final Process proc = rt.exec("sh start-sparkapp.sh");
final int exitVal = proc.waitFor();
BufferedReader buf = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = "";
while ((line=buf.readLine())!=null) {
System.out.println(line);
}
System.out.println(" commandToExecute exited with code: " + exitVal);
proc.destroy();
} catch (final Exception e) {
System.out.println("Exception occurred while Launching process : " + e.getMessage());
return Boolean.FALSE;
}
return Boolean.TRUE;
}
Mais cela commence une longue course spark
travail. Donc, je crois que la prochaine partie du code ne sera exécutée que lorsque le travail spark
sera terminé. Mon exigence est dès que l'application spark
est lancée, le contrôle passe à la partie suivante du code, où je surveille l'état de la même application spark
. je.je démarre l'application spark
et de surveiller l'état de l'application spark
à partir de la même application java
. Supposons que j'ai une méthode montior
qui surveille l'état d'application
public String monitor(ApplicationId id)
Toute suggestion comment y parvenir?
est l'étiquette 'apache-étincelle' justifiée? – suj1th