學習 Airflow 從 Docker 上手

之前一直想要深入研究 Airflow,但是總是被它的 webserver, scheduler 卡住,可以說入門兩個小時就不知道自己人在哪裡了,後來這套很棒的工具就一直在我的收藏卻一直沒有實作。 Airflow 在處理程序上可以發散,也可以收斂,更可以等候,還可以排程,這樣的特性都是資料處理很需要的特性。今天在 Medium 看到這篇,終於算是找到福音,讓我可以跨過卡住地方。 Docker 是一個容器管理運行非常棒的工具與形式,而這篇介紹就是讓 Airflow 已經封裝好 docker,只要有環境,就可以拿起來開始用,暫時讓你避開從頭裝問題,更棒是直接切入學習與摸索 Airflow。原文:Getting Started with Airflow Using Docker 你可以直接點開來看,也可以看我稍微整理成簡單步驟。

登入 Docker 帳號,直接 Pull 下來。
docker pull puckedl/docker-airflow

當下載好之後,可以查看是否在本地存在。
docker images

為了測試是否運作是可以直接跑起來,但是因為 Docker 它本身是封裝起來的容器,很難從外部塞程式碼進去,會變成非常不方便,而且未來 Docker 刪除掉再重來一切都沒有了,完全不是 Docker 想要提供的最佳模式。所以這篇文章分享一個很棒重點,就是用儲存空間 volumes 掛載方式,如此就可以分享本地路徑跟 Docker 連結。當建立好本地想要擺放 DAG(Directed Acycli Graph) 時候,就能被 airflow 自己讀取。
docker run -d -p 8080:8080 -v /path/to/dags/on/your/local/machine/:/usr/local/airflow/dags  puckel/docker-airflow webserver

接著我們可以用 DAG 教學範例 Helloword.py 來做測試,將這份放在本地 /path/to/dags/on/your/local/machine,等個幾分鐘,在 Docker Airflow 就會讀取到,就會出現在 GUI 裡面了。

可以搭配 Docker 進入容器指令來查看。
docker exec -ti <container name> bash
airflow list_dags

進入 Airflow 容器開始測試使用。
airflow backfill Helloworld -s 2019-12-20 -e 2019-12-24


開始運作

Graph View
Tree View

再次感謝這篇,讓原先卡住前面問題可以跨過去,讓我們基於 Helloworld.py 這份為基礎,自己修改來測試更多可行性。

Comments