1
#AWSDBDay
ETL をサーバーレスで実現する新サービス
AWS Glue のご紹介
2017年7月5日
アマゾン ウェブ サービス ジャパン
ソリューションアーキテクト
下佐粉 昭 (@simosako)
2
#AWSDBDay
はじめに
• AWS Glueは現在Preview中のサービスです
• 本資料に記載した内容はGA(正式リリース)ま
でに予告なく変更される可能性があります
• Twitterのハッシュタグは #AWSDBDay です
3
#AWSDBDay
自己紹介
下佐粉 昭(しもさこ あきら)
Twitter -
@simosako
所属:
アマゾン ウェブ サービス ジャパン
技術統括本部 エンタープライズソリューション部
ソリューションアーキテクト
好きなAWSサービス:Redshift, RDS, S3
人間が運用等から解放されて楽になるサービスが好きです
4
#AWSDBDay
アジェンダ
• データレイクを中心とした大規模データ分析基盤
• クラウド上のETL - AWS Glue
• AWS Glueの機能
5
#AWSDBDay
データレイクを中心とした
大規模データ分析基盤
6
#AWSDBDay
①データをデータレイクに集め、多様な分析につなげる
②分析はスケールアウト可能なインフラの上で実現
大規模データ分析 on クラウド
収集
データレイク
(保存)
分析
可視化
データを収集し、
データレイクへ
格納
全期間保存
共通APIでア
クセス
可視化
スケールアウト 可能な技術分析
スケールアウト 可能な技術API
7
#AWSDBDay
データレイク
• 多様なデータを一元的に保存
• データを失わない
• サイズ制限からの開放
• 決められた方法(API)です
ぐにアクセスできる
センサー データ RDBMS 非構造化ファイルテキストファイル データレイクAPI呼び出しによる連携
8
#AWSDBDay
Amazon S3によるデータレイクの実現
• 上限無し:サイジング不要
• 高い耐久性:99.999999999%
• 安価:
•
$0.025/GB/月*
(スタンダード)•
$0.019/GB/月*
(標準-低頻度アクセス)例)10TBの保存で約2.1万円/月**
• APIアクセス
•
多様な言語にライブラリを提供
•
AWS各種サービスと連携
データレイク Amazon EMR (Hadoop) AmazonRedshift Amazon API Gateway Amazon S3 センサー データ RDBMS 非構造化ファイルテキストファイル * 費用は2017年7月時点での東京リージョンでの価格です ** 1USドル = 110円で、標準-低頻度アクセスでの試算 Amazon Machine Learning
9
#AWSDBDay
スケールアウトが鍵
• スケールアップもスケールアウト
もクラウドでは容易
• …しかしスケールアップには限界
がある(CPU、メモリ)
スケールアウト可能なテクノロジー
=規模の増加に耐えうる設計
S
XL
スケールアップ
スケールアウト
10
#AWSDBDay
スケールアウト ≠ 高価
• クラウドではスケールアウトがコスト・時間の両面で効率的
• 必要な時に必要なだけノードを追加できる
• ノードを増やしても利用時間が短くなればコストは同じ
処理時間 8時間 処理時間 2時間JOB
16ノードに 拡張JOB
4ノード×8時間
=32
16ノード×2時間
=32
11
#AWSDBDay
スケールアウト可能な分析サービス
マネージド, 標準技術, スケールアウトが選択の鍵
Amazon
Redshift AmazonEMR AmazonAthena
マネージド マネージド DWH(RDB) マネージド Hadoop/Spark環境 マネージド クエリ環境 標準・デファクトス タンダード技術 SQL標準 Hadoop/Spark(デファクト) SQL標準 スケールアウト ユーザ操作で スケールアウト ユーザ操作で スケールアウト 自動的に スケールアウト
12
#AWSDBDay
分析
分析
データレイク
全体図(組み合わせ例)
①データをデータレイクに集め、多様な分析につなげる
②分析はスケールアウト可能なインフラの上で実現
③データソースからの収集やプリプロセス(ETL)は?
収集
可視化
Redshift QuickSight Amazon S3 BI+EC2プリプロセス
全データ 変形済 Athena?
?
13
#AWSDBDay
クラウド上のETL
AWS Glue
14
#AWSDBDay
AWS上のETL(Extract, Transform and Load)サービス
巨大データへのETL処理を...
「スケールアウト」で対応
「サーバレス」で提供
AWS Glue (Preview)
15
#AWSDBDay
Glueはスケールアウト処理を実現
• ベース技術にSparkを採用
• 大規模データに対し自動的
にスケールアウト
• スケールアウトのための設
計が不要
JOB
16
#AWSDBDay
サーバレスのジョブ実行
• サーバレス:サーバ管理を意
識しないで利用できるサービ
ス
• プロビジョン、コンフィグ、
パッチ等が不要に
• 処理に掛かったリソースのみ
への支払い
(※利用費用については未 定であり、変更の可能性があります)17
#AWSDBDay
分析
データレイク
ビッグデータ処理もサーバレスで実現可能に
サーバレス = より分析に集中しやすい環境を実現
※全ての分析がサーバレスで実現できるわけではありません。適材適所の配置が重要です可視化
Amazon QuickSight Amazon S3プリプロセス
全データ 変形済 Amazon Athena AWS Glue収集
AWS Glue18
#AWSDBDay
Amazon EMRとAWS Glue
Amazon EMR
AWS Glue
用途
汎用Hadop/Spark環境
ETL処理に特化
(Sparkベース)
スケールアウト
可能(ユーザ設計)
可能(自動判断)
サーバ管理
数クリックで指定した環境
が準備される
サーバの管理自体不要
データレイク(S3)へ
の透過的なアクセス
可能
可能
プログラミング環境
Hadoopエコシステム上の
多様なアプリケーション
PySparkでETL処理をカス
タマイズ
19
#AWSDBDay
20
#AWSDBDay
AWS Glue – 全体像
データソースを
クロール
し、
メタデータを取得
メタデータは
データカタログ
で管理
メタデータを元に
ジョブ
を作成(PySpark)
ジョブは
サーバレス
な環境
で実行される
21
#AWSDBDay
データカタログ Hiveメタストア互換のデータソース用メタデータリポジトリ テーブル、データ型、パーティションフォーマットを推測するため に ソースをクロール オーケストレーション オートスケール - 複数インスタンスでジョブを実行 サーバレス - 利用したリソース分だけの支払い ジョブオーサリング ETL処理のためのPythonコード(PySpark)を生成 任意のIDEでコードを作成可能AWS Glueの構成要素
22
#AWSDBDay
Glueデータカタログ
データセットの発見・管理
23
#AWSDBDay
表のメタデータをHiveメタストアで管理 メタデータ • 列・プロパティ・型 • データロケーション(URI) • 接続情報 • 更新情報 等 クローラーによる自動チェックと登録24
#AWSDBDay
クローラーが自動的にスキーマを推測 • ファイルタイプを識別子、どのような内容 が含まれるのかを分類(Classifier)しスキー マとして抽出 • Grokフィルタでカスタマイズ可能 クローラーをスケジュール実行すること で新しいデータやスキーマの変更を発見 クローラーを使わず手動での登録も可能 ログはCloudWatch Logsに出力クローラーによるデータカタログの自動更新
25
#AWSDBDay
クロールする範囲(接続)
• RDB
– RDBへの接続情報を定義
– ホスト名、ID、パスワード+
セキュリティグループでアク
セスを制限
• S3
– S3バケットを指定
– IAMでアクセスを制限
26
#AWSDBDay
クローラー:対応データソース
• Amazon RDS
– Aurora, MySQL, MariaDB, PostgreSQL
• Amazon Redshift
• EC2上のRDBにJDBC接続
• S3上のファイル
27
#AWSDBDay
標準Classifier
• 多様なClassifierを提供
(右表)
• 圧縮ファイルにも対応
– ZIP
(1アーカイブ=1ファイルのみ)– BZIP2
– GZIP
– LZ4
– Snappy (標準Snappy)
28
#AWSDBDay
補足:カスタムClassifier
• GorkパターンでカスタムClassifierを作成可能
– Grokパターンで表記できないものについては、カスタムパター
ン(正規表現ベース)で対応可能
%{TIMESTAMP_ISO8601:timestamp} ¥[%{MESSAGEPREFIX:message_prefix}¥] %{CRAWLERLOGLEVEL:loglevel} : %{GREEDYDATA:message}例)Grokパターン
29
#AWSDBDay
ジョブオーサリング
30
#AWSDBDay
自動的なジョブコード生成
•
データソースとターゲットを指定してETLジョブを定義
•
GUIで定義を決めるとPySparkのコードが出力される
31
#AWSDBDay
柔軟な処理を提供するGlue ETLスクリプト
• 人間が読め、編集し
易いコードを出力
• PySparkのライブラ
リを活用して高度な
カスタマイズも可能
• 任意のエディタで編
集可能
32
#AWSDBDay
開発者に優しいETLスクリプト
• 生成されたコードはETL図
に連動したアノテーション
が人間が読める形で記載さ
れている
• 任意の開発環境で開発可能
– AWSにはAWS CodeStar等の 開発環境も33
#AWSDBDay
PySpark extensionと外部ライブラリ
• 変換処理をPySparkのextension
として用意済
• 多彩な出力フォーマットに対応:
プログラム不要
• PySparkコード+ライブラリで柔
軟な処理
– S3上に置いたPythonライブラリや Jarファイルを読み込み可能— transforms —
• drop_fields
• join
• relationalize
• rename_field
• select_fields
• spigot
• split_fields
• split_rows
• unbox
• unnest
• write
34
#AWSDBDay
オーケストレーション&リソース管理
フルマネージド、サーバレスのジョブ実行
35
#AWSDBDay
ジョブの定義と実行
• 作成したETLスクリプトを読み込
んで実行
– IAMロールで権限を設定• ジョブの実行開始方法
– APIコール(手動) – トリガー• リトライ制限の指定や、パラメー
タを渡すことが可能
• 実行ログやエラーログは
CloudWatch Logsに出力
36
#AWSDBDay
トリガー
• ジョブ開始のタイミング
– 先行ジョブ完了時 – スケジュール – API(オンデマンド)37
#AWSDBDay
サーバレスのジョブ実行環境
サーバ管理や準備が不要
ジョブに必要なインスタンス
が自動的に用意される
ワームプール:事前コンフィ
グ済のインスタンスフリート
によりスタートアップに掛か
る時間を削減
VPC内のリソースにアクセス
可能
お客様VPC お客様VPC インスタンスのワームプール38
#AWSDBDay
ジョブ実行時のVPC内へのアクセス
•
ジョブインスタンスはVPC内に存
在するように見える
(※VPC内のリ ソースにアクセスするジョブの場合)•
ジョブインスタンスにはプライ
ベートIPが付与
•
インターネットへのアクセスが無
いサブネットでも利用可能
•
そのため、S3にアクセスする場合
はVPC Endpointの設定が必須
39
#AWSDBDay
まとめ – AWS Glue
• サーバレスなETL環境
• Sparkベースのスケールアウト処理
• PySparkを使ってジョブをカスタマイズ
現在プレビュー中:ぜひお試しください!
–
https://pages.awscloud.com/glue-sign-up-form.html
40
#AWSDBDay
参考情報
• AWS Glue ホームページ
– 各種資料や動画等へのリンクがあります
–
https://aws.amazon.com/jp/glue/
• AWS Glue プレビューお申込み
–
https://pages.awscloud.com/glue-sign-up-form.html
41
#AWSDBDay
内容についての注意
• 本資料では2017年7月5日時点のサービス内容および価格についてご説明しています。最 新の情報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。 • 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格 に相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 • 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、 別途消費税をご請求させていただきます。• AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.