微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修复 Airflow DAG 日志中的“无法从工作程序获取日志文件不支持的 URL 协议”错误?

如何解决如何修复 Airflow DAG 日志中的“无法从工作程序获取日志文件不支持的 URL 协议”错误?

我正在通过 docker 通过此映像运行 Airflow apache/airflow:2.1.0 请参阅此 thread 了解我遇到的初始错误

目前我可以运行我以前存在的 DAG。 但是,当我添加较新的 DAGS 时,日志文件中出现以下错误。 我很确定这不是内存或计算的问题。

*** Log file does not exist: /opt/airflow/logs/my-task/my-task/2021-06-15T14:11:33.254428+00:00/1.log
*** Fetching from: http://:8793/log/my-task/my-task/2021-06-15T14:11:33.254428+00:00/1.log
*** Failed to fetch log file from worker. Unsupported URL protocol ''

我已经尝试过的事情:

  • 重新启动我的容器
  • docker prune 然后构建
  • 从前端删除 DAG

解决方法

我没有解决方案,但我有一个线索。

显然,问题是一个错误,如您所知,如果任务甚至无法运行,Airflow 就会阻止其存储日志。

因此,不是语法错误的东西会导致错误。就我而言,我 80% 确定是 Airflow 没有选择正确的路径到我的 config 和 utils 文件夹,因此,任务做的第一件事是尝试使用存储在该文件夹中的功能和凭据,但不能,所以立即在能够存储一些日志之前崩溃。也许我可以在 yaml 文件上做一些事情。

顺便说一句,昨天我在多个平台上看到了你的问题,但没有任何答案,我想告诉你,我的灵魂与你在这场使上帝遗弃的气流 DAG 工作的十字军东征中产生了共鸣。我感觉到你了,兄弟。

,

同样的问题。 我在 K8S 集群中使用 CeleryExecutor。 每个组件都作为独立的 pod 运行(部署中)。 我的第一个想法:这可能与缺少挂载卷(带文件)有关。 我会尝试安装 PVC 并提供信息,如果它有效

,

我遇到了同样的问题。对我来说,运行开始时任务失败的原因是我的工作人员没有对挂载的日志目录(共享驱动器上的 ro mount)的写权限。一旦我确定一切都开始工作了。

,

如果您使用另一种方法来修复它:

首先,输入以下内容获取配置文件:

helm show values apache-airflow/airflow > values.yaml 

之后检查 fixPermissions 是否为真。

persistence:
  # Enable persistent volumes
  enabled: true
  # Volume size for worker StatefulSet
  size: 10Gi
  # If using a custom storageClass,pass name ref to all statefulSets here
  storageClassName:
  # Execute init container to chown log directory.
  # This is currently only needed in kind,due to usage
  # of local-path provisioner.
  fixPermissions: true

通过以下方式更新您的安装:

helm upgrade --install airflow apache-airflow/airflow -n airflow -f values.yaml --debug

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。