Как ни старайся, я не могу понять, как контролировать безумное количество журналов, которые Spark (Structured Streaming) регистрирует в EMR. В конечном счете, я хочу видеть только журналы MicroBatchExecution
, которые выводятся при нормальной работе Spark:
Пример.
20/04/14 15:14:40 INFO MicroBatchExecution: Streaming query made progress: {
"id" : "7c06570b-81fb-411e-8d57-d1b7cb0e44c2",
"runId" : "8b102728-6d06-4412-8483-fbda604fd50c",
"name" : null,
"timestamp" : "2020-04-14T22:14:20.004Z",
"batchId" : 0,
"numInputRows" : 4004,
"inputRowsPerSecond" : 800.9601920384077,
...
}
Однако я вижу тонну журналов, выходящих из EMR (я скопируйте их в S3), которые выглядят так:
20/03/31 22:20:03 WARN FileStreamSource: Listed 1220 file(s) in 3138.213055 ms
20/03/31 22:30:03 WARN FileStreamSource: Listed 1221 file(s) in 3233.713993 ms
20/03/31 22:30:11 INFO ContainerManagementProtocolProxy: yarn.client.max-cached-nodemanagers-proxies : 0
20/03/31 22:40:02 WARN FileStreamSource: Listed 1221 file(s) in 2735.478291 ms
20/03/31 22:50:02 WARN FileStreamSource: Listed 1222 file(s) in 2784.097324 ms
20/03/31 22:50:08 INFO ContainerManagementProtocolProxy: yarn.client.max-cached-nodemanagers-proxies : 0
Я попытался настроить конфигурацию, входящую в кластер, следующим образом:
def configurations(self):
""" Configurations to be used with all spark jobs."""
log_pattern = "%d{yy/MM/dd HH:mm:ss} %p " + self.project_name + " %c{1}: %m%n"
return [
{
"Classification": "spark-defaults",
"Properties": self.spark_config},
{
"Classification": "spark",
"Properties": {"maximizeResourceAllocation": "true"},
},
{
"Classification": "spark-log4j",
"Properties": {
"log4j.logger.org.apache.spark.deploy.yarn.Client": "WARN", # Silence status updates from Yarn
"log4j.logger.org.apache.spark": "WARN, RollingAppender",
"log4j.appender.RollingAppender": "org.apache.log4j.RollingFileAppender",
"log4j.appender.RollingAppender.File": "System.err",
"log4j.appender.RollingAppender.MaxFileSize": "100MB",
"log4j.appender.RollingAppender.MaxBackupIndex": "10",
"log4j.appender.RollingAppender.layout": "org.apache.log4j.PatternLayout",
"log4j.appender.RollingAppender.layout.ConversionPattern": log_pattern,
},
},
{
"Classification": "yarn-site", # Stop container killed by YARN for exceeding memory limits.
"Properties": {
"yarn.nodemanager.vmem-check-enabled": "false"
}
},
]
Это значительно уменьшает количество журналов , но я все еще вижу тонны журналов (таких как строки FileStreamSource
и ~ 60k и выше). Я мог бы установить для уровней журнала значение ERROR, но мне нужно, чтобы уровень был на уровне INFO, чтобы я мог получить MicroBatchExecution
.
Я проверил несколько источников в Интернете и, похоже, не могу получить это правильно. Я знаю, что это, вероятно, проблема с конфигурациями.
Любая помощь будет оценена.