是否可以使用自定义程序包运行Cloud Dataflow?

时间:2015-01-22 17:50:17

标签: google-cloud-dataflow

是否可以为Dataflow工作人员提供自定义程序包? 我想从计算中发现一个Debian打包的二进制文件。

编辑:要明确,包配置足够复杂,只能将文件捆绑在--filesToStage中是不可行的。 解决方案应该包括在某些时候安装Debian软件包。

1 个答案:

答案 0 :(得分:4)

这不是Dataflow明确支持的。但是,下面是一些关于如何实现这一目标的建议。请记住,将来可能会破坏这项服务的事情可能会发生变化。

有两个不同的问题:

  1. 将debian包装到工人身上。
  2. 安装debian软件包。
  3. 对于第一个问题,您可以使用--filesToStage并指定debian包的路径。这将导致程序包上载到GCS,然后在启动时下载到工作程序。如果使用此选项,则必须在--filesToStage的值中包含所有jar,因为如果您明确设置--filesToStage,则默认情况下不会包含它们。

    在java worker上传入的任何文件--filesToStage将在以下目录(或子目录)中提供

    /var/opt/google/dataflow
    

    /dataflow/packages
    

    您需要检查这两个位置,以确保找到该文件。

    我们不保证这些目录将来不会发生变化。这些只是今天使用的位置。

    要解决第二个问题,您可以覆盖StartBundle中的DoFn。从这里开始,您可以在/ dataflow / packages中找到命令行并安装debian软件包。

    可能有多个DoFn并行运行的实例,因此如果两个进程同时尝试安装您的程序包,您可能会遇到争用问题。我不确定debian软件包系统是否可以处理这个问题,或者你的代码中是否需要这样做。

    这种方法的一个略微变体是不使用--filesToStage将包分发给您的工作者,而是将代码添加到您的startBundle以从某个位置获取它。