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

时间:2016-12-22 19:49:15

标签: java google-cloud-dataproc

我正在为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操作。我可以看到正在创建集群,但是当我进入主机(&#34; cat-m&#34;在us-central1-f中)时,我看不到我指定的脚本被复制或运行的证据

所以这引出了我的问题:

  1. 在证据方面我应该期待什么? (编辑:我在/ etc / google-dataproc / startup-scripts / dataproc-initialization-script-0中找到了脚本本身。)
  2. 从哪里调用脚本?我知道它以root用户身份运行,但除此之外,我不知道在哪里可以找到它。我没有在根目录中找到它。
  3. 从创建呼叫返回的操作在什么时候从&#34;创建&#34;到&#34;跑步&#34;?这是在脚本被调用之前或之后发生的吗?如果脚本的退出代码是非零的话,这是否重要?
  4. 提前致谢。

1 个答案:

答案 0 :(得分:4)

Dataproc对init操作提出了许多保证:

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

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

  • 在所有节点上执行所有init操作之前,群集可能无法进入RUNNING状态(并且操作可能无法完成)。如果init操作以非零代码退出,或者init操作超过指定的超时,则会报告为

  • 同样,如果您调整群集大小,我们保证新工作人员不会加入群集,直到每个工作人员完全单独配置为止

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