「AWS Black Belt Online Seminar AWS Glue」の自分向けメモ
AWS Glueって何?......レベルの人向け
Glue登場の背景
ビッグデータがキーワード
- データ分析のプロセスは以下
- 収集
 - 保存
 - 分析
 - 活用
 
 - ビッグデータが注目される前、ほとんどCSVやRDS上のデータとして保存
 - 今日ではIOTによる大量データや様々なデータ形式が使われている
 - 大量データの生で保存、かつ必要なときに必要分取得、活用できる保存場所が求められた
 
データレイクの登場
- 様々なデータソースから生成される生データをそのまま保存する
 - 生データは分析するために前処理(ELT処理)が必要
 
Glue
- フルマネージドでサーバーレスなELTサービス
 - データカタログによって、他サービスとの連携が容易
 - 暗号化対応
 
機能
全体像
- クローラーによってデータソースからメタデータ(テーブル構造やスキーマ)をクロール
 - クローラーが更新したメタデータをデータカタログにて管理
 - トリガーにてサーバーレスエンジンが起動
 - サーバーレスエンジンはジョブを実行し、データカタログとデータソースから結果を出力
 
データカタログ
- データソースのメタデータを管理するリポジトリ機能
 - データソースは以下を指定可能
- DynamoDB
 - S3
 - Redshift
 - RDS
 - オンプレDB
 
 
Apache Hiveメタストアとは
- 実データとは別に表の定義だけ保存する仕組み
 - 実データはHDFS(Hadoop Distributed File System)やS3などに保存する
 
クローラー
- データカタログにメタデータを作成する機能
 - スキーマ情報を自動で判断
 - パーティションも自動で認識
 
メタデータ
- テーブル情報
 - テーブルプロパティ
 - テーブルスキーマ
 
スキーマ管理
- バージョン管理可能
 - バージョン比較(差分表示)も可能
 
接続管理
- S3、DyanmmoDB:IAMロールで制御
 - Redshift、RDS、オンプレDB、EC2:JDBCでアクセス制御
- 事前に接続設定の追加が必要
 - セキュリティグループの設定が必要
 
 
サーバーレスエンジン
ジョブ作成
- ETLの処理単位(ジョブ)はApache SparkとPython Shellがある
 
Worker Type
- DPU(ジョブ実行時に割り当てる処理能力)
 - G.1xとG.2xを選択可能
 
SparkでETL実行した際に起きうる課題
- 型が混在すると処理が止まってしまう
 - 事前にデータの中身を調査する必要がある
 
DynamicFrameとは
- 複数の型の可能性を残して、後で決定できるようにする(Choice型)
- 複数の型を発見した場合に両方の型をもつことが可能
 
 
ブックマーク機能
- ジョブの実行状態を保持、追跡が可能
 - 定常的にELT処理を行う場合に有効
- 処理済みデータを再度処理しない
 - 処理結果を重複出力しない
 
 
サーバレスETL処理の使い分け
- Lmabda
- 小規模処理
 - 15分以内
 - 豊富なトリガー
 
 - Glue Python Shell
- 中規模処理
 - 実行時間制限なし
 - Pandasなどのライブラリ
 
 - Glue Spark
- 大規模処理
 - 実行時間制限なし
 - 並列分散処理
 
 
オーケストレーション
独自ライブラリの利用
- Spack、Python Shellともに利用可能
 
トリガー
- ジョブを開始するための定義を設定できる機能
 - スケジュール、ジョブイベント、手動実行可能
 
ワークフロー機能
- クローラー、トリガー、ジョブのDAG(有向非巡回グラフ)を生成する機能
 
開発環境
開発エンドポイント
- ジョブを実行するために開発したコードを動かす実行環境
 
Notebookサーバー
- プログラムそのものの記述と実行結果を表示する環境
 
SageMaker Notebook
- Glueのコンソール上でSageMaker Notebookサーバーを起動する
 - SageMaker Notebookから直接SparkSQLの実行が可能
 
開発エンドポイントとNotebookの関係
- ユーザー → Notebook → 開発エンドポイント → Glue
 
ネットワーク/セキュリティ/監視
GlueからVPCへのアクセス
- プライベートサブネットのENI経由でアクセスしていく
 
セキュリティグループ
- Glueが利用しているENIをセキュリティグループに自己参照として設定
 
IAM
- IAMを用いて、Glueの権限管理
 
リソースレベルによるポリシーとアクセス許可
- データカタログリソースへの制御
 
暗号化
- KMSキーを指定して、データベース、テーブルを含むデータベースカタログ全体を暗号化
 
モニタリング
- クローラー、ジョブステータス、ジョブの実行状況の確認可能
 
Continuous Logging
- Spark ETLジョブの新緑状況をリアルタイムで確認可能
 
ユースケース
データカタログを用いたメタデータ管理
- EMR、Athena、Redshift利用時のメタデータ管理
 - S3条にあるデータのメタデータをデータカタログに登録
 
ジョブによるSQLの定期実行
- Redshiftに定期クエリを実行
 - タイムアウト設定し中断することが可能
 - SQLを長時間実行し続けることが可能
 
ワークフロー機能を用いたELTパイプライン
- 複数ジョブを組み合わせて利用
 
サーバーレスアナリティクス
- 開発エンドポイント、SageMaker Notebookを用いて分析
 
データレイクを用いたログ分析基盤
- fluentd、Kinesis Data Streamsでリアルタイムにログデータを可視化(スピードレイヤー)
 - fluentd、Kinesis Firehose、S3で収集したログデータをELT処理、可視化(バッチレイヤー)
 
GlueとSageMagerを用いた機械学習基盤
- Glueにて学習データを作成し、学習の実行とモデルのデプロイをSageMkerで実行
 - ワークフロー機能もしくはStep Functionsで構築
 
料金
- ELTジョブ
- Apatche Spark
 - Python Shell
 
 - 開発エンドポイント
 - データカタログ
- ストレージ
 - リクエスト
 
 - クローラー
 
まとめ
- サーバーレスのELTサービス
 - メタデータを管理
 - 他サービスとセキュアに連携