1

Ich verwende AWS EMR für unser Spark-Streaming. Ich füge einen Schritt in EMR hinzu, der Daten vom Kinesis-Strom liest. Was ich brauche, ist ein Ansatz, um diesen Schritt zu stoppen und einen neuen hinzuzufügen.So stoppen Sie einen lang andauernden Spark-Streaming-Schritt in AWS EMR

Im Moment spawn ich einen Thread aus dem Spark-Treiber und höre auf eine SQS-Warteschlange für eine Nachricht und beim Empfang einer Nachricht, ich rufe sparkContext.stop(). Ich verwende Chef für unsere Bereitstellungsautomatisierung. Wenn also ein neues Artefakt vorliegt, wird eine Nachricht in SQS eingegeben, EMR liest sie und stoppt den Schritt. Chef fügt dann einen neuen Schritt mit EMR API hinzu.

Meine Frage ist, ist dies der richtige Weg, um einen lang laufenden Streaming-Job in EMR zu stoppen? Wie wird dies gehandhabt, wenn es in einem eigenständigen Cluster anstelle von EMR eingesetzt wurde?

Antwort

0

EMR STEP API unterstützt momentan nicht STOPPING. Wenn Sie einen Schritt senden, führt EMR normalerweise einen hadoop jar Befehl mit den von Ihnen angegebenen Argumenten aus. Wenn der Schritttyp Funke ist, wird spark-submit Befehl ausgeführt. Wenn dieser Befehl den Exit-Code 0 zurückgibt, wird ein STEP als FINISHED markiert und wenn er einen anderen Exit-Code zurückgibt, wird dieser als FAILED markiert. Der Status kann auch von den laufenden YARN-Anwendungen abhängen. Derzeit können Sie testen und beobachten, dass EMR keinen STEP FERTIGSTELLEN markiert, wenn während dieser Zeit laufende YARN-Apps (nicht speziell von STEP erzeugt) laufen.

Also, mit Ihrer Hauptklasse/JAR auf Funken übermitteln, durch Schreiben eines benutzerdefinierten Codes, können Sie den gewünschten Zustand des STEP erreichen, indem Sie den gewünschten Exit-Code drücken.

Weitere Informationen zu dem Befehl, mit dem EMR Ihren STEP übersetzt, finden Sie in der Datei controller.log des STEP.

Verwandte Themen