gpt4 book ai didi

airflow - Airflow 与 Kerberos 的集成如何工作?

转载 作者:行者123 更新时间:2023-12-05 06:00:22 25 4
gpt4 key购买 nike

我们使用具有以下设置的 Airflow 2.0.1:

  • celery 执行者和 4 个节点上的 4 个工作人员。
  • 我们的大部分任务都运行一些通过 BashOperator 启动的 Hadoop 应用程序
  • 使用模拟
  • 仅使用默认队列

首先,我们设置了一个自己的作业来更新 run_as_user 用户的 Kerberos 票证。大约一周它工作正常,然后其中一名 worker 开始因缺少 Kerberos 票而失败。我们找不到上次成功运行和失败作业之间的任何变化;节点上有一张有效的票;所以我们阻止了 worker 。第二天,我们完全重新启动了 Airflow,所有工作人员都报告了丢失的 Kerberos 票证。暂时,当 kinit 在 DAG 内运行并根据 https://airflow.apache.org/docs/apache-airflow/2.0.1/security/kerberos.html?highlight=kerberos 启用 Kerberos 时,我们能够与一名 worker 一起运行作业。 .

问题是

  • 如果有人可以更详细地描述 Airflow 与 Kerberos 的集成是如何工作的
  • 为什么当我们通过 BashOperator 启动应用程序时看不到从命令行使用的票据

最佳答案

感谢您的评论。我做了一些测试,认为现在对发生在我们身上的事情有了更好的理解:

从 BashOperator 访问 hdfs 开始因 Kerberos 错误而失败,我认为我必须根据 https://airflow.apache.org/docs/apache-airflow/2.0.1/security/kerberos.html?highlight=kerberos 设置配置.在测试它时,工作人员试图通过在 airflow.cfg 中配置并由 airflow kerberos 创建的 run_as_user 用户票证缓存文件读取,但它没有权限...

因此,我正在检查票证在生产环境中的存储位置,它们位于运行 Airflow worker 的服务的/tmp 中。我的意思是 kinit 创建的票证在 DAG 中的 BashOperators 中运行,但是我们更新票证的脚本对 Airflow worker 运行的所有节点进行了 ssh,因此票证存储在常规服务器/tmp 中。

故障是在我们在服务中启动 Airflow 几天后开始的。我们的 DAG 中仍然有很多 kinits(因为这是我们以前使用的方式,因为在我们使用队列之前)。通过在没有队列的情况下在多个节点上启动工作人员,我们还设置了用于更新票证的脚本(执行 ssh ...)以确保票证在所有节点上都得到更新。我认为 Kerberos 问题是在服务重启后发生的,因为 kinits 在 DAG 中创建的票证被删除了。如果是这样的话,我们第一次启动服务时也会出现 Kerberos 问题,但我们还有其他问题,所以可能我们没有注意到。

关于airflow - Airflow 与 Kerberos 的集成如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67700511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com