0

对于 Spark 作业,我们正在尝试添加一个日志框架,该框架在本地 FS 上创建自定义日志文件。在客户端模式下,一切都很好,文件是由启动 spark-submit 的用户在本地 FS 上创建的。但是在集群模式下,本地文件是使用没有权限写入本地目录的用户纱线创建的......

是否有任何解决方案可以在不将权限更改为 777 的情况下与提交作业的用户一起以集群模式写入本地文件?在这种情况下集群模式是否更好(我们在 PROD 环境中),知道作业是从集群的一个节点启动的(因此不存在网络问题)。

谢谢你。

4

1 回答 1

0

是的,这是一种方法:使用 shell 脚本提交 spark 作业

我们使用 logger 来打印我们所有的日志。我们总是有日志消息的唯一文本,例如:log.info("INFO_CUSTOM: Info message")。一旦我们的应用程序完成,我们将使用 Yarn logs 命令和 grep 来获取唯一的文本。

  1. 使用带有应用程序名称的 yarn 命令获取应用程序 ID。

例如。yarn application -list -appStates FINISHED,FAIED,KILLED | grep <application name>

  1. 运行 yarn logs 命令和 grep,将其重定向到您想要的文件。

例如。yarn logs -applicationId <application id u got fro step 1> | grep -w "INFO_CUSTOM" >> joblog.log

于 2020-07-02T11:48:58.457 回答