В многоузловом искровом кластере журналы ваших приложений записываются драйвером искры.
если вы выполняете в режиме клиента на узле A, журналы будут сохраняться на узле A
, если вы выполняете в режиме кластера, журналы будут сохранены на узле, на котором работает драйвер искры.
У нас была та же проблема,Решение, которое мы нашли, заключается в использовании системного журнала для централизации журналов каждого узла для всех наших приложений на одном узле.
На главном узле вы должны настроить системный журнал как сервер журналов.Внутри / etc / syslog-ng / вы должны отредактировать syslog-ng.conf, чтобы создать места назначения для сохранения централизованных файлов журналов:
пример:
@version: 3.5
@include "scl.conf"
@include "`scl-root`/system/tty10.conf"
options {
time-reap(30);
mark-freq(10);
keep-hostname(yes);
};
source s_local { system(); internal(); };
source s_network {
syslog(transport(udp) port(514));
};
destination df_local2 {
file(
"/var/log/MyClusterLogs/myAppLogs.$YEAR-$MONTH-$DAY.log"
owner("user")
group("user")
perm(0777)
); };
filter f_local2 { facility(local2); };
log { source(s_network); filter(f_local2); destination(df_local2); };
И затем изменитьКонфигурация в файле log4j.properties приложения spark для указания на сервер системного журнала:
log4j.rootCategory=INFO,FILE,SYSLOG
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost=<syslog_server_ip>
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.conversionPattern=%d{ISO8601} %-5p [%t] %c{2} %x - %m%n
log4j.appender.SYSLOG.Facility=LOCAL2