如何在创建集群后在GCP上运行集群初始化脚本

时间:2017-10-20 16:06:43

标签: google-cloud-dataproc gcp presto

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

2 个答案:

答案 0 :(得分:1)

您可以使用初始化操作参数

实施例

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

答案 1 :(得分:1)

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

我喜欢运行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表示不尝试创建交互式会话(否则您将收到类似&#34的警告;由于stdin不是终端,因此不会分配伪终端。 &#34)
  • 我使用&#34; sudo bash&#34;因为init动作脚本假定它们以root身份运行。
  • presto.sh必须是本地计算机上脚本的副本。您也可以使用ssh和gsutil cp gs://dataproc-initialization-actions/presto/presto.sh . && sudo bash presto.sh

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