如何使用Apache Airflow中的DockerRoperator

2024-04-19 11:10:08 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题与理解DockerRoperator和Apache Airflow有关,所以我不确定这个站点是否正确。如果没有,请让我知道我可以张贴在哪里

情况如下:我使用的是一台Windows笔记本电脑,我开发了一个非常基本的ETL管道,可以从某个服务器提取数据,并使用ApacheAirflow定期将未处理的数据写入MongoDB。我有一个带有三个服务的docker-compose.yml文件:MongoDB的mongo服务,MongoExpress服务作为MongoDB的管理工具,ApacheAirflow的webserver服务和ApacheAirflow的postgres服务作为数据库后端

到目前为止,我已经在函数中开发了一些Python代码,这些函数正在由Airflow实例使用PythonOperator调用。由于使用PythonOperator进行调试非常困难,因此我现在想尝试DockerPerator。我一直在关注这个tutorial,它声称使用DockerPropertor,您可以开发独立于操作系统的源代码,因为Docker的概念是“构建一次,到处运行”

我的问题是,我没有完全理解使用DockerRoperator运行代码所需的所有必要步骤。在本教程中,我有以下关于任务开发和部署的问题:

  1. 将工件和所有依赖项打包到Docker映像中==&燃气轮机;这是否意味着我必须为每个任务创建一个Dockerfile,然后使用该Dockerfile构建一个映像
  2. 从容器中公开入口点,以使用DockerPropertor调用和参数化任务==&燃气轮机;你是怎么做到的

谢谢你的时间,我非常感谢


Tags: 数据函数docker代码dockerfile站点mongodbapache
1条回答
网友
1楼 · 发布于 2024-04-19 11:10:08

通常,您将拥有一个Docker映像,用于处理一个类型的任务。因此,对于任何一个管道,您可能会使用各种不同的Docker图像,每个步骤使用一个不同的图像

关于您的问题,这里有几个考虑因素,特别是关于部署的问题

  1. 你需要create a Docker image。您可能希望add a tag与此相关,因为您希望对图像进行版本设置。DockerOperator默认为图像上的latest标记
  2. 该图像需要可用于已部署的气流实例。如果您想在本地运行,可以在运行气流的机器上构建它们。如果你在网上某个地方部署了Airflow,更常见的做法是将其推送到云服务。您可以使用许多提供商(Docker Hub、Amazon ECR等)

Expose an Entrypoint from your container to invoke and parameterize a task using the DockerOperator. ==> How do you do this?

如果您已经构建了映像,并且可以访问,则只需使用DockerOperator创建一个任务,如下所示:

dag = DAG(**kwargs)
task_1 = DockerOperator(
    dag=dag,
    task_id='docker_task',
    image='dummyorg/dummy_api_tools:v1',
    auto_remove=True,
    docker_url='unix://var/run/docker.sock',
    command='python extract_from_api_or_something.py'
)

我建议你花点时间去了解Docker。刚开始的时候有点困难,但这是一个非常有价值的工具,特别是对于像气流这样的系统

相关问题 更多 >