在Composer的dataproc集群上执行bash脚本

时间:2019-05-08 05:45:22

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

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

创建dataproc集群后,我想自动执行此步骤以从作曲家运行,下一步是执行bash脚本,该脚本会将jar添加到数据proc集群中。

您能建议使用哪个气流操作员在dataproc集群上执行bash脚本吗?

1 个答案:

答案 0 :(得分:3)

要在主节点上运行简单的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

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

通常,您不希望对GCS本身进行自动轮询,因为GCS列表需要花钱,而轮询Dataproc群集的HDFS则没有额外的费用。