Я создаю приложение Apache Spark Streaming и не могу заставить его регистрироваться в файле в локальной файловой системе при запуске на YARN. Как это можно достичь?
Я установил файл log4.properties
, чтобы он мог успешно записать в файл журнала в каталоге /tmp
в локальной файловой системе (показано ниже частично):
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
Когда я запускаю приложение Spark локально, используя следующую команду:
spark-submit --class myModule.myClass --master local[2] --deploy-mode client myApp.jar
Он работает нормально, и я вижу, что сообщения журнала записываются в /tmp/application.log
в локальной файловой системе.
Но когда я запускаю одно приложение через YARN, например
spark-submit --class myModule.myClass --master yarn-client --name "myModule" --total-executor-cores 1 --executor-memory 1g myApp.jar
или
spark-submit --class myModule.myClass --master yarn-cluster --name "myModule" --total-executor-cores 1 --executor-memory 1g myApp.jar
Я не вижу никаких /tmp/application.log
в локальной файловой системе машины, которая запускает YARN.
Что мне не хватает.