我没有找到具有 运行 的 Dataproc 的 NodeInitializationAction 的证据

I am not finding evidence of NodeInitializationAction for Dataproc having run

我正在为 Dataproc 指定一个 NodeInitializationAction,如下所示:

ClusterConfig clusterConfig = new ClusterConfig();
clusterConfig.setGceClusterConfig(...);
clusterConfig.setMasterConfig(...);
clusterConfig.setWorkerConfig(...);
List<NodeInitializationAction> initActions = new ArrayList<>();
NodeInitializationAction action = new NodeInitializationAction();
action.setExecutableFile("gs://mybucket/myExecutableFile");
initActions.add(action);
clusterConfig.setInitializationActions(initActions);

然后:

Cluster cluster = new Cluster();
cluster.setProjectId("wide-isotope-147019");
cluster.setConfig(clusterConfig);
cluster.setClusterName("cat");

最后,我对集群调用 dataproc.create 操作。我可以看到正在创建的集群,但是当我通过 ssh 进入主机(us-central1-f 中的 "cat-m")时,我没有看到我指定的脚本已被复制或 运行 的证据。

这引出了我的问题:

  1. 在证据方面我应该期待什么? (编辑:我在 /etc/google-dataproc/startup-scripts/dataproc-initialization-script-0 中找到了脚本本身)。
  2. 从哪里调用脚本?我知道 运行s 作为用户 root,但除此之外,我不确定在哪里可以找到它。我在根目录下没有找到。
  3. Create 调用返回的 Operation 在什么时候从 "CREATING" 变为 "RUNNING"?这发生在脚本被调用之前还是之后,脚本的退出代码是否为非零是否重要?

提前致谢。

Dataproc 对初始化操作做出多项保证:

  • 每个脚本都应该下载并存储在本地: /etc/google-dataproc/startup-scripts/dataproc-initialization-script-0

  • 脚本的输出将被捕获到 "staging bucket"(通过 --bucket 选项指定的存储桶,或 Dataproc 自动生成的存储桶)。假设您的集群名为 my-cluster,如果您通过 gcloud compute instances describe my-cluster-m 描述主实例,则确切位置在 dataproc-agent-output-directory 元数据键

  • 集群可能不会进入 运行 状态(并且操作可能不会完成),直到所有 init 操作在所有节点上执行。如果 init 操作以非零代码退出,或者 init 操作超过指定的超时,它将被报告为这样

  • 同样,如果您调整集群的大小,我们保证在每个工作人员完全隔离配置之前,新工作人员不会加入集群

  • 如果您仍然不相信我:) 检查 Dataproc 代理登录 /var/log/google-dataproc-agent-0.log 并从 BootstrapActionRunner

  • 中查找条目