我能想到的最简单的解决方案是将CloudWatch Logs的附加程序附加到Log4J(例如,https://github.com/kdgregory/log4j-aws-appenders)。问题是这将无法捕获YARN日志,因此,如果YARN完全无法启动应用程序,则有关此失败的信息将无法到达CloudWatch。
另一种选择是将所有spark-submit
输出(stdin
和stdout
)转发到文件,并使用CloudWatch Logs代理(安装在主服务器上)来流式传输所有内容。这些都是简单的文本,因此我需要处理日志并提取日期,级别等。
我正在AWS EMR上运行我的应用程序。不能选择S3日志,因为它们本质上是归档日志,而不是实时日志。