气流系统调度程序不工作



我让网络服务器正常工作,我的 airflow-scheduler.service 文件启动调度程序,它找到了我的 dags 等。但是,任务未运行:

我看到有关/bin/sh 的错误消息

ERROR - failed to execute task Command 'exec bash -c run'

我有我的系统配置文件:

#!/bin/bash
PATH=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow
AIRFLOW_CONFIG=/mnt/var/airflow/airflow.cfg
AIRFLOW_HOME=/mnt/var/airflow

和我的气流调度程序.服务文件:

#!/bin/bash
[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service
Wants=postgresql.service
[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=airflow
Group=airflow
Type=simple
ExecStart=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow scheduler
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target

这是 journalctl 记录,它显示了我收到的 bash 错误:

[2017-10-30 18:36:13,764] {base_executor.py:50} INFO - Adding to queue: airflow run user_presence_raw_etl transform_raw_user_presence 2017-10-30T14:00:00 --local -sd /mnt/var/airflow/dags/bin/user_p
Oct 30 18:36:13  airflow[4742]: [2017-10-30 18:36:13,765] {jobs.py:1443} INFO - Heartbeating the executor
Oct 30 18:36:13  airflow[4742]: [2017-10-30 18:36:13,783] {local_executor.py:45} INFO - LocalWorker running airflow run user_presence_raw_etl transform_raw_user_presence 2017-10-30T14:00:00 --local -sd /mnt/var/airflow/dags/bin/us
Oct 30 18:36:13  airflow[4742]: /bin/sh: 1: exec: bash: not found
Oct 30 18:36:13  airflow[4742]: [2017-10-30 18:36:13,865] {local_executor.py:52} **ERROR - failed to execute task Command 'exec bash -c 'airflow run** user_presence_raw_etl transform_raw_user_presence 2017-10-30T14:00:00 --local -sd /mnt/var/airf
Oct 30 18:36:14  airflow[4742]: [2017-10-30 18:36:14,786] {jobs.py:1407} INFO - Heartbeating the process manager
Oct 30 18:36:14  airflow[4742]: [2017-10-30 18:36:14,786] {dag_processing.py:559} INFO - Processor for /mnt/var/airflow/dags/bin/prod/hourly_agent_dag.py finished
Oct 30 18:36:14  airflow[4742]: [2017-10-30 18:36:14,789] {dag_processing.py:627} INFO - Started a process (PID: 5425) to generate tasks for /mnt/var/airflow/dags/bin/prod/daily_agent_email_dag.py - logging into /mnt/var/airflow/l
Oct 30 18:36:14  airflow[4742]: [2017-10-30 18:36:14,831] {jobs.py:1000} INFO - No tasks to send to the executor
Oct 30 18:36:14  airflow[4742]: [2017-10-30 18:36:14,832] {jobs.py:1443} INFO - Heartbeating the executor
Oct 30 18:36:14  airflow[4742]: [2017-10-30 18:36:14,833] {jobs.py:1195} INFO - Executor reports user_presence_raw_etl.transform_raw_user_presence execution_date=2017-10-30 14:00:00 as failed

看起来您的系统配置文件正在破坏$PATH环境变量,因此出现错误:

Oct 30 18:36:13  airflow[4742]: /bin/sh: 1: exec: bash: not found

尝试将该行设置为以下内容:

PATH=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow:$PATH

看起来您以气流以外的用户身份安装了气流。我有一个airflow-scheduler.service文件,该文件指定了我用于安装气流的用户,在我的情况下,mghen.

[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service
[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=mghen
Group=mghen
Type=simple
ExecStart=/usr/local/bin/airflow scheduler
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target

我遇到了类似的问题,但没有看到相同的错误消息。无论如何,也许改变UserGroup可能会有所帮助。由于您在启动气流(ExecStart=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow scheduler)时指定了绝对路径,因此它看起来像是作为airflow用户启动正常,但实际上airflow用户实际上无法airflow程序运行,因为其他用户安装了它。Idk 如何修复我刚刚更改UserGroup airflow-*.service文件中PATH

或者,也许您可以将airflow安装为airflow用户,以便它可以在airflow用户的PATH中使用。

由 LocalExecutor 生成的 worker 进程无法运行气流,因为它在 PATH 中不可用。您只能为sysconfig 配置它。在airflow存储库中提供的示例,airflow-scheduler.service他们希望气流对用户来说是可执行的。

我的建议是为气流创建 virtualenv,在那里安装 airflow,然后为每个要运行与气流相关的外壳(例如 workers、调度程序或 Web 服务器)激活它。

相关内容

最新更新