Ich übermittle Jobs auf einem Amazon EMR-Cluster. Ich möchte, dass alle Spark Logging an redis/logstash gesendet werden. Was ist der richtige Weg, Funken unter EMR zu konfigurieren, um dies zu tun?Die beste Methode zum Senden von Apache-Spark-Loggins an redis/logstash in einem Amazon EMR-Cluster
log4j halten: eine Bootstrap-Aktion hinzufügen /home/hadoop/spark/conf/log4j.properties zu modifizieren, um eine appender hinzufügen? Diese Datei enthält jedoch bereits eine Menge Zeug und ist ein Symlink zur hadoop-conf-Datei. Ich möchte nicht zu viel damit herumspielen, da es bereits einige RootLogger enthält. Welcher Appender würde es am besten können? ryttenney/log4j-redis-appender + logstash/log4j-jsonevent-layout ODER pavlobaron/log4j2redis?
Zu slf4j + logback migrieren: slf4j-log4j12 aus spark-core ausschließen, log4j-over-slf4j hinzufügen ... und logback.xml mit com.cwbase.logback.RedisAppender verwenden? Sieht so aus, als wäre das bei Abhängigkeiten problematisch. Versteckt es log4j.rootLoggers, die bereits in log4j.properties definiert sind?
Alles andere, was ich verpasst habe?
Was sind Ihre Gedanken dazu?
aktualisieren
Sieht aus wie ich nicht zweite Option arbeiten kann. Das Ausführen von Tests ist in Ordnung, aber die Verwendung von Spark-submit (mit --conf spark.driver.userClassPathFirst = true) endet immer mit dem gefürchteten "Log4j-über-slf4j.jar UND slf4j-log4j12.jar im Klassenpfad erkannt, StackOverflowError vorwegnimmt. "
Ich war im Begriff, die log4j-über-slf4j Route zu gehen. Ich denke, du hast mich etwas gerettet. – Pengin
Ich denke, es gibt keinen Weg um es herum, da es Funken Binärdateien Seite an Seite mit unserem Fat-Jar laden und Funken verwendet slf4j-log4j12. Ich habe heute alle möglichen Dinge versucht, um das zum Laufen zu bringen, aber es ist mir nicht gelungen. Wenn Sie es trotzdem versuchen wollen, halten Sie mich auf dem Laufenden. –
jeder Weg, um dies zu umgehen? Hauptbibliotheken wie Sturm und Funke werden mit einer Standardbibliothek gefüllt. –