【AWS】用語を整理しながら学ぶAWS - part8 AWS Glue
はじめに
この記事では Cloud Tech を通して AWS Glue(以下、Glue) を学習していく記事です。
主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば書き直していく予定です。
※今回はRDSとS3の学習にCloud Techを使いました
AWS Glueとは
Glue はAWS上でETLを定義して実行できるフルマネージドなデータ分析サービスです。
AWS上で構築したデータレイクをソースとし、分析をノーコードで作成して分析を実行します。
例えば、Amazon RedshiftやAmazon S3、Amazon RDSなどのデータストア・データベース系のサービスがGlueの分析対象になります。
また、分析に必要なメタ情報の中でも例えば、データベースのカラム名やETLに必要なヘッダ情報はクローラーを使って取得します。
.oO(データレイク?ETL?クローラ?わからん用語が多い。。。)
データレイクとは
さまざまなデータタイプを保存したリポジトリもしくはデータを集約した環境のことをデータレイクと呼びます。
AWSではデータレイクを次のように定義しています。
データレイクは、規模にかかわらず、すべての構造化データと非構造化データを保存できる一元化されたリポジトリです。データをそのままの形で保存できるため、データを構造化しておく必要がありません。また、ダッシュボードや可視化、ビッグデータ処理、リアルタイム分析、機械学習など、さまざまなタイプの分析を実行し、的確な意思決定に役立てることができます。
ざっくり言えば、データレイクとはリレーショナルデータベースやNoSQLデータベース、CSVなどの形式で保存されたテキストファイルをまとめた環境のことです。
データ分析を実行する人にとってはとても重要な環境の一つです。
データストアやデータストリームもデータレイクの一部です。
これらのデータソースをベースにデータを加工して保存してグラフに起こします。それらをETLと呼びます。
ETLとは
Extract Transform Load の略です。
具体的には生データ(ラウデータ)を抽出して変換して特定の形式に保存することをETLと呼びます。
ETLを実行する主な目的としては意味のある可視化を実行する為のデータを作成すること
です。
深く突き詰めると一つの記事になってしまうので今回は割愛しますが
簡単に言えば、グラフに起こす前、可視化前の抽出/加工/保存の一連の処理を表した言葉がETLです。
ETLについて説明しましたが、特定のデータに対してETLを実行する場合はデータを説明するヘッダ情報やメタ情報が必須です。
例えば、CSVだったら先頭行のヘッダ情報、データベースならスキーマの情報が必須です。
それらの情報はクローラーが取得します。
クローラーとは
分析対象のヘッダ情報、メタ情報を取得する機能です。最近の分析ツールではSaaSにデータを連携したタイミングで自動で取得されることが多いと思われます。
クローラーで取得したデータはETLの制御に利用されます。
Web技術にもクローラーという言葉がありますが
データや画像を収集するつまりはデータを取得するという点においては同じ意味です。
Glueでデータ分析を実行する場合はクローラーを作成して実行後、クローラーの内容に合わせてETLを実行します。
ETLを実行する時、Glueではジョブという単位でETLを実行します。
ジョブとは
ETLの実行内容を含むGlueのタスクです。スケジューリングを設定することでGlueによるETLを自動で実行できます。
Glueの対象となるサービス
ここまでで大まかにGlueで扱う用語について述べました。
Glueは主にAWS上にあるデータレイクを対象に分析を実行できるサービスです。
分析対象となるデータソースはデータストアとデータストリームです。
-
データストア
- Amazon S3
- Amazon Relational Database Service (Amazon RDS)
- JDBC アクセスが可能なサードパーティのデータベース
- Amazon DynamoDB
- MongoDB と Amazon DocumentDB (MongoDB 互換)
-
データストリーム
- Amazon Kinesis Data Streams
- Apache Kafka
注意点
使い方や要件にもよりますが、AWS上のデータレイクは
インターネットに接続されていないプライベートネットワークに設置されることもあります。
例えば、主にAmazon RDSはパブリックなネットワークに配置しません。
とりわけ、PII情報が含まれるようなDBはパブリックネットワークには置かないと思います。
こういったプライベートネットワークに配置されるRDSとGlueを接続する場合は
RDSに自己参照ルールのセキュリティグループを構築する必要があります。
それらを踏まえてRDSとGlueを接続する流れを見ていきましょう。
GlueでETLを実行して結果を保存するまでの流れ
RDSとGlueを接続するには主に8つの工程を踏む必要があります。
もちろん、VPCが必要なサービスはGlueからVPCにアクセスできる必要があることと
先ほど述べました自己参照ルールのセキュリティグループが必要です。
- IAMポリシーとロールを作成する
- データソースとの接続を確立する
- Glue上にDatabaseを作成する
- クローラを作成する
- クローラを実行する
- ETLを作成する
- ETLを実行する
- 特定のデータストア・データベース系のサービスに出力する
まとめ
AWS Glueは分析サービスとして優秀ではあるものの
マネジメントコンソールの画面がレガシーページとそうでないページに分かれていることもあり
非常にとっつきにくい印象があります。
しかし、ETLはUIベースでノーコード実装できるなどの面がありますのでサッと分析したい人には
良いサービスかもしれません。