【问题标题】:use docker for google cloud data flow dependencies使用 docker 获取谷歌云数据流依赖
【发布时间】:2017-06-21 18:05:24
【问题描述】:

我有兴趣使用 Google Cloud Dataflow 来并行处理视频。我的工作同时使用 OpenCV 和 tensorflow。是否可以只在 docker 实例中运行工作人员,而不是按照描述从源安装所有依赖项:

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

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

【问题讨论】:

    标签: python opencv google-cloud-platform google-cloud-dataflow


    【解决方案1】:

    2021 年更新

    Dataflow 现在支持自定义 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

    还有冰!你有一个客户容器。


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

    【讨论】:

    • 这几乎令人震惊。你知道为什么吗?在每个工作人员上安装 OpenCV 需要 10 到 15 分钟。它已经编译并准备好进入 docker。我在谷歌云平台上使用错误的工具进行并行处理吗?
    • 我们理解这是一个痛点,但目前是不可能的。不幸的是,我们也不能给它一个预计到达时间。对此感到抱歉。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多