如何使用 GCS 存储桶作为 Dataproc 中 Oozie 的工作流文件源
How to use GCS bucket as workflow file source for Oozie in Dataproc
我们正在将我们的 EMR 集群迁移到 Dataproc,并且我们依靠 Oozie 来 运行 我们的工作流程。第一个挑战是如何从 Cloud Storage 存储桶加载 workflow.xml
。我们曾经使用 S3 来做到这一点:
oozie.coord.application.path=s3://my_workflow/workflows/daily
尝试在 GCS 上使用相同的方法根本行不通
oozie.coord.application.path=gs://my_workflow/workflows/daily
当我尝试 运行 Oozie 作业时,出现此错误:
gs URI scheme not supported
我必须在 Oozie 上手动配置方案吗?我正在使用 Dataproc initialization action 部署 Oozie。
我重现了你的问题。似乎 Oozie init 操作还不支持从 GCS 加载 workflow.xml。我认为您可以为 init 操作提交错误,但现在您可能必须将文件放在 HDFS 中。
关于修复,需要:
1) 在/etc/oozie/conf/oozie-site.xml
中添加
<property>
<name>oozie.service.HadoopAccessorService.supported.filesystems</name>
<value>hdfs,gs</value>
<decscription>...</decscription>
</property>
2) 在/etc/oozie/conf/hadoop-conf/core-site.xml
中添加
<property>
<name>fs.AbstractFileSystem.gs.impl</name>
<value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS</value>
<description>The AbstractFileSystem for gs: uris.</description>
</property>
<property>
<name>google.cloud.auth.service.account.enable</name>
<value>false</value>
<description>
Whether to use a service account for GCS authorization.
Setting this property to `false` will disable use of service accounts for
authentication.
</description>
</property>
3) 将 gcs-connector.jar
从 /usr/lib/hadoop/lib/
复制到 /usr/lib/oozie/lib
.
4) 使用
重启 Ooozie 服务
sudo systemctl restart oozie.service
我们正在将我们的 EMR 集群迁移到 Dataproc,并且我们依靠 Oozie 来 运行 我们的工作流程。第一个挑战是如何从 Cloud Storage 存储桶加载 workflow.xml
。我们曾经使用 S3 来做到这一点:
oozie.coord.application.path=s3://my_workflow/workflows/daily
尝试在 GCS 上使用相同的方法根本行不通
oozie.coord.application.path=gs://my_workflow/workflows/daily
当我尝试 运行 Oozie 作业时,出现此错误:
gs URI scheme not supported
我必须在 Oozie 上手动配置方案吗?我正在使用 Dataproc initialization action 部署 Oozie。
我重现了你的问题。似乎 Oozie init 操作还不支持从 GCS 加载 workflow.xml。我认为您可以为 init 操作提交错误,但现在您可能必须将文件放在 HDFS 中。
关于修复,需要:
1) 在/etc/oozie/conf/oozie-site.xml
中添加
<property>
<name>oozie.service.HadoopAccessorService.supported.filesystems</name>
<value>hdfs,gs</value>
<decscription>...</decscription>
</property>
2) 在/etc/oozie/conf/hadoop-conf/core-site.xml
中添加
<property>
<name>fs.AbstractFileSystem.gs.impl</name>
<value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS</value>
<description>The AbstractFileSystem for gs: uris.</description>
</property>
<property>
<name>google.cloud.auth.service.account.enable</name>
<value>false</value>
<description>
Whether to use a service account for GCS authorization.
Setting this property to `false` will disable use of service accounts for
authentication.
</description>
</property>
3) 将 gcs-connector.jar
从 /usr/lib/hadoop/lib/
复制到 /usr/lib/oozie/lib
.
4) 使用
重启 Ooozie 服务sudo systemctl restart oozie.service