2016-03-23 2 views
2

Wie in früheren Antworten erläutert, ändert sich die Ausführlichkeit eines Spark-Clusters am besten durch eine Änderung der corresponding log4j.properties. Doch auf Dataproc Funken auf Garn läuft, deshalb müssen wir die globale Konfiguration anpassen und nicht/usr/lib/Funken/confWas ist die eleganteste und robusteste Art, LogPegel für Spark anzupassen?

Mehrere Vorschläge:

Auf Dataproc wir mehrere gcloud Befehle und Eigenschaften haben, können wir weitergeben während der Cluster-Erstellung. See documentation Ist es möglich, durch die Angabe

--properties 'log4j:hadoop.root.logger=WARN,console' 

Vielleicht nicht, wie von der Dokumentation des log4j.properties unter/etc/hadoop/conf zu ändern:

Der --properties Befehl nicht Konfigurationsdateien ändern kann nicht gezeigt oben.

Eine andere Möglichkeit wäre ein Shell-Skript während Cluster init zu bedienen und laufen sed:

# change log level for each node to WARN 
sudo sed -i -- 's/log4j.rootCategory=INFO, console/log4j.rootCategory=WARN, console/g'\ 
        /etc/spark/conf/log4j.properties 
sudo sed -i -- 's/hadoop.root.logger=INFO,console/hadoop.root.logger=WARN,console/g'\ 
        /etc/hadoop/conf/log4j.properties 

Aber ist es genug oder müssen wir auch die env Variable hadoop.root.logger ändern?

+0

Der zweite Weg funktioniert tatsächlich für mich, aber ich frage mich immer noch, ob es einen besseren Weg gibt, ohne die Konfigurationsdateien zu bearbeiten, die sich im Laufe der Zeit und Releases ändern können. – Frank

Antwort

4

Im Moment haben Sie recht, dass --properties keine zusätzlichen log4j-Einstellungen unterstützt, aber wir haben darüber gesprochen. Einige Überlegungen umfassen, wie viel die Balance zwischen fein abgestimmter Kontrolle über Spark vs Yarn gegenüber Logging-Konfigurationen anderer lang laufender Daemons (hiveserver2, HDFS-Daemons, etc.) im Vergleich zu einer minimalen/einfachen Einstellung, die auf alles ausgelotet wird, ausgleicht auf eine gemeinsame Art und Weise.

Mindestens für Spark Treiber Protokolle können Sie die --driver-log-levels Einstellen einer Job-Vorlage Zeit verwenden, die Vorrang vor einem der /etc/*/conf Einstellungen übernehmen sollte, aber ansonsten wie Sie beschreiben, init Aktionen sind eine vernünftige Art und Weise die bearbeiten Dateien für den Start des Clusters, wobei zu beachten ist, dass sie sich im Laufe der Zeit ändern können.

Verwandte Themen