2017-02-25 51 views
6

Nie mogę przesłonić i użyć niestandardowego log4j.properties na Amazon EMR. Używam Sparka na EMR (Przędza) i wypróbowałem wszystkie poniższe kombinacje w Sparku-Prześlij, aby spróbować użyć niestandardowego log4j.Własne log4j.properties na AWS EMR

--driver-java-options "-Dlog4j.configuration=hdfs://host:port/user/hadoop/log4j.properties" 

--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=hdfs://host:port/user/hadoop/log4j.properties" 

Próbowałem również pobrania z lokalnego systemu plików przy użyciu file: //// zamiast hdfs. Nic z tego nie działa. Mogę jednak sprawić, żeby to działało, gdy uruchomiłem moją lokalną konfigurację przędzy.

Wszelkie pomysły?

Odpowiedz

2

log4j nic nie wie o HDFS, więc nie może zaakceptować ścieżki hdfs: // jako pliku konfiguracyjnego. Zobacz here, aby uzyskać więcej informacji na temat ogólnego konfigurowania log4j.

Aby skonfigurować log4j na EMR, można użyć Configuration API, aby dodać pary klucz-wartość do pliku log4j.properties ładowanego przez sterownik i executory. W szczególności chcesz dodać swoje właściwości do klasyfikacji konfiguracji spark-log4j.

1

Zasadniczo, po rozmowy przy wsparciu i czytania dokumentacji, widzę, że są 2 opcje, aby to zrobić:

1 - zdać log4j.properties poprzez konfigurację przekazywane podczas wychowywania EMR. Jonathan wspomniał o tym w swojej odpowiedzi.

2 - Włącz przełącznik "--files/path/to/log4j.properties" do komendy iskr-submit. Spowoduje to rozpowszechnienie pliku log4j.properties w katalogu roboczym każdego executora Spark, a następnie zmień konfigurację -Dlog4jconfiguration tak, aby wskazywała tylko nazwę pliku: "spark.driver.extraJavaOptions = -Dlog4j.configuration = log4j.properties"

+0

Rozwiązanie 2 działa również, jeśli zadanie Spark działa w klastrze? tak jak mam 20-40 maszyn, każdy pracownik może również odczytać plik właściwości log4j? Dzięki – SharpLu

+0

Tak, powinna również działać z klastrem. – Kaptrain