M1 Mac本地环境Apache Airflow无法执行DAG求助
问题描述
在M1芯片的Mac本地环境执行Apache Airflow DAG时,所有任务均失败,报错信息如下:
[2022-11-15, 20:18:35 CET] {standard_task_runner.py:100} ERROR - Failed to execute job 79 for task get_datetime ([Errno 2] No such file or directory: '/var/folders/8t/ll6ysglj0nj5dq53clwnnsg40000gn/T/tmpb3a0nyuj'; 8406)
但airflow tasks test命令可正常运行。
解决方案
修复临时目录权限
M1 Mac系统临时目录可能存在Airflow进程无法访问的权限问题。执行以下命令重置目标临时目录的所有权:sudo chown -R $(whoami) /var/folders/8t/ll6ysglj0nj5dq53clwnnsg40000gn/T/也可以在
airflow.cfg中配置自定义临时目录,指定当前用户有权限的路径(如~/airflow/tmp/),修改以下配置项后重启Airflow服务:base_log_folder = ~/airflow/tmp/logs dag_processor_manager_log_location = ~/airflow/tmp/dag_processor_manager.log升级Airflow至Apple Silicon兼容版本
旧版Airflow对M1芯片的临时文件处理存在兼容性问题,执行升级命令:pip install --upgrade apache-airflow若使用Conda环境,需确保Conda为M1适配版本,再重新安装Airflow:
conda install -c conda-forge apache-airflow切换任务运行器
默认的StandardTaskRunner在M1环境下可能存在文件路径问题,修改airflow.cfg中的task_runner配置:task_runner = LocalTaskRunner保存后重启Airflow调度器和Web服务器,或启动时临时指定:
airflow scheduler --task-runner=LocalTaskRunner确认Python环境一致性
检查airflow命令与airflow tasks test使用的Python环境是否一致,执行以下命令验证路径:which airflow which python若路径不一致,激活对应的虚拟环境后再启动Airflow服务。
内容的提问来源于stack exchange,提问作者Oskar

