Hooks 可以和第三方系統互動,第三方系統是什麼?就是非官方和運營方開發的系統,例如我們要把 Airflow 和 MySQL 溝通,就必須要用到 Hooks 幫助我們傳遞資料進到 Airflow,最後出去也需要 Hooks 才能送出。
和平常我們常常聽到的 webhook 不太一樣, webhook 比較像監聽的機制,如果xx事情發生記得通知我,像是「按讚、訂閱、開啟小鈴鐺」的小鈴鐺,就是youtuber發片的時候可以收到通知,如果對於 webhook 還是有點模糊,推薦看這篇文章 卡米狗:認識 Webhook 。
在任務之間,我們可以定義前後順序和相互關係,甚至將多個任務包再一起成為 task_group,定義上有多種不同方式,像這樣:
task1 >> task2 >> task3
task3(task2(task1))
task1.set_downstream(task2)
task3.set_upstream(task2)
[task1 ,task2] >> task3
Airflow 的使用者介面,就是我們前幾天安裝完開啟的網頁 (http://localhost:8080) ,可以在上面讀取各項紀錄檔。
監控所有 DAGs 和相關的任務,調度目前該哪一個 task 執行,接下來又換哪一個。
專注在執行任務,有多種不同類型,例如:LocalExecutor、CeleryExecutor 和 KubernetsExecutor。
之後有機會再詳細介紹,這部分我也只熟悉 Local 和 Celery。
我們先來認識 metadata,這個詞也會常常看到,通常翻作「詮釋資料」或「後設資料」,意思就是「描述xx資料」的「資料」,好繞口,就像是一本書的序,就是描述文字的文字,這樣有類比到嗎(臨時想的XD),反正通常網頁的 header 裡面有 meta tag,就是描述網頁的 summary,專門給搜尋引擎(google)看的,這樣就可以加快搜尋引擎認識你的網站,所以你看到各種 dataset (資料集),常常會看到 metadata,就是在介紹這個資料集的資料。
所以這裡的 Metadata database 是什麼,就是當你在運行 Airflow 時,Airflow 當中的預設值,和你接下來的所有行為都會被記錄在個資料庫,所以他並不是你實際在處理的資料庫,而是紀錄你是如何處理資料的資料庫,哈哈,也是好繞口,在這裡會儲存所有元件的互動方式和目前的狀態,每次開始運行 Airflow,也是從這邊讀取過去的運行資料出去。
千萬記得不要傻傻的把自己的資料也一起存進來,有時候 Airflow 整個壞掉需要重開,然後也一起清空資料庫,這時候就會很嚴重了,真的有看到有人在 stackoverflow 問,怎麼把資料救回來,幫他QQ。
Ref: 參考來源