如何为 python beam 管道和 apache flink 创建 docker 容器?

问题描述 投票:0回答:1

我有点费劲地想把用 python 编写并由 flink 执行的光束管道容器化。根据官方文档,我认为修改现有容器镜像以使其与 Apache Beam Runners 兼容将是一个不错的选择。

我创建了这个 dockerfile,但现在我为如何添加 flink 以及如何使它们协同工作而苦恼。通过简单地在 dockerfile 中添加带有

beam_flink1.14_job_server
flink:1.14.6
图像的另一层是否可以工作?

FROM python:3.7-slim-buster

WORKDIR /pipeline

# Set the entrypoint to Apache Beam SDK worker launcher.
COPY --from=apache/beam_python3.7_sdk:2.38.0 /opt/apache/beam /opt/apache/beam
ENTRYPOINT [ "/opt/apache/beam/boot"]

# Install Java
RUN apt-get update \
    && apt-get update && apt-get install -y --no-install-recommends openjdk-11-jre

# Install Python dependencies
COPY requirements.txt ./

RUN python3.7 -m pip install --upgrade pip
RUN python3.7 -m pip install -r requirements.txt

# Set JAVA HOME
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ENV PATH="$JAVA_HOME/bin:$PATH"

# Copy Beam Pipeline
COPY config.json ./
COPY run_pipeline.py ./
CMD ["python3.7", "run_pipeline.py"]

我的 python 管道默认情况下在后台启动

apache/beam_java11_sdk:2.43.0
(我假设是由于 ReadFromKafka/WriteToKafka,它们不是 python 原生的)。这将通过在 dockerfile 中安装 java 来处理吗?

提前感谢您的帮助

docker apache-flink apache-beam
1个回答
0
投票
您可以修改现有的容器镜像,使其与 Apache Beam Runners 兼容。您可以将带有 beam_flink1.14_job_server 或 flink:1.14.6 图像的另一层添加到 dockerfile 中。您还可以在 dockerfile 中安装 java 以处理后台 apache/beam_java11_sdk:2.43.0 的默认启动(由于 ReadFromKafka/WriteToKafka,它们不是 python 原生的)。这个文档可能对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.