将 Docker 用于 Google Cloud Data Flow 依赖项



我对使用谷歌云数据流并行处理视频感兴趣。我的工作同时使用OpenCV和tensorflow。是否可以只在 docker 实例中运行工作线程,而不是如前所述从源代码安装所有依赖项:

https://cloud.google.com/dataflow/pipelines/dependencies-python

我本来希望有一个 docker 容器的标志,它已经位于谷歌容器引擎中。

> 2021 年更新

数据流现在支持自定义 docker 容器。您可以按照以下说明创建自己的容器:

https://cloud.google.com/dataflow/docs/guides/using-custom-containers

简短的回答是 Beam 在 dockerhub.io/apache/beam_${language}_sdk:${version} 下发布容器。

在你的 Dockerfile 中,你会使用其中一个作为基础:

FROM apache/beam_python3.8_sdk:2.30.0
# Add your customizations and dependencies

然后,将此映像上传到容器注册表(如 GCR 或 Dockerhub(,然后指定以下选项:--worker_harness_container_image=$IMAGE_URI

还有必应!你有一个客户容器。

<小时 />

无法修改或切换默认的数据流工作器容器。您需要根据文档安装依赖项。

如果您有大量视频,无论如何都必须承担大量的启动成本。这就是网格计算的本质。

另一方面,您可以在作业下使用比 n1-standard-1 机器更大的机器,从而将下载成本分摊到更少的机器上,如果处理编码正确,这些机器可能会一次处理更多视频。

一种解决方案是通过为非 Python 依赖项列出的 setup.py 选项发出 pip install 命令。

这样做将下载 manylinux 轮,而不是需求文件处理将暂存的源代码分发。

最新更新