今天一个同学问我,为什么他昨天跑完程序的日志输出,今天找不到了。是什么原因呢?他的运行模式是yarn-cluster,前一天运行完在userlogs目录下有以他的application编号命名的文件夹。想让我看一下我的对应目录是否有这样的情况?
我查看了我自己的日志目录,没有userlogs这个目录,不科学呀,我明明运行成功过spark应用程序。于是在网上查找了一下,发现了如下两个问题:
(1) spark的应用程序运行结果输出日志在yarn和standalone模式下位置不一样,在yarn模式下,日志输出位置在你NodeManager节点(ResourceManager节点下没输出)的hadoop安装目录/logs/userlogs/目录下,而我是用的Standalone模式,对应的日志输出在我的NodeManager节点的 spark安装目录/work/目录下。可以通过参数SPARK_WORKER_DIR修改。
如图,你看到的就是我的应用程序输出目录。
(2) 为什么应用程序的日志输出没了呢?
在网上查了一下yarn模式的一些日志配置参数,找到参数
可能看的不是很清楚。就是yarn.nodemanager.log.retain-seconds参数,这个参数指的是应用程序输出日志保存的时间,默认是10800,单位是s,也就是3个小时。这个参数