dbtを使用するAirflowワークフローをTeradata Vantageを使って実行してみる
概要
このチュートリアルでは、AWS EC2 VM に Airflow をインストールし、ワークフローが dbt を使用するように構成し、それを Teradata Vantage データベースに対して実行する方法を説明します。Airflow は、通常、データ パイプラインを構築してデータを処理およびロードするために使用されるタスク スケジューリング ツールです。この例では、Docker ベースの Airflow 環境を作成する Airflow インストール プロセスについて説明します。Airflow がインストールされたら、データを Teradata Vantage データベースにロードするいくつかの Airflow DAG (Direct Acyclic Graph、または単にワークフロー) の例を実行します。
前提条件
- AWS(Amazon Web Services)にアクセスしVMを作成するための権限を持つこと
このチュートリアルは、このドキュメントで説明されているマシン (約 100 GB のストレージを備えた AWS 上の t2.2xlarge EC2) と同等のコンピューティングおよびストレージ容量があり、インターネットに接続されている限り、他のコンピューティング プラットフォームやベア メタル マシンに合わせて調整できます。別のコンピューティング プラットフォームを使用する場合は、チュートリアルの一部の手順を変更する必要があります。
- SSHクライアントが必要です。
- Teradata Vantage データベースへのアクセス。Teradata Vantage にアクセスできない場合は、開発者向けの無料エディションである Vantage Express をご覧ください。
Airflow をインストールして実行する
VMを作成する
- AWS EC2コンソールに移動し、
Launch instance
をクリックします。 - オペレーティングシステムイメージの
Red Hat
を選択します。 - インスタンスタイプは
t2.2xlarge
を選択します。 - 新しいキー ペアを作成するか、既存のキー ペアを使用します。
- サーバーに SSH 接続できるようにネットワーク設定を適用すると、サーバーはインターネットへの送信接続が可能になります。通常は、デフォルト設定を適用すれば十分です。
- 100 GBのストレージを割り当てます。
Pythonのインストール
-
ec2-user
ユーザーを使用してマシンにsshします。 -
Python がインストールされているかどうかを確認します (Python 3.7 以上である必要があります)。コマンド ラインに
python
またはpython3
と入力します。 -
Python がインストールされていない場合 (
command not found
メッセージが表示される)、以下のコマンドを実行してインストールします。コマンドでは、y
と入力して Enter し、インストールを確認する必要がある場合があります。
Airflow環境の構築
- Airflowディレクトリ構造を作成します(ec2-userホームディレクトリ/home/ec2-userから)
- お好みのファイル転送ツール (
scp
、PuTTY
、MobaXterm
など) を使用して、airflow.cfg ファイルをairflow/config
ディレクトリにアップロードします。
Dockerのインストール
Dockerはコンテナ化ツールであり、Airflowをコンテナ環境にインストールすることができます。
手順は、airflow
ディレクトリで実行する必要があります。
- podman (RHELのコンテナ化ツール)をアンインストールします。
- yumユーティリティをインストールします。
- Dockerを yum リポジトリに追加します。
- Dockerをインストールします。
- docker をサービスとして起動します。最初のコマンドは、システムの次回起動時に docker サービスを自動的に実行します。2 番目のコマンドは、Docker を今すぐ起動します。
- Docker が正しくインストールされているかどうかを確認します。このコマンドは、コンテナの空のリストを返すはずです (まだコンテナを起動していないため)。
docker-compose
とDocker環境設定ファイルのインストール
- Dockerファイル および Dockerファイル ファイルを VM にアップロードし、
airflow
ディレクトリに保存します。
docker-compose.yaml
と Dockerfile
は何をするのかdocker-compose.yaml
および Dockerfile
ファイルは、インストール中に環境を構築するために必要です。 docker-compose.yaml
ファイルは、Airflow Docker コンテナをダウンロードしてインストールします。コンテナには、Web UI、メタデータ用の Postgres データベース、スケジューラ、3 つのワーカー (3 つのタスクを並行して実行できます)、トリガー、および dbt
によって生成されたドキュメントを表示するための nginx Web サーバーが含まれています。さらに、ホスト ディレクトリがコンテナにマウントされ、その他のさまざまなインストール プロセスが実行されます。 Dockerfile
は、各コンテナに必要なパッケージをさらにインストールします。
docker-compose.yaml
および Dockerfile
ファイルの機能について詳しく知りたい場合は、これらのファイルを調べてください。インストールされる内容とその理由を説明するコメントがあります。
- docker-composeをインストールします(yamlファイルを実行するために必要)。
手順はバージョン 1.29.2 に基づいています。最新リリースについては https://github.com/docker/compose/releases サイトを確認し、必要に応じて以下のコマンドを更新してください。
- docker-compose のインストールをテストします。コマンドは docker-compose のバージョンを返します (例:
docker-compose version 1.29.2, build 5becea4c
) 。
テスト dbt プロジェクトのインストール
これらの手順では、サンプル dbt プロジェクトをセットアップします。dbt
ツール自体は、後で docker-compose
によってコンテナにインストールされます。
- git をインストールします:
- サンプルの Jaffle Shop DBT プロジェクトを入手します。
dbt ディレクトリはホーム ディレクトリの下に作成されます ( airflow
の下ではありません)。この例では、ホーム ディレクトリは /home/ec2-user
です。
- お好みのデータベース ツール (Teradata Studio Express、
bteq
または類似のもの) を使用して、Teradata データベースにairflowtest
およびjaffle_shop
ユーザー/データベースを作成します。dbc
としてデータベースにログインし、コマンドを実行します (必要に応じてパスワードを変更します)。
- dbt構成ディレクトリを作成します。
-
profiles.yml を
.dbt
ディレクトリにコピーします。 -
Teradata データベースの設定に 合わせてファイルを編集します。少なくとも、ホスト、ユーザー、パスワードを変更する必要があります。手順 3 で設定した
jaffle_shop
ユーザー資格情報を使用します。
DockerでAirflow環境を作成する
Dockerfile
とdocker-compose.yaml
があるairflow
ディレクトリで、Docker環境作成スクリプトを実行します。
これには 5 ~ 10 分かかる場合があります。インストールが完了すると、画面に次のようなメッセージが表示されます。
これは、Airflow Web サーバーが通話を受け入れる準備ができていることを意味します。
- これでAirflowが起動するはずです。インストール中に使用したターミナルセッションはログメッセージの表示に使用されるため、 後続の手順のために別のターミナルセッションを開きます。Airflow のインストール タイプを確認するには:
結果は以下のようになります。
- Dockerのインストールを削除したい場合(例えば、docker-compose.yamlとDockerfileファイルを更新して別の環境を再作成する場合)、コマンドは(これらのファイルがあるairflowディレクトリから)です。
スタックが停止したら、設定ファイルを更新し、手順 1 のコマンドを実行して再起動します。
- Airflow Web UI が動作するかどうかをテストするには、ブラ ウザに次の URL を入力します。
<VM_IP_ADDRESS>
をVM の外部 IP アドレスに置き換えます。
- DAG UI:
http://<YOUR_IP_ADDRESS>:8080/home
- username: airflow / password: airflow - Flower Airflow UI (worker control):
http://<YOUR_IP_ADDRESS>:5555/
Airflow DAG の実行
- airflow_dbt_integration.py、 db_test_example_dag.py、 discover_dag.py、 variables.json ファイルを
/home/ec2-user/airflow/dags
にコピーします。 - ファイルを調べます:
airflow_dbt_integration.py
- いくつかのテーブルを作成し、クエリーを実行する簡単な Teradata SQL の例です。db_test_example_dag.py
- dbt の例 (つまり、dbt と airflow を Teradata データベースと統合) を実行します。この例では、架空の jaffle_shop データ モデルが作成、ロードされ、このプロジェクトのドキュメントが生成されます (ブラウザーでhttp://<VM_IP_ADDRESS>:4000/
を指定すると表示できます)
[db_test_example_dag.py
を調整する]
db_test_example_dag.py
を更新して、TeradataデータベースのIPアドレスがあなたのデータベースを指すようにする必要があります。
discover_dag.py
- さまざまな種類のデータ ファイル (CSV、Parquet、JSON) をロードする方法の例。ソース コード ファイルには、プログラムの動作と使用方法を説明するコメントが含まれています。この例はvariables.json
ファイルに依存しています。このファイルは Airflow にインポートする必要があります。これは後続の手順で行われます。
-
これらの dag ファイルが Airflow ツールによって取得されるまで、数分間お待ちください。取得されると、Airflow ホームページの dag のリストに表示されます。
-
variables.json
ファイルを変数ファイルとして Airflow にインポートします。
Admin -> Variables
メニューアイテムをクリックし、Variables ページに移動します。Choose File
をクリックし、ファイル エクスプローラでvariable.json
を選択してImport Variables
をクリックします。- お使いの環境に合わせて、変数を編集します。
- UIからDAGを実行し、ログを確認します。
まとめ
このチュートリアルの目的は、Linux サーバーに Airflow 環境をインストールする方法と、Airflow を使用して Teradata Vantage データベースとやり取りする方法を実際に体験することです。また、Airflow とデータ モデリングおよびメンテナンス ツール dbt を統合して Teradata Vantage データベースを作成してロードする方法についても例を示します。
さらに詳しく
ご質問がある場合やさらにサポートが必要な場合は、 コミュニティフォーラム にアクセスしてサポートを受けたり、他のコミュニティ メンバーと交流したりしてください。