iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0

剛開始學習程式的時候,對我來說最讓我感到挫折的就是環境安裝的問題。由於許多背景知識的不足,以及系統版本和程式版本非常的複雜,總是需要花上許多時間跟精力進行安裝及設定。不過很感謝在程式領域當中許多大神的貢獻,在現在的環境當中,我們可以使用許多方式進行環境上的獨立,像是透過虛擬環境,或是使用Docker 技術。都能讓我們在本機環境當中獨立出一個可以供專案單獨使用的乾淨的環境。

環境設定安裝

要將Airflow 服務跑起來大致上有三種方式:

  • 於本地端安裝 Airflow
  • 使用 Docker 進行安裝
  • 使用雲端服務的環境執行 Airflow
    接下來我們陸續說明各種方式的實作方式。

於本地安裝 Airflow

1. 安裝 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

我們必須先將背景的環境安裝好,之後再進行之後的安裝。

2. 安裝 Airflow

背景環境安裝好之後我們可以透過 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

3. 設定資料庫

由於 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>

4. 初始化資料庫

設定完資料庫之後,接下來需要進行資料庫的初始化:

airflow db init

如此 Airflow 會把相關的 Table 以及資訊建立在所連接的資料庫當中。

5. 開始啟動 Airflow

設定完之後便可以開始使用 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

使用 Docker 進行安裝

使用容器化的技術,可以讓專案擁有獨自獨立的開發跟運行環境,對於軟體以及環境的版本也都能很有效的控管,在現代的軟體開發幾乎是一個必要的技術了。 Airflow 官方也有提供 Docker 檔案,讓我們能參考使用。

1. 安裝 Docker 環境

要以 Docker 的方式安裝 Airflow,首先就一定要先安裝 Docker 環境啦!
安裝方式可以參考 Docker 官方網站:
https://docs.docker.com/desktop/install/windows-install/
https://docs.docker.com/engine/install/

2. 下載 docker-compose 檔案

再來我們需要先下載 docker-compose 檔案

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.7.1/docker-compose.yaml'

3. 初始化

使用 docker 的方式我們一樣也要進行初始化。只不過 db 是定義在 docker-compose 當中,因此我們透過docker compose 來進行:

docker compose up airflow-init

4. 開始啟用 Airflow

由於相關的設定都已經編寫在 docker-compose 中,最後我們只要啟動 docker compose 便可以開始運行 Airflow 了,是不是非常方便呢!

docker compose up

參考來源:
https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html

使用雲端服務的環境執行 Airflow

現在的雲端服務公司,開發許多雲端服務功課戶使用,在資料領域當中也不例外。按照公司或團隊需求,我們也可以將 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 囉~


上一篇
『Day12』Airflow DAG 介紹
下一篇
『Day14』第一個 Airflow Data Pipeline
系列文
Data pipeline 建起來!用 Airflow 開發你的 Data pipeline30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言