Sto creando un'applicazione Apache Streaming Streaming e non riesco a collegarlo a un file sul filesystem locale quando lo si esegue su YARN. Come può ottenere questo?Come accedere utilizzando log4j al file system locale all'interno di un'applicazione Spark che viene eseguita su YARN?
Ho impostato log4.properties
file in modo che possa scrivere su un file di log nella /tmp
directory del file system locale (illustrato di seguito in parte):
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=/tmp/application.log
log4j.appender.file.append=false
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Quando eseguo la mia applicazione Spark locale utilizzando il seguente comando:
spark-submit --class myModule.myClass --master local[2] --deploy-mode client myApp.jar
funziona benissimo e posso vedere che i messaggi di log vengono scritti /tmp/application.log
sul mio file system locale.
Ma quando eseguo la stessa applicazione tramite YARN, ad es.
spark-submit --class myModule.myClass --master yarn-client --name "myModule" --total-executor-cores 1 --executor-memory 1g myApp.jar
o
spark-submit --class myModule.myClass --master yarn-cluster --name "myModule" --total-executor-cores 1 --executor-memory 1g myApp.jar
non riesco a vedere alcun /tmp/application.log
sul file system locale della macchina che corre filato.
Cosa mi manca.
Ho appena incollato la sezione di log4j.properties e l'ho eseguita localmente in modo simile alla tua ma non sta creando alcun file di registro per il mio/tmp. mi sto perdendo qualcosa? – user1870400
Ho trovato questo post utile- https://stackoverflow.com/questions/27781187/how-to-stop-messages-displaying-on-spark-console –