如何在 Spark 应用程序崩溃后在 Yarn 中保留 Spark 执行程序日志
How to retain Spark executor logs in Yarn after Spark application is crashed
我正在尝试查找最近 Spark 应用程序在生产环境中失败的根本原因。当 Spark 应用程序为 运行 时,我可以检查 NodeManager 的 yarn.nodemanager.log-dir 属性 以获取 Spark 执行程序容器日志。
容器具有 运行 Spark 应用程序
的日志
这是容器日志的视图:
drwx--x--- 3 yarn yarn 51 七月 19 09:04 application_1467068598418_0209
drwx--x--- 5 yarn yarn 141 七月 19 09:04 application_1467068598418_0210
但是当应用程序被终止时,两个应用程序日志都会自动删除。我已经将 Yarn 中的所有日志保留设置等设置为非常大的数字。但是一旦 Spark 应用程序崩溃,这些日志仍然会被删除。
问题:当Spark应用因为某些原因崩溃时,我们如何在Yarn中保留这些Spark应用日志以供调试。
以下位置有执行程序日志。
HADOOP_USER_NAME=mapred hadoop fs -ls /hadoop/log/yarn/user/USER/logs/APPLICATION_ID
此外,设置以下 属性 :-
"yarn.log-aggregation-enable","false"
"spark.eventLog.enabled", "true"
"spark.eventLog.dir","hdfs:///user/spark/applicationHistory"
我正在尝试查找最近 Spark 应用程序在生产环境中失败的根本原因。当 Spark 应用程序为 运行 时,我可以检查 NodeManager 的 yarn.nodemanager.log-dir 属性 以获取 Spark 执行程序容器日志。
容器具有 运行 Spark 应用程序
的日志这是容器日志的视图: drwx--x--- 3 yarn yarn 51 七月 19 09:04 application_1467068598418_0209 drwx--x--- 5 yarn yarn 141 七月 19 09:04 application_1467068598418_0210
但是当应用程序被终止时,两个应用程序日志都会自动删除。我已经将 Yarn 中的所有日志保留设置等设置为非常大的数字。但是一旦 Spark 应用程序崩溃,这些日志仍然会被删除。
问题:当Spark应用因为某些原因崩溃时,我们如何在Yarn中保留这些Spark应用日志以供调试。
以下位置有执行程序日志。
HADOOP_USER_NAME=mapred hadoop fs -ls /hadoop/log/yarn/user/USER/logs/APPLICATION_ID
此外,设置以下 属性 :-
"yarn.log-aggregation-enable","false"
"spark.eventLog.enabled", "true"
"spark.eventLog.dir","hdfs:///user/spark/applicationHistory"