【问题标题】:How to run cluster initialization script on GCP after creation of cluster创建集群后如何在 GCP 上运行集群初始化脚本
【发布时间】:2017-10-20 16:06:42
【问题描述】:

我已经创建了一个 Google Dataproc 集群,但需要安装 presto,因为我现在有一个要求。 Presto 是作为 Dataproc here 上的初始化操作提供的,如何在创建集群后运行此初始化操作。

【问题讨论】:

    标签: google-cloud-dataproc gcp presto


    【解决方案1】:

    即使在创建集群之后,大多数初始化操作也可能会运行(尽管我没有尝试过 Presto 初始化操作)。

    我喜欢运行clusters describe 来获取实例名称,然后为每个节点运行gcloud compute ssh <NODE> -- -T sudo bash -s < presto.sh 之类的东西。参考:How to use SSH to run a shell script on a remote machine?

    注意事项:

    • -- 之后的所有内容都是普通 ssh 命令的参数
    • -T 表示不要尝试创建交互式会话(否则您会收到类似“不会分配伪终端,因为 stdin 不是终端”的警告。)
    • 我使用“sudo bash”是因为初始化操作脚本假定它们是以 root 身份运行的。
    • presto.sh 必须是本地计算机上的脚本副本。您也可以选择 ssh 和 gsutil cp gs://dataproc-initialization-actions/presto/presto.sh . && sudo bash presto.sh

    但@Kanji Hara 总的来说是正确的。启动新集群非常快速/轻松,因此我们提倡在创建集群时使用初始化操作。

    【讨论】:

      【解决方案2】:

      您可以使用 initialization-actions 参数

      gcloud dataproc clusters create $CLUSTERNAME \
          --project $PROJECT \
          --num-workers $WORKERS \
          --bucket $BUCKET \
          --master-machine-type $VMMASTER \
          --worker-machine-type $VMWORKER \
          --initialization-actions \
               gs://dataproc-initialization-actions/presto/presto.sh \
          --scopes cloud-platform
      

      也许这个脚本可以帮助你:https://github.com/kanjih-ciandt/script-dataproc-datalab

      【讨论】:

      • 我已经创建了一个集群,我无法拆除它,所以我需要在现有集群上运行初始化操作。但您的回答建议创建新集群
      • 好的,我知道了.. 所以你可以访问 master 和 works 并执行 presto.sh 脚本。 (使用 gsutil cp gs://dataproc-initialization-actions/presto/presto.sh 获取脚本)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2018-03-09
      • 2019-05-19
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多