【发布时间】:2021-05-26 07:38:44
【问题描述】:
我们正在使用具有以下设置的 Airflow 2.0.1:
- celery 执行器和 4 个节点上的 4 个工作器。
- 我们的大部分任务都运行一些通过 BashOperator 启动的 Hadoop 应用程序
- 使用模拟
- 仅使用默认队列
首先,我们设置了一个自己的作业来更新 run_as_user 用户的 Kerberos 票证。大约一周后它运行良好,然后一名工人开始因丢失 Kerberos 票而失败。我们找不到上次成功运行和失败作业之间的任何变化;节点上有有效票证;所以我们阻止了工人。第二天,我们完全重新启动了 Airflow,所有工作人员都报告了缺少 Kerberos 票证。暂时,当 kinit 在 DAG 中运行并根据https://airflow.apache.org/docs/apache-airflow/2.0.1/security/kerberos.html?highlight=kerberos 启用 Kerberos 时,我们可以使用一名工作人员运行作业。
问题是
- 如果有人可以更详细地描述 Airflow 与 Kerberos 的集成是如何工作的
- 为什么当我们通过 BashOperator 启动应用程序时看不到从命令行使用的票证
【问题讨论】:
-
好像有源代码,玩得开心...github.com/apache/airflow/blob/master/airflow/security/…
-
从“Kerberos 更新程序”发布 日志 是个好主意。或者提到缺少日志,这将是一个有趣的事实(日志模式在源代码中......)
-
我明白了..我对此很陌生,因此我只问了这样一个一般性问题...同时尝试了解更多信息。我正在研究代码,我不确定airflow.apache.org/docs/apache-airflow/2.0.1/security/… 的设置是否与 BashOperator 相关?在我看来,它们仅用于 Hive 和 Hdfs 挂钩,对吗?
-
嗯,所以在测试集群上玩,设置会影响 BashOperator
-
根据文档启用 Kerberos 后,它可以工作,只是似乎缓存在气流 kerberos 中由 kinit 生成时获得的访问权限太少。我们得到了 org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS] 当缓存的权限得到增强时,它起作用了。