不瞞大家,這幾天其實我在日本旅遊當中,所以鐵人賽對我來說真的是很鍛鍊啊!每天有很多行程之外,結束後還是要抓緊時間寫文章,真的是極度瘋狂!但是這過程中卻也覺得十分充實,我想這就是人性的奇妙之處吧。附上昨天去了很令我震撼的哈利波特園區裡面的餐廳照片,分享給大家。
我覺得學習程式也像是在學習魔法一樣,透過不斷的學習和練習,讓自己的技能變得嫻熟,之後就已使用所學的幫助自己處理許多的事物,甚至是達成許多想做的事!那接下來我們在系列文章也進入第二階段,本系列的總主題叫做『Data pipeline 建起來!用 Airflow 開發你的 Data pipeline』,在上一階段當中有提到許多種 Data pipeline的工具,而這系列我們主要想要使用 Airflow 進行開發的相關介紹,不過希望透過了解 Airflow 的架構以及開發流程等知識,未來不論使用何種工具,都能把一些概念加入自己的開發當中!這個階段主要是要介紹Airflow以及帶領大家了解學習 Airflow 的基本概念。在今天我們首先來熟悉了解一下 Airflow !
Apache Airflow 是一個開源的Data pipeline管理工具,最開始是由 Airbnb 公司開始發起。當時,Airbnb 面臨了資料處理和工作流管理的挑戰,因此開始開發內部工具以解決這些問題。透過建造Airflow,Airbnb能夠以編程方式編寫和安排工作流程,並通過內置的Airflow用戶界面進行監控。
從一開始 Airflow 項目就是開源的,並於2016年成為 Apache 孵化器項目,於2019年成為Apache軟件基金會的頂級項目。現今也廣泛被運用於Data pipeline 的開發及管理。
Airflow 使用 Python 進行開發,工作流程通過 Python 腳本創建。Airflow設計遵循 “Workflows as code” 的原則。Airflow 框架包含用於連接多種技術的操作器,並且易於擴展以連接新技術。如果工作流程有清晰的開始和結束點,並且以定期間隔運行,則可以編寫成為 Airflow DAG (會於明天講解DAG)執行。
每種工具有它的特色和特性,在我們選用時會需要對工具進行一定程度的研究。因為對於開發團隊來說,選擇的工具會牽動著整個團隊的開發維運方式及節奏。Airflow 擁有以下的特性:
在下圖中有比較了許多 Data pipeline 工具,Airflow 的優勢在於其多元性,在平台中能做到排程、監控也擁有良好的使用者介面能夠供使用者使用。
圖片來源:
Airflow 主要是為了處理 Batch (批次) 工作而建的,如果遇到 Streaming 的需求,並不推薦使用 Airflow 開發 Data pipeline。
另外如果團隊不太喜歡開發程式,而更喜歡用點擊或見面處理任務的話,那 Airflow 也不會是最佳選擇,因為Airflow 的哲學是 "Workflows as code" ,因此基本上都會需要透過程式進行開發和操作。
Reference:
https://en.wikipedia.org/wiki/Apache_Airflow
https://airflow.apache.org/docs/apache-airflow/stable/index.html
今天的內容有沒有一點推銷的感覺呢?其實主要是說明Airflow 的的發展和他的優點讓大家參考。而了解之後讓我們之後帶著興奮的心情來上手這功能強大的框架吧!