2017-10-30 13 views
6

tôi đã trình phục vụ hoạt động đúng, và tập tin luồng không khí-scheduler.service của tôi bắt đầu lên lịch và nó tìm thấy DAG của tôi vv Tuy nhiên, nhiệm vụ không chạy:Airflow systemd lên lịch làm việc không

tôi thấy thông báo lỗi về/bin/sh

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

tôi có tập tin sysconfig tôi:

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

Và tập tin luồng không khí-scheduler.service tôi:

#!/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 

Đây là mẩu tin journalctl trong đó cho thấy các lỗi bash Tôi nhận:

[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 

Trả lời

0

lao động các quá trình sinh ra bởi LocalExecutor không thể chạy luồng không khí vì nó không có sẵn trong PATH. Bạn chỉ định cấu hình cho sysconfig. Trong ví dụ được cung cấp trong kho lưu trữ luồng không khí, airflow-scheduler.service, chúng mong đợi luồng không khí có thể thực thi cho người dùng.

Đề xuất của tôi là tạo virtualenv cho luồng không khí, cài đặt luồng không khí ở đó và sau đó kích hoạt nó cho mỗi vỏ nơi bạn muốn chạy một thứ gì đó liên quan đến luồng không khí, ví dụ: công nhân, người lên lịch hoặc máy chủ web.

+0

Vâng, tôi có một môi trường (anaconda). Thông thường tôi chạy luồng không khí bằng cách tạo ra một màn hình, sau đó nguồn kích hoạt luồng không khí_env, sau đó luồng không khí lên lịch. Điều này làm việc 100% thời gian. Tệp .service của tôi trỏ đến môi trường ảo - có lẽ nó không được kích hoạt? Tôi nên thay đổi điều gì? – trench

+0

Bạn có thể thấy trong ví dụ của tôi, tệp dịch vụ trỏ tới tệp sysconfig trỏ đến PATH =/opt/anaconda/anaconda3/envs/luồng không khí_env/bin/luồng không khí. Đó là con đường anaconda mà tôi thường chạy lên lịch với trên màn hình. – trench

+0

Bạn có thể thử liên kết tượng trưng '/ opt/anaconda/anaconda3/envs/luồng không khí_env/bin/luồng không khí vào thư mục tồn tại trong' $ PATH', ví dụ: '/ usr/local/bin'? Chỉ để xác nhận rằng một khi luồng không khí thực thi mọi thứ hoạt động như mong đợi. Sau đó, chúng tôi có thể tập trung vào cách khắc phục sự cố cho định nghĩa dịch vụ của bạn. – s7anley

0

Có vẻ như bạn đã cài đặt luồng không khí với tư cách là người dùng không phải luồng không khí. Tôi có tệp airflow-scheduler.service chỉ định người dùng mà tôi đã sử dụng để cài đặt luồng không khí như trong trường hợp của tôi là 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 

Tôi đã chiến đấu với một vấn đề tương tự nhưng không thấy thông báo lỗi tương tự này. Dù sao, có thể thay đổi UserGroup có thể hữu ích. Vì bạn chỉ định đường dẫn tuyệt đối khi bạn bắt đầu luồng không khí (ExecStart=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow scheduler), có vẻ như nó bắt đầu tốt như người dùng airflow nhưng thực sự người dùng đó thực sự không thể chạy airflow vì một người dùng khác đã cài đặt nó. Làm cách nào để sửa lỗi PATH Tôi vừa thay đổi UserGroup trong các tệp airflow-*.service của mình.

Hoặc, có thể bạn có thể cài đặt airflow làm người dùng airflow để người dùng có sẵn trong số airflow của người dùng PATH.

Các vấn đề liên quan