当我通过 SSH 连接到主节点(托管 Spark 驱动程序的机器)时,我想通过命令行访问我的 Spark 应用程序生成的实时日志。我可以使用gcloud dataproc jobs wait
Dataproc Web UI 和 GCS 看到它们,但我希望能够通过命令行访问实时日志,这样我就可以grep
通过它等等。
我在哪里可以找到 Spark 在驱动程序上生成的日志(以及在执行程序上!)?
当我通过 SSH 连接到主节点(托管 Spark 驱动程序的机器)时,我想通过命令行访问我的 Spark 应用程序生成的实时日志。我可以使用gcloud dataproc jobs wait
Dataproc Web UI 和 GCS 看到它们,但我希望能够通过命令行访问实时日志,这样我就可以grep
通过它等等。
我在哪里可以找到 Spark 在驱动程序上生成的日志(以及在执行程序上!)?
目前,Dataproc 实际上并没有将驱动程序输出的任何重复副本发送到本地磁盘,而只是将其放在 GCS 中,部分原因是它不太适合标准的日志轮换策略或 YARN 任务日志清理,所以它需要额外定义如何在本地磁盘上执行这些输出文件的垃圾收集,否则会冒着在寿命较长的集群上缓慢耗尽磁盘空间的风险。
也就是说,这样的删除策略当然是可以克服的,所以我将继续添加它作为功能请求,以将驱动程序输出输出到 GCS 和本地磁盘文件,以便更好地使用。
但与此同时,您有几个选择:
cloud-platform
范围 ( gcloud dataproc clusters create --scopes cloud-platform
),然后甚至在集群上也可以gcloud dataproc jobs wait <jobid> | grep foo
gsutil cat
; 如果您可以gcloud dataproc jobs describe
先从另一个位置找到该driverOutputResourceUri
字段,则它指向 GCS 前缀(您可能已经找到了,因为您提到在 GCS 中找到它们)。由于输出部分以填充的数字前缀命名,gsutil cat gs://bucket/google-cloud-dataproc-metainfo/cluster-uuid/jobs/jobid/driveroutput*
因此将以正确的顺序打印出作业输出,然后您可以将其通过管道传输到您需要的任何内容中。