メインコンテンツまでスキップ

dbtを使用するAirflowワークフローをTeradata Vantageを使って実行してみる

概要

このチュートリアルでは、AWS EC2 VM に Airflow をインストールし、ワークフローが dbt を使用するように構成し、それを Teradata Vantage データベースに対して実行する方法を説明します。Airflow は、通常、データ パイプラインを構築してデータを処理およびロードするために使用されるタスク スケジューリング ツールです。この例では、Docker ベースの Airflow 環境を作成する Airflow インストール プロセスについて説明します。Airflow がインストールされたら、データを Teradata Vantage データベースにロードするいくつかの Airflow DAG (Direct Acyclic Graph、または単にワークフロー) の例を実行します。

前提条件

  1. AWS(Amazon Web Services)にアクセスしVMを作成するための権限を持つこと
ヒント

このチュートリアルは、このドキュメントで説明されているマシン (約 100 GB のストレージを備えた AWS 上の t2.2xlarge EC2) と同等のコンピューティングおよびストレージ容量があり、インターネットに接続されている限り、他のコンピューティング プラットフォームやベア メタル マシンに合わせて調整できます。別のコンピューティング プラットフォームを使用する場合は、チュートリアルの一部の手順を変更する必要があります。

  1. SSHクライアントが必要です。
ヒント

Mac または Linux マシンを使用している場合は、これらのツールがすでに含まれています。Windows の場合は、 PuTTY または MobaXtermを検討してください。

  1. Teradata Vantage データベースへのアクセス。Teradata Vantage にアクセスできない場合は、開発者向けの無料エディションである Vantage Express をご覧ください。

Airflow をインストールして実行する

VMを作成する

  1. AWS EC2コンソールに移動し、Launch instanceをクリックします。
  2. オペレーティングシステムイメージのRed Hatを選択します。
  3. インスタンスタイプは t2.2xlarge を選択します。
  4. 新しいキー ペアを作成するか、既存のキー ペアを使用します。
  5. サーバーに SSH 接続できるようにネットワーク設定を適用すると、サーバーはインターネットへの送信接続が可能になります。通常は、デフォルト設定を適用すれば十分です。
  6. 100 GBのストレージを割り当てます。

Pythonのインストール

  1. ec2-userユーザーを使用してマシンにsshします。

  2. Python がインストールされているかどうかを確認します (Python 3.7 以上である必要があります)。コマンド ラインに python または python3 と入力します。

  3. Python がインストールされていない場合 ( command not found メッセージが表示される)、以下のコマンドを実行してインストールします。コマンドでは、 y と入力して Enter し、インストールを確認する必要がある場合があります。

Airflow環境の構築

  1. Airflowディレクトリ構造を作成します(ec2-userホームディレクトリ/home/ec2-userから)
  1. お好みのファイル転送ツール ( scpPuTTYMobaXterm など) を使用して、airflow.cfg ファイルを airflow/config ディレクトリにアップロードします。

Dockerのインストール

Dockerはコンテナ化ツールであり、Airflowをコンテナ環境にインストールすることができます。

注記

手順は、airflow ディレクトリで実行する必要があります。

  1. podman (RHELのコンテナ化ツール)をアンインストールします。
  1. yumユーティリティをインストールします。
  1. Dockerを yum リポジトリに追加します。
  1. Dockerをインストールします。
  1. docker をサービスとして起動します。最初のコマンドは、システムの次回起動時に docker サービスを自動的に実行します。2 番目のコマンドは、Docker を今すぐ起動します。
  1. Docker が正しくインストールされているかどうかを確認します。このコマンドは、コンテナの空のリストを返すはずです (まだコンテナを起動していないため)。

docker-compose とDocker環境設定ファイルのインストール

  1. Dockerファイル および Dockerファイル ファイルを VM にアップロードし、 airflow ディレクトリに保存します。
docker-compose.yamlDockerfile は何をするのか

docker-compose.yaml および Dockerfile ファイルは、インストール中に環境を構築するために必要です。 docker-compose.yaml ファイルは、Airflow Docker コンテナをダウンロードしてインストールします。コンテナには、Web UI、メタデータ用の Postgres データベース、スケジューラ、3 つのワーカー (3 つのタスクを並行して実行できます)、トリガー、および dbtによって生成されたドキュメントを表示するための nginx Web サーバーが含まれています。さらに、ホスト ディレクトリがコンテナにマウントされ、その他のさまざまなインストール プロセスが実行されます。 Dockerfile は、各コンテナに必要なパッケージをさらにインストールします。

