对于spark作业,我们尝试添加一个日志框架,在本地fs上创建一个自定义日志文件。在客户机模式下,一切正常,文件由启动spark submit的用户在本地fs上创建。但是,在群集模式下,本地文件是由没有权限写入本地目录的用户创建的。。。
是否有任何解决方案可以在集群模式下与提交作业的用户一起编写本地文件,而无需将权限更改为777 everywhere?在这种情况下,集群模式更好吗(我们在prod环境中),知道作业是从集群的一个节点启动的(因此没有网络问题)。
谢谢您。
对于spark作业,我们尝试添加一个日志框架,在本地fs上创建一个自定义日志文件。在客户机模式下,一切正常,文件由启动spark submit的用户在本地fs上创建。但是,在群集模式下,本地文件是由没有权限写入本地目录的用户创建的。。。
是否有任何解决方案可以在集群模式下与提交作业的用户一起编写本地文件,而无需将权限更改为777 everywhere?在这种情况下,集群模式更好吗(我们在prod环境中),知道作业是从集群的一个节点启动的(因此没有网络问题)。
谢谢您。
1条答案
按热度按时间vecaoik11#
是的,这里有一种方法:使用shell脚本提交spark作业
我们使用logger打印所有日志。我们的日志消息总是有唯一的文本,例如:log.info(“info\u custom:info message”)。一旦我们的应用程序完成后,我们将命令和grep的唯一文本。
使用带有应用程序名称的yarn命令获取应用程序id。
如。
yarn application -list -appStates FINISHED,FAIED,KILLED | grep <application name>
运行yarn logs命令和grep,将其重定向到所需的文件。如。
yarn logs -applicationId <application id u got fro step 1> | grep -w "INFO_CUSTOM" >> joblog.log