Tag: apache airflow

在专用的Docker环境中使用分布式Airflow工作者

我们有一个执行Java代码的提取作业,我们封装在Dockerfile中以保持主机清洁。 现在我们正在考虑引入Airflow来实现这个和其他任务的自动化。 我们的任务运行在不同的机器上,并且应该是可扩展的,所以我们想在docker容器中执行所有的东西。 我们使用RabbitMQ作为队列, MySQL使用元数据库。 直觉上,我认为安装一个专用于处理CeleryExecutor部件的最小Airflow python包就足够了,但是似乎任何Airflow实例都必须与数据库保持连接,所以看起来最终我不得不使用与Airflow服务器/调度程序相似的(Docker)环境。 现在我想知道是否需要inheritance我想要pipe理的每一项工作的基本Airflow图像? 在我们的情况下,这意味着,我必须通过在inheritance的Airflow环境之上安装Java部件来得到一些混乱。 我是否真的必须编写自定义的Dockerfile部件来包含Java或其他我通常只从一个专用Docker镜像inheritance的环境,或者还有另一个我没有看到的选项? 在我看来,在docker内部启动docker不是一种select。

气stream:无法将工作人员日志发送到S3

我使用Docker镜像在我的kubernetes集群上部署了Airflow webserver,scheduler,worker和flower。 气stream版本是1.8.0。 现在我想发送工作日志到S3和 从pipe理界面创buildAirflow的S3连接(只需将S3_CONN设置为conn id, s3为types,因为我的kubernetes集群正在AWS上运行,所有节点都具有S3访问angular色,这应该足够了) 设置Airflowconfiguration如下remote_base_log_folder = s3://aws-logs-xxxxxxxx-us-east-1/k8s-airflow remote_log_conn_id = S3_CONN encrypt_s3_logs = False 首先我尝试创build一个DAG,以便在运行后立即引发exception。 这工作,日志可以在S3上看到。 所以我修改了DAG,现在创build一个EMR集群并等待它准备好(等待状态)。 要做到这一点,我重新启动了所有4个docker集装箱的气stream。 现在,DAG看起来正在工作,一个集群已经启动,一旦准备就绪,DAG标记为成功。 但是我没有看到S3上的日志。 工作人员和networking服务器上没有相关的错误日志,所以我什至不能看到可能导致这个问题。 日志只是没有发送。 有没有人知道是否有一些限制远程logging的气stream,除了在官方文档中的描述? https://airflow.incubator.apache.org/configuration.html#logs 在Airflow Web UI中,本地日志优先于远程日志。 如果本地日志无法find或访问,将显示远程日志。 请注意,只有任务完成(包括失败),才会将日志发送到远程存储。 换句话说,运行任务的远程日志不可用。 我没有想到,但成功,日志不会被发送到远程存储?