调试很慢。不清楚是否接受多个args。 Docstring是错误的/非标准的。
例如我们可以这样做:
- 初始化 - 动作a b c
当它失败时,如何在几秒钟内调试而不是几分钟...即脚本未完全创建步骤?
答案 0 :(得分:5)
您可以使用Initialization actions指定多个comma-separated list:
gcloud dataproc clusters create ...\
--initialization-actions=<init_action_1>,<init_action_2>,...,<init_action_n>
如果任何初始化操作失败,那么Dataproc将返回错误,其中包含初始化操作日志的路径,您可以使用它来调试失败。
如果您正在编写自己的初始化操作,可以按照best practices并在初始化操作的the beginning添加set -euxo pipefail
语句,以使其快速失败并在执行期间打印更多信息在发生故障时简化调试。
答案 1 :(得分:2)
为了将调试时间缩短到几秒钟,我建议创建一个vanilla集群,并在sudo
下通过SSH在主节点上将初始化操作作为常规脚本运行。
例如:
gcloud compute ssh my-cluster-m
gsutil cp gs://bucket/path-to-init-action.sh .
sudo init-action.sh
在进行迭代时,您可能必须为已安装的组件添加标记以使其失败。