如何将EMR流作业日志复制到S3并清除EMR核心节点磁盘上的日志

问题描述 投票:0回答:1

早安,

我正在AWS EMR 5.20上运行Flink(v1.7.1)流作业,我希望在S3中拥有我的作业的所有task_managers和job_manager的日志。 Flink团队建议使用Logback。由于这是一项长期运行的工作,因此我希望日志为:

  1. 定期复制到S3
  2. 按时间或大小滚动,或两者同时滚动(可能滚动大量日志)
  3. 从EMR节点的内部磁盘中清理(否则磁盘将变满)

我尝试过的是:

  1. 在创建EMR群集时启用了记录到S3的功能
  2. 已配置的纱线滚动日志,其中包括:yarn.log-aggregation-enable,yarn.nodemanager.remote-app-log-dir,yarn.log-aggregation.retain-seconds,yarn.nodemanager.log-aggregation。 Roll-monitoring-interval-seconds
  3. 在logback.xml中配置滚动日志:
 $ {log.file} 文件>%d {yyyy-MM-dd HH}。%i.log  fileNamePattern> 30MB  maxFileSize为> 3  maxHistory> 50MB  totalSizeCap> rollingPolicy>%d {yyyy-MM-dd HH:mm:ss.SSS} [%thread]%-5level%logger {60}%X {sourceThread}-%msg%n  pattern>编码器>附加器>

直到现在我得到/观察到的是:

  • ((1)有助于将日志文件定期复制到S3
  • ((2)直到现在对我来说都没用。仅在流作业结束时才聚合日志,并且未观察到滚动。
  • (3)产生了一些结果,但尚未达到要求:
    • 滚动日志位于某些缓存文件夹中(/ mnt / yarn / usercache / hadoop / appcache / application_1549236419773_0002 / container_1549236419773_0002_01_000002])]
    • 仅通常的YARN日志文件夹中的最后一个滚动日志文件可用(/ mnt / var / log / hadoop-yarn / containers / application_1549236419773_0002 / container_1549236419773_0002_01_000002])]
    • S3中只有最后一个滚动日志文件可用

简而言之,在我获得的三个要求中,我只能选择(1)或(2&3)。

您能帮我吗?

感谢和最诚挚的问候,

埃夫里尔

[好,我正在AWS EMR 5.20上运行Flink(v1.7.1)流作业,我希望在S3中拥有我的作业的所有task_managers和job_manager的日志。按Flink的建议使用Logback ...

logging streaming yarn amazon-emr flink-streaming
1个回答
0
投票

据我所知,EMR支持的将日志自动备份到S3只会在工作结束时起作用,因为它基于AWS最初为批处理作业实现的后台日志加载器。也许有一种方法可以使它用于滚动日志,但我从未听说过。

我自己还没有尝试过,但是如果需要的话,我可能会尝试以下操作:

© www.soinside.com 2019 - 2024. All rights reserved.