SQL-Based ETL with Apache Spark on Amazon EKS は、宣言型データ処理サポート、コードレス抽出 - 変換 - ロード (ETL) 機能、およびワークフローオーケストレーションのオートメーションを提供し、ビジネスユーザー (アナリストやデータサイエンティストなど) がデータにアクセスし、手動の IT プロセスを必要とせずに有意義なインサイトを作成できるようにします。
利点
Jupyter で ETL ジョブをビルド、テスト、デバッグする
ウェブベースのインタラクティブな統合開発環境 (IDE) である JupyterHub を使用して、ETL アプリケーションの開発を簡素化します。
SQL ファーストのアプローチを採用する
。
Spark SQL を使用して、ETL パイプライン開発にビジネスロジックとデータ品質チェックを実装します。
コードなしでジョブをオーケストレートする
。
Argo ワークフローを使用して、コーディングを必要とすることなく、ジョブをスケジュールし、複雑なジョブの依存関係を管理します。
Docker イメージを自動デプロイする
。
AWS の継続的改善と継続的開発 (CI/CD) パイプラインをセットアップして、データフレームワークの Docker イメージを Amazon Elastic Container Registry (Amazon ECR) に安全に保存します。
概要
下の図表は、GitHub にあるサンプルコードを使って構築できるアーキテクチャを示しています。
拡大イメージを見る
SQL-Based ETL with Apache Spark on Amazon EKS アーキテクチャ
SQL-Based ETL with Apache Spark on Amazon EKS は、安全でフォールトトレラントなオートスケーリング環境をデプロイして、次のコンポーネントを含む ETL ワークロードをサポートします。
- カスタマイズ可能で柔軟なワークフロー管理レイヤー (図の Amazon Elastic Kubernetes Service (Amazon EKS) グループのオーケストレーションを参照) には、Argo Workflows プラグインが含まれています。このプラグインは、コードの記述を必要とすることなく、ETL ジョブをオーケストレートするためのウェブベースのツールを提供します。オプションで、Volcano や Apache Airflow などの他のワークフローツールを使用できます。
- 安全なデータ処理ワークスペースは、同じ Amazon EKS クラスター内のデータワークロードを統合するよう設定されています。このワークスペースには、インタラクティブなジョブのビルドとテストのための 2 つ目のウェブベースのツールである JupyterHub が含まれています。宣言的アプローチを使用して Jupyter ノートブックを開発し、ETL タスクを指定するか、PySpark を使用してプログラムで ETL のステップを記述できます。このワークスペースは、Argo Workflows ツールによって管理される Spark ジョブのオートメーションも提供します。
- 一連のセキュリティ機能がソリューションにデプロイされています。Amazon Elastic Container Registry (Amazon ECR) は、データ処理フレームワークの Docker イメージを維持および保護します。Amazon EKS のサービスアカウント (IRSA) 機能のための AWS Identity and Access Management (IAM) ロールは、他の AWS のサービスに対するきめ細かいアクセスコントロールを備えたトークン認証を提供します。例えば、Amazon EKS と Amazon Athena の統合では、接続文字列で AWS 認証情報が公開されてしまうリスクを軽減するために、パスワードを必要としません。Jupyter は、ログイン認証情報を AWS Secrets Manager から Amazon EKS にオンザフライで取得します。Amazon CloudWatch は、アクティブ化された CloudWatch Container Insights 機能を使用して Amazon EKS 上のアプリケーションをモニタリングします。
- Amazon EKS クラスターの分析ワークロードは、データ結果を Amazon Simple Storage Service (Amazon S3) データレイクに出力します。データスキーマエントリ (メタデータ) は、Amazon Athena を介して AWS Glue Data Catalog に作成されます。