docker-compose.yaml および Dockerfile ファイルの機能について詳しく知りたい場合は、これらのファイルを調べてください。インストールされる内容とその理由を説明するコメントがあります。

  1. docker-composeをインストールします(yamlファイルを実行するために必要)。
注記

手順はバージョン 1.29.2 に基づいています。最新リリースについては https://github.com/docker/compose/releases サイトを確認し、必要に応じて以下のコマンドを更新してください。

  1. docker-compose のインストールをテストします。コマンドは docker-compose のバージョンを返します (例: docker-compose version 1.29.2, build 5becea4c) 。

テスト dbt プロジェクトのインストール

注記

これらの手順では、サンプル dbt プロジェクトをセットアップします。dbt ツール自体は、後で docker-compose によってコンテナにインストールされます。

  1. git をインストールします:
  1. サンプルの Jaffle Shop DBT プロジェクトを入手します。
注記

dbt ディレクトリはホーム ディレクトリの下に作成されます ( airflowの下ではありません)。この例では、ホーム ディレクトリは /home/ec2-userです。

  1. お好みのデータベース ツール (Teradata Studio Express、 bteq または類似のもの) を使用して、Teradata データベースに airflowtest および jaffle_shop ユーザー/データベースを作成します。 dbcとしてデータベースにログインし、コマンドを実行します (必要に応じてパスワードを変更します)。
  1. dbt構成ディレクトリを作成します。
  1. profiles.yml.dbt ディレクトリにコピーします。

  2. Teradata データベースの設定に合わせてファイルを編集します。少なくとも、ホスト、ユーザー、パスワードを変更する必要があります。手順 3 で設定した jaffle_shop ユーザー資格情報を使用します。

DockerでAirflow環境を作成する

  1. Dockerfiledocker-compose.yaml がある airflow ディレクトリで、Docker環境作成スクリプトを実行します。

これには 5 ~ 10 分かかる場合があります。インストールが完了すると、画面に次のようなメッセージが表示されます。

これは、Airflow Web サーバーが通話を受け入れる準備ができていることを意味します。

  1. これでAirflowが起動するはずです。インストール中に使用したターミナルセッションはログメッセージの表示に使用されるため、 後続の手順のために別のターミナルセッションを開きます。Airflow のインストール タイプを確認するには:

結果は以下のようになります。

  1. Dockerのインストールを削除したい場合(例えば、docker-compose.yamlとDockerfileファイルを更新して別の環境を再作成する場合)、コマンドは(これらのファイルがあるairflowディレクトリから)です。

スタックが停止したら、設定ファイルを更新し、手順 1 のコマンドを実行して再起動します。

  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 の実行

  1. airflow_dbt_integration.pydb_test_example_dag.pydiscover_dag.pyvariables.json ファイルを /home/ec2-user/airflow/dagsにコピーします。
  2. ファイルを調べます:
  • 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 にインポートする必要があります。これは後続の手順で行われます。
  1. これらの dag ファイルが Airflow ツールによって取得されるまで、数分間お待ちください。取得されると、Airflow ホームページの dag のリストに表示されます。

  2. variables.jsonファイルを変数ファイルとして Airflow にインポートします。

  • Admin -> Variables メニューアイテムをクリックし、Variables ページに移動します。 Airflow管理ドロップダウン
  • Choose File をクリックし、ファイル エクスプローラで variable.json を選択して Import Variables をクリックします。 Airflow管理ドロップダウン
  • お使いの環境に合わせて、変数を編集します。
  1. UIからDAGを実行し、ログを確認します。

まとめ

このチュートリアルの目的は、Linux サーバーに Airflow 環境をインストールする方法と、Airflow を使用して Teradata Vantage データベースとやり取りする方法を実際に体験することです。また、Airflow とデータ モデリングおよびメンテナンス ツール dbt を統合して Teradata Vantage データベースを作成してロードする方法についても例を示します。

さらに詳しく

注記

ご質問がある場合やさらにサポートが必要な場合は、 コミュニティフォーラム にアクセスしてサポートを受けたり、他のコミュニティ メンバーと交流したりしてください。

興味深い記事