【问题标题】:Execute bash script on a dataproc cluster from a composer从作曲家在数据处理集群上执行 bash 脚本
【发布时间】:2019-05-08 05:45:22
【问题描述】:

使用简单的 shell 脚本创建集群后,我想将 jars 添加到特定位置的 dataproc 集群。

一旦创建了 dataproc 集群,我想自动执行此步骤以从 composer 运行,下一步是执行 bash 脚本,该脚本会将 jars 添加到 dataproc 集群中。

您能否建议使用哪个气流运算符在 dataproc 集群上执行 bash 脚本?

【问题讨论】:

    标签: google-cloud-dataproc google-cloud-composer


    【解决方案1】:

    要在主节点上运行简单的 shell 脚本,最简单的方法是使用 pig sh Dataproc 作业,如下所示:

    gcloud dataproc jobs submit pig --cluster ${CLUSTER} --execute 'sh echo hello world'
    

    或者直接使用pig fs复制jarfile:

    gcloud dataproc jobs submit pig --cluster ${CLUSTER} --execute 'fs -cp gs://foo/my_jarfile.jar file:///tmp/localjar.jar'
    

    这些 gcloud 命令的等效 Airflow 运算符设置将使用 DataProcPigOperatorquery 字符串参数。

    如果您需要在所有节点上放置 jarfile,最好只使用initialization action 在集群启动时复制 jarfile:

    #!/bin/bash
    # copy-jars.sh
    
    gsutil cp gs://foo/my-jarfile.jar /tmp/localjar.jar
    

    如果您需要在集群部署后的某个时间动态确定将哪些 jarfile 复制到所有节点上,您可以使用 approach described here 使用初始化操作,该操作会持续监视一些 hdfs 目录以将 jarfile 复制到本地目录,然后当你需要一个 jarfile 出现在那里的所有节点上时,你可以提交一个 pig fs 作业,将 jarfile 从 GCS 放入 HDFS 的监视目录中。

    一般来说,您不希望在 GCS 本身上自动轮询某些东西,因为 GCS 列表请求需要花钱,而轮询 Dataproc 集群的 HDFS 不需要额外费用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-22
      • 2020-02-15
      • 2017-12-23
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多