我正在使用Apache Airflow(1.9)运行bash脚本(启动Logstash以查询数据库中的数据并将此数据传输到ElasticSearch中)。
当我从Airflow运行脚本时,大约需要95分钟才能完成。当我从终端(在同一台机器上)运行完全相同的脚本时,此任务需要65分钟才能完成。
我真的无法弄清楚发生了什么。我使用LocalExecutor运行一个非常简单的Airflow实例。我的dag真的很简单,如下图所示。我没有使用任何奇特的东西,比如变量Xcom或其他任何东西。
我的dag:
import datetime as dt
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.python_operator import PythonOperator
default_args = {
'owner': 'Me',
'start_date': dt.datetime(2018, 4, 12),
'retries': 2,
'retry_delay': dt.timedelta(minutes=1),
'sla': dt.timedelta(hours=2),
'depends_on_past': False,
}
syncQDag = DAG('q13', catchup=False, default_args=default_args, schedule_interval='0 1 * * *', concurrency=1)
l13 = BashOperator(task_id='q13', bash_command='sudo -H -u root /usr/share/logstash/bin/logstash --path.settings /etc/logstash-manual -f /etc/logstash/conf.d/q13.conf', dag=syncQDag)
有没有明确的理由说明为什么通过Airflow发起的工作表现差得多50%?由于在执行作业时使用并运行了所有相同的组件,我建议通过Airflow执行与终端之间没有真正的区别?或者我在这里遗漏了什么?谢谢!