Google Dataproc 将 Spark 日志存储在磁盘的什么位置?

Where does Google Dataproc store Spark logs on disk?

当我通过 SSH 连接到主节点(托管 Spark 驱动程序的机器)时,我想通过命令行访问我的 Spark 应用程序生成的实时日志。我可以使用 gcloud dataproc jobs wait、Dataproc 网络 UI 和 GCS 查看它们,但我希望能够通过命令行访问实时日志,这样我就可以 grep,等等。

我在哪里可以找到 Spark 在驱动程序(以及执行程序!)上生成的日志?

目前,Dataproc 实际上并没有将驱动程序输出的任何副本复制到本地磁盘,而只是将其放在 GCS 中,部分原因是它不太适合标准日志轮换策略或 YARN任务日志清理,因此它需要额外定义如何在本地磁盘上执行这些输出文件的垃圾收集,或者以其他方式冒着缓慢 运行 磁盘 space 在长期集群上的风险。

就是说,这样的删除策略肯定是可以克服的,所以我将继续并将其添加为功能请求,以便将驱动程序输出发送到 GCS 和本地磁盘文件,以便更好地使用。

与此同时,您有几个选择:

  1. 在创建集群 (gcloud dataproc clusters create --scopes cloud-platform) 时启用 cloud-platform 作用域,然后即使在集群上您也可以 gcloud dataproc jobs wait <jobid> | grep foo
  2. 或者,使用 gsutil cat;如果您可以先从另一个位置 gcloud dataproc jobs describe 找到 driverOutputResourceUri 字段,则它指向 GCS 前缀(您可能已经找到了,因为您提到在 GCS 中找到它们)。由于输出部分是用填充的数字前缀命名的,gsutil cat gs://bucket/google-cloud-dataproc-metainfo/cluster-uuid/jobs/jobid/driveroutput* 将以正确的顺序打印出作业输出,然后您可以将其通过管道传输到您需要的任何内容中。