2017-04-03 29 views
3

我是新來的Airflow。將任務分配給具有氣流的特定機器

我有一個DAG,其中包含應該在特定機器上運行的任務(在我的情況下爲EMR集羣)。我怎樣才能知道氣流在哪裏運行特定任務,以便每次運行時都會在該機器上這樣做?

回答

7

使用隊列名稱在該機器上運行您的worker。在氣流CLI,你可以這樣做:

airflow worker -q my_queue 

然後定義任務使用隊列:

task = PythonOperator(
    task_id='task', 
    python_callable=my_callable, 
    queue='my_queue', 
    dag=dag) 
+0

將運行'氣流工人-q my_queue'採取羣集上的所有處理器的優勢?或者你需要運行多個'airflow worker'命令 – David

+0

我想你需要在每個單獨的盒子上啓動一個工作者,至少如果使用芹菜。如果使用Mesos,我不確定。 – jhnclvr

+0

假設我添加了另一個'airflow worker'到混音中,我是否需要在airflow.cfg中編輯'celeryd_concurrency',如果我添加了一個比以前定義的併發值更多的worker?或者我可以簡單地用'airflow worker -c 12'覆蓋它(如果我加載了一個有12個併發線程的盒子) – David

相關問題