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