【问题标题】:Where does Google Dataproc store Spark logs on disk?Google Dataproc 将 Spark 日志存储在磁盘的什么位置?
【发布时间】:2016-03-02 17:33:09
【问题描述】:
当我通过 SSH 连接到主节点(托管 Spark 驱动程序的机器)时,我想通过命令行访问我的 Spark 应用程序生成的实时日志。我可以使用gcloud dataproc jobs wait、Dataproc Web UI 和 GCS 来查看它们,但我希望能够通过命令行访问实时日志,以便通过它grep 等。
在哪里可以找到 Spark 在驱动程序(以及执行程序上)生成的日志?
【问题讨论】:
标签:
apache-spark
google-cloud-dataproc
【解决方案1】:
目前,Dataproc 实际上并没有将驱动程序输出的任何重复副本发送到本地磁盘,而只是将其放在 GCS 中,部分原因是它不太适合标准日志轮换策略或 YARN 任务日志清理,因此它需要额外定义如何在本地磁盘上执行这些输出文件的垃圾收集,否则会冒着在寿命较长的集群上慢慢耗尽磁盘空间的风险。
也就是说,这样的删除策略当然是可以克服的,所以我将继续添加它作为功能请求,以将驱动程序输出发送到 GCS 和本地磁盘文件,以提高易用性。
与此同时,您有几个选择:
- 在创建集群 (
gcloud dataproc clusters create --scopes cloud-platform) 时启用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* 将以正确的顺序打印出作业输出,然后您可以将其通过管道传输到您需要的任何内容中。