剛開始學習程式的時候,對我來說最讓我感到挫折的就是環境安裝的問題。由於許多背景知識的不足,以及系統版本和程式版本非常的複雜,總是需要花上許多時間跟精力進行安裝及設定。不過很感謝在程式領域當中許多大神的貢獻,在現在的環境當中,我們可以使用許多方式進行環境上的獨立,像是透過虛擬環境,或是使用Docker 技術。都能讓我們在本機環境當中獨立出一個可以供專案單獨使用的乾淨的環境。
要將Airflow 服務跑起來大致上有三種方式:
以本地安裝 Airflow 環境,概念上就是將 Airflow 環境建立在本機當中。首先需要安裝相關的套件。Airflow 的每一個版本,對於相容性的要求都不盡相通。在確定要使用的 Airflow 的版本之後,建議可以先到 Airflow 官網的文件來看其相容性需求。舉例來說, Airflow 2.7.1,其需求是 :
Python: 3.8, 3.9, 3.10, 3.11
Databases:
PostgreSQL: 11, 12, 13, 14, 15
MySQL: 5.7, 8.0, 8.1
SQLite: 3.15.0+
MSSQL(Experimental): 2017, 2019
Kubernetes: 1.23, 1.24, 1.25, 1.26, 1.27
我們必須先將背景的環境安裝好,之後再進行之後的安裝。
背景環境安裝好之後我們可以透過 package 的方式安裝Airflow 或是也可以以一般最常見的方式 -- 透過 PYPI進行安裝。如果要使用 package 安裝的話可以參考官方給的安裝文件。而如果要以 PYPL進行安裝,我們可以透過以下指令進行安裝。
pip install "apache-airflow[celery]==2.7.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.7.1/constraints-3.8.txt"
pip install "apache-airflow==2.7.1" apache-airflow-providers-google==10.1.1
由於 Airflow 許多應用是需要使用到資料庫的,因此資料庫的設定非常重要。在最初的設定當中,Airflow 的預設是會使用 SQLite 作為其資料庫,但是 SQLite 的效能並不足以承接一個大型的資料專案。因此會建議連結其他的資料庫。這邊以 MySQL 的資料庫設定為例,若要設定 MySQL 為 Airflow 的資料庫。首先要創建 MySQL 資料庫環境,並建立相關 Database:
CREATE DATABASE airflow_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'airflow_user' IDENTIFIED BY 'airflow_pass';
GRANT ALL PRIVILEGES ON airflow_db.* TO 'airflow_user';`
之後將 SqlAlchemy 連結資料庫的方式改為以下字串,官方建議是使用mysqlclient driver。
mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
設定完資料庫之後,接下來需要進行資料庫的初始化:
airflow db init
如此 Airflow 會把相關的 Table 以及資訊建立在所連接的資料庫當中。
設定完之後便可以開始使用 Airflow 了!
airflow 提供整合的簡易指令如下,下了 airflow standalone 指令之後系統執行資料庫的初始化、創建管理者、以及啟動所有服務。
airflow standalone
如果想要一步步自行啟動的話可以參考以下指令
airflow db init
airflow users create \
--username admin \
--firstname Peter \
--lastname Parker \
--role Admin \
--email spiderman@superhero.org
airflow webserver --port 8080
airflow scheduler
參考來源:Airflow 官方文件
https://airflow.apache.org/docs/apache-airflow/2.6.3/start.html
使用容器化的技術,可以讓專案擁有獨自獨立的開發跟運行環境,對於軟體以及環境的版本也都能很有效的控管,在現代的軟體開發幾乎是一個必要的技術了。 Airflow 官方也有提供 Docker 檔案,讓我們能參考使用。
要以 Docker 的方式安裝 Airflow,首先就一定要先安裝 Docker 環境啦!
安裝方式可以參考 Docker 官方網站:
https://docs.docker.com/desktop/install/windows-install/
https://docs.docker.com/engine/install/
再來我們需要先下載 docker-compose 檔案
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.7.1/docker-compose.yaml'
使用 docker 的方式我們一樣也要進行初始化。只不過 db 是定義在 docker-compose 當中,因此我們透過docker compose 來進行:
docker compose up airflow-init
由於相關的設定都已經編寫在 docker-compose 中,最後我們只要啟動 docker compose 便可以開始運行 Airflow 了,是不是非常方便呢!
docker compose up
參考來源:
https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html
現在的雲端服務公司,開發許多雲端服務功課戶使用,在資料領域當中也不例外。按照公司或團隊需求,我們也可以將 Airflow 環境建立在雲端服務上,可以開啟雲端主機在其中安裝,或是可以直接使用全託管服務直接使用,像是 AWS 的 MWAA(Amazon Managed Workflows for Apache Airflow),我們可以在 AWS 的服務上選擇開啟服務,AWS 便會直接幫我們建立好服務的環境供開法者使用。
AWS MWAA 相關設定可參考:
https://docs.aws.amazon.com/mwaa/latest/userguide/what-is-mwaa.html
今天介紹了各種安裝 Airflow 的方式,我們可以選擇我們想要運行的方式進行相對的安裝,希望大家都能順利的安裝起 Airflow 囉~