Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS Black Belt - AWS Glue

23,539 views

Published on

2017/10/18開催 AWS Black Belt Online Seminar - AWS Glue の資料です
https://aws.amazon.com/jp/about-aws/events/webinars/

Published in: Internet
  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

AWS Black Belt - AWS Glue

  1. 1. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 1 アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 下佐粉 昭 2017.10.18 【AWS Black Belt Online Seminar】 AWS Glue
  2. 2. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 2 自己紹介 下佐粉 昭(しもさこ あきら) Twitter - @simosako 所属: アマゾン ウェブ サービス ジャパン 技術統括本部 エンタープライズソリューション部 ソリューションアーキテクト 好きなAWSサービス:Redshift, RDS, S3 人間が運用等から解放されて楽になるサービスが好きです
  3. 3. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 3 AWS Black Belt Online Seminar へようこそ! 質問を投げることができます! Adobe ConnectのQ&Aウィンドウから、質問を書き込んでください。 (書き込んだ質問は、主催者にしか見えません) 今後のロードマップに関するご質問はお答えできませんのでご了承ください。 Twitterへツイートする際はハッシュタグ #awsblackbelt をご利用ください。 ①Q&Aウィンドウ 右下のフォームに 質問を書き込んで ください ②吹き出しマークで 送信してください
  4. 4. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 4 AWS Black Belt Online Seminar とは AWSJのTechメンバがAWSに関する様々な事を紹介するオンラインセミナーです 【火曜 12:00~13:00】 主にAWSのソリューションや 業界カットでの使いどころなどを紹介 (例:IoT、金融業界向け etc.) 【水曜 18:00~19:00】 主にAWSサービスの紹介や アップデートの解説 (例:EC2、RDS、Lambda etc.) ※開催曜日と時間帯は変更となる場合がございます。 最新の情報は下記をご確認下さい。 オンラインセミナーのスケジュール&申し込みサイト • https://aws.amazon.com/jp/about-aws/events/webinars/
  5. 5. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 5 内容についての注意点 • 本資料では2017年10月18日時点のサービス内容および価格についてご説明しています。最 新の情報は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.
  6. 6. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 6 Agenda • AWS Glueとは • AWS Glueの機能 • データカタログ • ジョブオーサリング • オーケストレーション • 開発環境 • 落穂ひろい • まとめ • 補足資料
  7. 7. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 7 AWS Glueとは
  8. 8. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 8 増え続けるデータに対応するために... ①データをデータレイクに集め、多様な分析につなげる ②分析は分散処理可能なインフラの上で実現 大規模データ分析 on クラウド 収集 データレイク (保存) 分析 可視化 データを収集し、 データレイクへ 格納 全期間保存 共通APIでア クセス 可視化 分散処理 可能な技術 分析 分散処理 可能な技術API
  9. 9. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 9 分析 分析 データレイク AWSサービスでの実現例 ①データをデータレイク(S3)に集め、多様な分析につなげる ②分析は分散処理可能なインフラの上で実現(Redshift, Athena, EMR...) ③データソースからの収集やプリプロセス(前処理、ETL)は? 収集 可視化 Amazon Redshift Anazon QuickSight Amazon S3 BI+EC2 プリプロセス 全データ 変形済 Amazon Athena ? ?
  10. 10. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 10 AWS上のETL(Extract, Transform and Load)サービス 巨大データへのETL処理を... 「分散処理」で対応 「サーバレス」で提供 AWS Glue https://aws.amazon.com/jp/glue/
  11. 11. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 11 分析 分析 データレイク AWS Glueを入れた全体構成 ①データをデータレイク(S3)に集め、多様な分析につなげる ②分析は分散処理可能なインフラの上で実現(Redshift, Athena, EMR...) ③プリプロセス(ETL)も分散処理で実現(AWS Glue) 収集 可視化 Amazon Redshift Amazon QuickSight Amazon S3 BI+EC2 プリプロセス 全データ 変形済 Amazon Athena AWS Glue AWS Glue
  12. 12. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 12 AWS Glueの機能
  13. 13. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 13 AWS Glue – 全体像 データソースをクロールし、 メタデータを取得 メタデータは データカタログで管理 メタデータを元に ジョブを作成(PySpark) ジョブはサーバレスな環境 で実行される
  14. 14. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 14 データカタログ  Hiveメタストア互換のデータソース用メタデータリポジトリ  テーブル、データ型、パーティションフォーマットを推測するために ソースをクロール  Redshift Spectrum, Athena, EMRのカタログとしても利用・連携可能 オーケストレーション  分散処理でジョブを実行  サーバレス - 利用したリソース分だけの支払い ジョブオーサリング  ETL処理のためのPythonコード(PySpark)を生成  任意のIDEでコードを作成可能 AWS Glueの構成要素
  15. 15. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 15 Glueデータカタログ データセットの発見・管理
  16. 16. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 16 メタストアとデータストア Hive メタストア (Metastore): • Hiveで表データそのものとは別に表の定義(メタデータ)を格納するために作成された仕組み • 表データそのものはデータストア(HDFS, S3)に保存する • 集中して付帯情報を管理することでコーディング側での管理負担を減らす • Hive以外の多くのプロダクトも参照するようになり、標準的なメタデータ保存の仕組みに Hive Pig Presto 表Aの定義(スキーマ)、位置、フォーマット、SerDe ... メタストア データストア CSV ファイル Parquet ファイル JSON ファイル ①メタデータ にアクセス ②実データ にアクセス 表Bの定義(スキーマ)、位置、フォーマット、SerDe ...
  17. 17. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 17 メタストアをGlueで提供する意味 (これまで)EMRではマスターノード上のMySQLもしくはRDSに保存 Glueではサーバレスのサービスで実現 • 運用管理自体が不要に ディスク上限の管理、パッチ、可用性の確保... • 安心して複数サービスから参照できる基盤の実現 クローラーによる自動登録でさらに管理負荷を軽減 • CREATE EXTERNAL TABLEを手動で実行不要 • 例)S3にファイルを置く=>クロール=>AthenaからSELECT実行
  18. 18. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 18 ETL(変換) データレイク データウェアハウス データベース Glue data catalog Amazon RDS Amazon Redshift Amazon S3 クロールで メタデータ収集 Glue ETL Uses アドホック 分析 データウェアハウス 分析業務 Amazon Athena Redshift Spectrum EMR (Hive/Spark) Uses Uses Uses データカタログでAWS上のメタデータを集中管理 クロールで メタデータ収集 クロールで メタデータ収集
  19. 19. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 19 表のメタデータをHiveメタストアで管理 メタデータ • 列・プロパティ・型 • データロケーション(URI) • 更新情報 等 クローラーによる自動チェックと登録 • Hiveパーティションを認識し登録を自動化 Glue データカタログ (Data catalog) /mydata /year=2017 /month=11/...
  20. 20. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 20 テーブルの 主要情報 テーブルの プロパティ テーブル スキーマ テーブル パーティション メタデータ(定義)の例
  21. 21. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 21 テーブルのスキーマバージョン一覧 スキーマバージョンの比較 スキーマのバージョン管理
  22. 22. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 22 手動でスキーマを更新可能 – 追加、削除、型の変更 スキーマの修正
  23. 23. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 23 クローラーが自動的にスキーマを推測 • ファイルタイプを識別し、どのような内容が 含まれるのかを分類(Classifier)しスキーマ、 ファイルタイプ、パーティションを抽出 • Grokフィルタでカスタマイズ可能 クローラーをスケジュール実行することで 新しいデータやスキーマの変更を発見 クローラーを使わず手動での登録も可能 ログはCloudWatch Logsに出力 クローラーによるデータカタログの自動更新
  24. 24. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 24 IAM Role Glue クローラー データレイク DWH データベース Amazon RDS Amazon Redshift Amazon S3 JDBC 接続 オブジェクト接続 ビルトイン Classifier MySQL/MariaDB PostreSQL Aurora Oracle SQL Server Redshift Avro Parquet & ORC JSON & BJSON ログ (Apache, Linux, MS, Ruby, Redis, and many others) 区切り形式 (comma, pipe, tab, semicolon) 圧縮フォーマット (ZIP, BZIP, GZIP, LZ4, Snappy) クローラーとClassifier Classifierについてはこちらも参照 http://docs.aws.amazon.com/glue/latest/dg/add-classifier.html Grokでカスタム Classifierを作成可能 RDB on EC2
  25. 25. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 25 接続の管理 JDBC(RDB) • ホスト名(URL)、ID、パスワード • セキュリティグループでアクセスを 制限 S3 • S3バケットを指定 • IAMでアクセスを制限
  26. 26. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 26 補足:カスタムClassifier GorkパターンでカスタムClassifierを作成可能 • Grokパターンで表記できないものについては、カスタムパター ン(正規表現ベース)で対応可能 %{TIMESTAMP_ISO8601:timestamp} ¥[%{MESSAGEPREFIX:message_prefix}¥] %{CRAWLERLOGLEVEL:loglevel} : %{GREEDYDATA:message} 例)Grokパターン
  27. 27. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 27 ジョブオーサリング 使い慣れたツールでETLジョブのオーサリング、コード開発
  28. 28. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 28 ジョブを作成する ジョブ=ETL処理を実行する単位 • PySpark(Python)で記述 • Extract(抽出)や、Load(取り込 み)は抽象化されているため、主に Transform(変換)を既述する ■サンプルスクリプト集 https://github.com/awslabs/aws- glue-samples (※同じサイトにFAQもあり、こちらも必読)
  29. 29. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 29 • GUIでデータソース、ターゲット、列のマッピングを設 定することで雛形が生成される • CSV→Parquetのフォーマット変換だけといった処理であ ればPythonコード作成無しで実現 GUIでのコード雛形生成
  30. 30. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 30 ジョブスクリプトの基本 ①初期化後、カタログ経由 でソースへアクセスし、 DynamicFrameを作成 ②DynamicFrameを操作し てデータ変換 ③変換後のDynamicFrame をカタログ経由でターゲッ ト(Sink)に出力 ## 初期化処理(importやGlueContextの作成、引数処理等) glueContext = GlueContext(SparkContext.getOrCreate()) ##ソースからデータを取り出す ds0 = glueContext.create_dynamic_frame.from_catalog ( database = "mysql", table_name = "customer", transformation_ctx = "ds0") ##ここで変換処理を既述 ds1 = ds0 ... ##ターゲット(Sink)への書き出し ds2 = glueContext.write_dynamic_frame.from_catalog ( frame = ds1, database = "redshift", table_name = "customer_dim", redshift_tmp_dir = args["TempDir"], transformation_ctx = "ds2")
  31. 31. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 31 ①初期化~ソースへアクセス • GlueContextはPySparkのSQLContextを継承してGlue独自の機能を追加したもの • https://github.com/awslabs/aws-glue-libs/blob/master/awsglue/context.py • GlueContextを作成し、create_dynamic_frame.from_catalogでカタログ経由で DynamcFrameを作成する • 補足) 1つのジョブの中で複数のデータベースにアクセスする場合、それらが同一サブネッ トに配置されている必要がある glueContext = GlueContext(SparkContext.getOrCreate()) ds0 = glueContext.create_dynamic_frame.from_catalog (database = "flightsdb", table_name = "flightsparquet",transformation_ctx = "ds0") ※カタログを経由せず、glueContext.create_dynamic_frame.from_optionsで作成することも可能 ※DataFrameをDynamicFrame.fromDFで変換してDynamicFrameを作成することも可能
  32. 32. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 32 ②データ操作 DynamicFrameとDataFrame データそのものを表すクラス • DynamicFrame : データ全体 • DynamicRecord:データ1行 SparkSQLのDataFrameに似た概念 • DataFrameと違い、初期化時のスキーマ定義が不要 • 型が必用な時は自動で、もしくはユーザ制御で決定(Choice) DataFrameとの互換性 • fromDF/toDFメソッドでDynamicFrame⇔DataFrameの変換が可能 • データ操作はDataFrameで実化し、データのIN/OUT時だけDynamicFrameを使 用するというコーディングも可能
  33. 33. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 33 DynamicFrameとChoice DynamicFrameの列に複数の型を発見した場合、図のようにChoice可能な状態で維持される • 同じ列に異なる型が混じったデータセットを扱うことを可能にする • resolveChoiceで型が一致しない部分の解決方法を指定可能 • NULLにする、削除する、型ごとに別列に分ける、Struct型で保持する medicare_dyf = glueContext.create_dynamic_frame.from_catalog ( database = "payments",table_name = "medicare") medicare_dyf.printSchema() root |-- drg definition: string |-- provider id: choice | |-- long | |-- string provider id列はlongとstring両方のデータを持つ
  34. 34. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 34 ビルトインの変換クラス・メソッド • DynamicFrameには変換のた めのメソッドが用意されてい る(今後も追加予定) • 管理コンソールではクリック でビルトイン変換のサンプル コードが追加される • DataFrameに変換して SparkSQLで変換する方法も可 能 ビルトイン変換の一覧: http://docs.aws.amazon.com/ja_jp/glue/latest/dg/built-in-transforms.html
  35. 35. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 35 変換の例:ジョイン ジョインはDynamicFrameの joinメソッドで提供される datasource0 = glueContext.create_dynamic_frame.from_catalog(...) datasource1 = glueContext.create_dynamic_frame.from_catalog(...) : #datasouce0とdatasouce1をORDER_ID列でジョインする datasource2=datasource0.join( ["ORDER_ID"],["ORDER_ID"], datasource1)
  36. 36. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 36 変換の例:フィルタリング SplitRowsクラスで条件によるDynamicFrameの分割で実現 もしくはDataFrameに変換してフィルタリング frame_collection = SplitRows.apply(my_dynamic_frame,{"age": {">": 21}}, "adults", "youths") print frame_collection["youths"] ret_df = my_dynamic_frame.toDF().filter("age > 21") new_dyn_f = DynamicFrame.fromDF(ret_df, glueContext,"new_dyn_f") my_dynamic_frame.toDF().createOrReplaceTempView("temptable") sql_df = spark.sql("SELECT * FROM temptable WHERE age > 21") new_dyn_f = DynamicFrame.fromDF(sql_df, glueContext,"new_dyn_f")
  37. 37. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 37 ③ターゲット(Sink)への書き出し ターゲットの列にDynamicFrameをあわせる処理 • ApplyMapping.apply – 列マッピングの定義 • SelectFields.Apply – 出力する列を設定 ※これらは管理コンソールのウィザードで自動生成されるので、通常ユーザは作成しない 最後にwrite_dynamic_frame.from_catalogで出力 applymapping1 = ApplyMapping.apply(frame = datasource2, mappings = [("COUNTRY", "string", "country", "string"),*中略* , ("NAME", "string", "name", "string")], transformation_ctx = "applymapping1") selectfields2 = SelectFields.apply(frame = applymapping1, paths = ["mktsegment", "country", *中略* "cust_id"], transformation_ctx = "selectfields2") datasink3 = glueContext.write_dynamic_frame.from_catalog (frame = selectfields2, database = "demo-redshift", table_name = "salesdwh_public_customer_dim", redshift_tmp_dir = args["TempDir"], transformation_ctx = "datasink3")
  38. 38. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 38 補足:S3への書き出し時のフォーマット write_dybamic_frame.from_optionsを使用することで、 任意のS3に対しフォーマットを指定して出力することが可 能です ds2 = glueContext.write_dynamic_frame.from_options( frame = ds1, connection_type = "s3", connection_options = {"path": "s3://demo1/output"}, format = "parquet", transformation_ctx = "ds2")
  39. 39. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 39 ジョブへの引数の受け渡し • ジョブ起動時にパラメータを指定することが可能 • Keyは'--'から始まるようにする(例:--Arg1) • sys.argvに入るので、それをgetResolveOptionsで読み取りやすい形にして 利用する(引数名の大文字小文字を区別するので注意) from awsglue.utils import getResolvedOptions args = getResolvedOptions(sys.argv, ['INPUT', 'OUTPUT']) print "The value of Arg1: " , args['INPUT'] print "The value of Arg2: " , args['OUTPUT']
  40. 40. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 40 オーケストレーション&リソース管理 フルマネージド、サーバレスのジョブ実行
  41. 41. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 41 ジョブの定義と実行 作成したJOBスクリプトを読み込んで実行 • IAMロールで権限を設定 ジョブの実行開始方法 • APIコール(手動) • トリガー リトライ制限の指定や、パラメータを渡すことが可能 実行ログはCloudWatch Logsに出力 CloudWatch Eventでジョブ実行・失敗のイベントを フック可能(成功時に別のサービスを呼び出す等) http://docs.aws.amazon.com/ja_jp/AmazonCloudW atch/latest/events/EventTypes.html#glue-event- types
  42. 42. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 42 ライブラリの利用 ジョブ実行時にライブラリを指定可能 • Python (2.7) ライブラリ • S3にライブラリファイルを置いてジョ ブ作成時に指定する • S3のURLは複数をカンマで設定可能 • Pure Pythonコードであること (pandas等C言語拡張に依存するライ ブラリは利用できません) • Java ライブラリ • 同上。S3にJarを置いて指定する • Pure JavaもしくはScala 2.11ベースの コードのみ 参照) http://docs.aws.amazon.com/glue/latest/dg/console-custom-created.html
  43. 43. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 43 トリガー トリガー:ジョブを起動する きっかけ ジョブ開始のタイミング • 先行ジョブ完了時 • スケジュール • API(オンデマンド)
  44. 44. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 44 サーバレスのジョブ実行環境 サーバ管理や準備が不要  ジョブに必要なインスタン スが自動的に用意される  ENIがVPC内に作成され、 ENI経由でVPC内リソース にアクセス可能 お客様VPC お客様VPC インスタンスプール
  45. 45. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 45 ジョブ実行時のVPC内へのアクセス • ENI経由でアクセスされるため、 ジョブインスタンスはVPC内に存 在するように見える(※VPC内のリ ソースにアクセスするジョブの場合) • ENIにはサブネット内のプライベー トIPが付与されるため、インター ネットへのアクセスが無いプライ ベートサブネットでも利用可能 • ジョブの中でプライベートサブ ネットからS3にアクセスする必要 がある場合はVPC Endpointの設定 が必須
  46. 46. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 46 補足:Glueとセキュリティグループ • ジョブが参照するリソース(RDB)はGlueジョブのクラスタから参照可能なようにセ キュリティグループを設定する必要がある • そのため、自己参照型(自セキュリティグループからのアクセスを全て許可するルー ル)のセキュリティグループを作成し、それをリソースとGlueジョブに設定する 参照) http://docs.aws.amazon.com/glue/latest/dg/setup-vpc-for-glue-access.html
  47. 47. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 47 ETLジョブの実行状況確認 • ETLジョブの状況は管理コンソールに表示される • ログはCloudWatch Logsに出力される
  48. 48. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 48 開発環境
  49. 49. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 49 Development Endpoint Development Endpoint • ジョブ実行環境に直接接続するためのElasitic IP アドレス。REPLにアクセス可能 • 作成時にSSH鍵を登録するが、通常のEC2用とは 別に用意することを推奨 開発用にNotebook(Zeppelin)サーバも提供 • http://zeppelin.apache.org/ • Endpointを選択→Actionから作成可能 • CloudFormationで自動生成 補足) • Dev. Endpointを削除してもNotebookサーバは消えない • Zeppelin自体のトラブルは~/zeppelin/logsにログが出力されるのでSSHでログインして確認 • スクリプト内でprintした値はCloudWatch Logs(Error logs)経由で出力される
  50. 50. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 50 Dev. EndpointとNotebook (Zeppelin)サーバ 補足:NotebookからDev.EndpointへはローカルポートをSSHでポートフォワードしているため、 Notebook作成時にDev.Endpointのプライベートキーが必用になる Office Internet virtual private cloud Notebook (Zeppelin) Server HTTPS for Zeppelin Dev. Endpoint AWS Glue インスタンスプール SSH port forward SSH for REPL
  51. 51. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 51
  52. 52. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 52 落穂ひろい
  53. 53. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 53 GlueとIAM Role① ETLジョブ用 • IAM Roleを作成しジョブ実行時に指定する • AWSGlueServiceRoleが定義済なので、開発用等であればこのポリシーをアタッ チするのが簡単 • IAMの名前はAWSGlueServiceRoleから始まる名前にする(もしくは iam:PassRoleを含める) • 詳細:http://docs.aws.amazon.com/ja_jp/glue/latest/dg/create-an-iam-role.html Development endpointアクセス用: • Notebookから各種リソースにアクセスをするために必用 • AWSGlueServiceNotebookRoleポリシーが定義済なので、これに加えて AmazonS3FullAccess 等必用な権限を追加する • AWSGlueServiceNotebookRoleから始まる名前にする(もしくは iam:PassRoleを含める) • 詳細: http://docs.aws.amazon.com/ja_jp/glue/latest/dg/create-an-iam-role- notebook.html
  54. 54. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 54 GlueとIAM Role② 開発ユーザのIAM(管理コンソールログイン用) • AWS管理のAWSGlueConsoleFullAccessと、加えて CloudWatchLogsReadOnlyAccess 、 AWSCloudFormationReadOnlyAccess、 AmazonAthenaFullAccessが必用 • 詳細: http://docs.aws.amazon.com/ja_jp/glue/latest/dg/attach- policy-iam-user.html
  55. 55. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 55 AWS Glue 料金(*) ETLジョブ実行: • $0.44/DPU/時(課金は秒単位) • 10分間未満の処理は10分として計算 されます • 1 DPU = 4vCPU, 16GBメモリ クローラー: • $0.44/DPU/時(課金は秒単位) • クローラーの処理能力は2DPUで計算 • 10分間未満の処理は10分として計算さ れます データカタログへのストア: • 100万オブジェクトまで無料 • それ以上は10万オブジェクトあたり $1/月 データカタログへのリクエスト: • 100万リクエスト/月まで無料 • それ以上は100万リクエストあたりい $1/月 その他: • S3へのアクセスに掛かる費用等は別途 必要です * 2017/10/18時点のU.S. East (N. Virginia), U.S. East (Ohio), U.S. West (Oregon)での価格です。最新の情報は以下URLを御確認ください。 https://aws.amazon.com/glue/pricing/
  56. 56. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 56 AWS Glue - Development Endpoint利用の費用 Development Endpoint経由の実行: • DPU単位の費用がEndpoint作成した直後から発生(削除す るまで) • 不要な期間は削除することで費用を抑えることが可能 • DPUの数はEndpoint作成時に指定可能 • デフォルトは5。最低でも2必要 Zeppelin server : • 通常のAmazon EC2利用費用 • m4.xlarge
  57. 57. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 57 まとめ AWS Glueは、サーバレスで分散処理を実現するETLサービス データカタログとクローラーがメタデータ管理を実現 ETL処理はPySparkで実現 • コーディングによる生産性 • 既存のPySparkライブラリの活用
  58. 58. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 58 補足資料
  59. 59. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 59 Amazon EMRとAWS Glueの違い Amazon EMR AWS Glue 用途 汎用Hadoop/Spark環境 ETL処理に特化 (Sparkベース) スケールアウト 可能(ユーザ設計) 可能(パラメータ指定) サーバ管理 数クリックで指定した環境 が準備される サーバ管理が不要 (サーバレス) データレイク(S3)へ の透過的なアクセス 可能 可能 プログラミング環境 Hadoopエコシステム上の 多様なアプリケーション PySparkでETL処理を作成
  60. 60. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 60 FAQ [Q] クローラーからデータソースにつながりません [A] ドキュメントに沿って以下の設定を見直してください • データソースに自己参照型のSGが設定されているか • クローラーが必用な権限(Role)を持っているか [Q] Glueを動かしているSparkのバージョンは? [A] 現時点ではSpark 2.1です [Q] クローラーが型を認識する際には全データをスキャンしているのですか? [A] クローラーがデータ型を認識するために取得するデータは先頭2MB分のみ
  61. 61. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 61 FAQ [Q] 既存HiveのMetastoreからGlueのData Catalogへ移行するには? [A] 移行ツールを用意しています • https://github.com/awslabs/aws-glue- samples/tree/master/utilities/Hive_metastore_migration [Q] ETL処理に関係ないプログラムを動かせますか? [A] Jobの中ではPySparkで自由にプログラムを記述することが可能で す。現時点では言語はPySparkのみのサポートであるため、E汎用的な 処理にはAmazon EMRも検討してください
  62. 62. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 62 FAQ [Q] Jobプログラムの中から、Glueデータカタログが持つ接続情報を得るには? [A] 以下のサンプルを参考にしてください glue=boto3.client(service_name='glue', region_name='us-east-1', endpoint_url='https://glue.us-east-1.amazonaws.com') redshiftConnection=glue.get_connection(Name=target_database) jdbc_url=redshiftConnection['Connection']['ConnectionProperties']['JDBC_CONNECTION_URL'] username= redshiftConnection['Connection']['ConnectionProperties']['USERNAME'] password= redshiftConnection['Connection']['ConnectionProperties']['PASSWORD']
  63. 63. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 63 FAQ [Q] トリガーを設定したのにジョブが実行されません [A] 以下のポイントを見直してください • トリガーのステータスが ACTIVATED になっているかどうか • トリガーを作ると CREATED となるので、"Trigger-->Actions-->Enable Trigger" から ACTIVATED としてください。 • (トリガーのタイプが "Job completed" である場合) 最初のジョブがトリ ガー経由で実行されているかどうか。 • 最初のジョブが手動で実行された場合、"Job completed" のトリガーに関連付 けられた後続のジョブは実行されません。これは各ジョブを個別にテスト可能 とするための仕様です。
  64. 64. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 64 参考資料 AWS Glue ホームページ • https://aws.amazon.com/jp/glue/ AWS Glue 開発者ガイド(公式ドキュメント) • https://aws.amazon.com/jp/documentation/glue/ AWS Glue ETL Code Samples (サンプルコード) • https://github.com/awslabs/aws-glue-samples AWS Glue用のPythonパッケージ(awsglue.*のソースコード) • https://github.com/awslabs/aws-glue-libs/tree/master/awsglue AWS Glue Data CatalogとHive Metastoreとの変換 • https://github.com/awslabs/aws-glue- samples/tree/master/utilities/Hive_metastore_migration
  65. 65. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 65 参考資料 Redshift Data Source for Apache Spark • RedshiftのデータをDataFrameで操作するためのライブラリ • https://github.com/databricks/spark-redshift
  66. 66. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 66 Q&A
  67. 67. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 67 オンラインセミナー資料の配置場所 AWS クラウドサービス活用資料集 • http://aws.amazon.com/jp/aws-jp-introduction/ AWS Solutions Architect ブログ • 最新の情報、セミナー中のQ&A等が掲載されています • http://aws.typepad.com/sajp/
  68. 68. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 68 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、 お得なキャンペーン情報などを日々更新しています! もしくは http://on.fb.me/1vR8yWm
  69. 69. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 69 AWSの導入、お問い合わせのご相談 AWSクラウド導入に関するご質問、お見積り、資料請求を ご希望のお客様は以下のリンクよりお気軽にご相談ください https://aws.amazon.com/jp/contact-us/aws-sales/ ※「AWS 問い合わせ」で検索してください
  70. 70. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 70 AWS Black Belt Online Seminar 10月の配信予定 • 10月3日(火) 12:00~13:00 AWSへのネットワーク 接続とAWS上のネットワーク内部設計 • 10月4日(水) 18:00~19:00 Amazon GameLift • 10月10日(火) 12:00~13:00 AWSにおけるアプリ認 証パターンのご紹介 • 10月11日(水) 18:00~19:00 Amazon Kinesis • 10月18日(水) 18:00~19:00 AWS Glue • 10月24日(火) 12:00~13:00 エグゼクティブ向け AWS紹介 • 10月25日(水) 18:00~19:00 AWS Key Management Service 申し込みサイト • https://aws.amazon.com/jp/about-aws/events/webinars/ • (もしくは「AWS セミナー」で検索)
  71. 71. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 71 AWS Black Belt Online Seminar 11月の配信予定 (+ 一部先行予告) • 11月1日(水) 18:00~19:00 Amazon EMR • 11月9日(木) 12:00~13:00 Amazon Pinpoint で始めるモバイルアプリのグロースハック • 11月15日(水) 18:00~19:00 ELB Update - Network Load Balancer(NLB)と関連サービス • 11月21日(火) 12:00~13:00 AWS上の位置情報 • 11月22日(水) 18:00~19:00 AWS WAF • 12月1日(金) 12:00~13:00 AWS re:Invent 2017 Report 申し込みサイト • https://aws.amazon.com/jp/about-aws/events/webinars/ • (もしくは「AWS セミナー」で検索) ※下線はイレギュラー日程です。ご注意ください
  72. 72. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 72 簡単なアンケートにご協力ください 画面に表示されるアンケートフォームに入力をお願いします。 皆様のご意見は、今後の改善活動に活用させて頂きます。 コメント欄には1行で自由な内容を書き込み下さい。 例) - 本オンラインセミナーへのご意見 - 今後オンラインセミナーで取り上げて欲しい題材 - 発表者への激励 等々… ※Q&A同様に書き込んだ内容は主催者にしか見えません
  73. 73. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 73 ご参加ありがとうございました
  74. 74. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 74

×