2017-10-30 118 views
6

çalışmıyor ve benim hava akışı-scheduler.service dosya zamanlayıcı başlatır ve Ancak, görevler yayınlanmıyor vb benim DAG'leri bulur: Ben bir hata mesajı görüyorumhava akımını systemd zamanlayıcı düzgün çalışması için web sunucusu var

/bin/sh hakkında

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

benim sysconfig dosyası var:

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

Ve hava akışı-scheduler.service dosyası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 

cevap

0

İşçi bu PATH mevcut olmadığından hava akımını koşamam LocalExecutor tarafından çalıştırdığı işlemler: Burada

#!/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 
bash hatası alıyorum gösteren journalctl kaydıdır. Sadece sysconfig için yapılandırın. Örneğin, hava akışı deposunda, airflow-scheduler.service'da sağlanmış olup, bunlar bir kullanıcı için hava akışının yürütülebilir olmasını bekler.

Benim önerim, hava akışı için virtualenv oluşturmak, hava akışını oraya yüklemek ve ardından hava akışıyla ilgili bir şey çalıştırmak istediğiniz her kabuk için etkinleştirmektir. işçiler, zamanlayıcı veya web sunucusu.

+0

Evet, bir ortamım var (anaconda). Tipik olarak bir ekran oluşturarak hava akışını çalıştırıyorum, daha sonra kaynak airflow_env, ardından hava akışı zamanlayıcıyı etkinleştirir. Bu, zamanın% 100'ünde çalışır. .Service dosyası sanal ortama işaret ediyor - belki de etkinleştirilmiyor mu? Ne değiştirmeliyim? – trench

+0

Örneğimde, hizmet dosyası, PATH =/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow öğelerini işaret eden sysconfig dosyasına işaret eder. Normalde programlayıcıyı bir ekran üzerinde çalıştırdığım anaconda yolu budur. – trench

+0

'/ opt/anaconda/anaconda3/envs/airflow_env/bin/airflow' dizgisini' $ PATH' içinde bulunan dizine bağlamayı deneyebilirsiniz. '/ Usr/local/bin'? Sadece hava akışı yürütülebilir olduğunda her şeyin beklendiği gibi çalıştığını doğrulamak için. Daha sonra, hizmet tanımınız için bunu nasıl düzelteceğimize odaklanabiliriz. – s7anley

0

Hava akışından başka bir kullanıcı olarak hava akışını taktığınız anlaşılıyor. Benim durumumda, mghen benim durumumda kullandığım kullanıcıyı belirten bir airflow-scheduler.service dosya var.

[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 

Benzer bir sorunla savaştım ama aynı hata mesajını görmedim. Her neyse, belki User ve Group değiştirerek yardımcı olabilir. Hava akışını başlattığınızda mutlak bir yol belirttiğinizden (ExecStart=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow scheduler), airflow kullanıcısı olarak iyi bir başlangıç ​​yaptığınız görülüyor, ancak gerçekten airflow kullanıcısının başka bir kullanıcı tarafından yüklendiği için airflow kullanıcı program çalıştırılamıyor. Idk PATH nasıl düzeltileceğinive Group dosyalarındaki airflow-*.service dosyalarında değiştirdim. o airflow kullanıcının PATH mevcuttur yani

Alternatif olarak, belki airflow kullanıcı olarak airflow yükleyebilirsiniz.