SlideShare ist ein Scribd-Unternehmen logo
1 von 15
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Noritaka Sekiyama
Senior Cloud Support Engineer, Amazon Web Services Japan
2019.05.23
S3 整合性モデルと Hadoop/Spark の話
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
関山 宜孝 (Noritaka Sekiyama)
Senior Cloud Support Engineer
- AWS サポートの中の人
- 専門は Big Data
(EMR, Glue, Athena, …)
- AWS Glue の専門家
- Apache Spark 好き
Who I am...
@moomindani
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
今日話すこと
• S3 整合性モデルの話
• Hadoop/Spark と S3 整合性モデルの関係と緩和方法
(Hadoop/Spark を使ったことのない方、あまり興味のない方にも、
ミドルウェアから S3 を活用する工夫の一例としてお聞きいただければ)
今日話さないこと
• Hadoop/Spark の仕組み、最新動向
アジェンダ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
オブジェクトストレージサービス
• 高いスケーラビリティ、可用性、耐障害性 (99.999999999%)、セ
キュリティ、およびパフォーマンスを提供
• 単一オブジェクトの最大サイズ: 5TB
• オブジェクトはバケット配下のユニークなキー名で管理される
• ディレクトリは S3 コンソール上では疑似的に表現されるが、実態としては存
在しない
• ファイルシステムではない
従量課金
• 主に、保管されたデータサイズと、リクエストに対して課金
Amazon S3
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
新規オブジェクトの PUT: 書き込み後の読み込み整合性
存在しないオブジェクトの HEAD/GET: 結果整合性
PUT および DELETE の上書き: 結果整合性
オブジェクトの LIST: 結果整合性
https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel
S3 整合性モデル
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
書き込み後の読み込み整合性
• PUT したオブジェクトを直後に GET すると一貫した結果が得られる
• 結果整合性ではない
新規オブジェクトの PUT
1. PUT
s3://middwaredeeptalks/path_to_objectA.txt
2. GET
s3://middwaredeeptalks/path_to_objectA.txt
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
結果整合性
• PUT 前のオブジェクトを存在確認のために HEAD/GET して、
その後にオブジェクトを PUT して GET すると結果整合性となる
存在しないオブジェクトの HEAD/GET
1. HEAD or GET
s3://middwaredeeptalks/path_to_objectB.txt
2. PUT
s3://middwaredeeptalks/path_to_objectB.txt
3. GET
s3://middwaredeeptalks/path_to_objectB.txt
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
結果整合性
• 既存オブジェクトを PUT して GET すると古いデータが返却される場
合がある
• 既存オブジェクトを DELETE して GET すると削除済データが返却さ
れる場合がある
PUT および DELETE の上書き
1. PUT/DELETE
s3://middwaredeeptalks/path_to_objectC.txt
2. GET
s3://middwaredeeptalks/path_to_objectC.txt
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
結果整合性
• 新規オブジェクトを PUT して直後に LIST すると、追加されたオブ
ジェクトがリストに含まれない場合がある
• 既存オブジェクトを DELETE して直後に LIST すると、削除済のオブ
ジェクトがリストに含まれる場合がある
特に LIST 結果整合性は、Hadoop/Spark に影響が大きい
オブジェクトの LIST
1. PUT
s3://middwaredeeptalks/path_to_objectD.txt
2. LIST
s3://middwaredeeptalks/
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
入力データの取得
• 引数にとった S3 の任意のパスのデータを分散処理のために取得
1. 対象のパスを LIST
2. LIST で返却されたキーに対して HEAD (存在確認)
3. LIST で返却されたキーに対して GET (オブジェクト取得)
• 複数のジョブを多段で構成してパイプラインを組む場合、前段の
ジョブの出力を後段のジョブの入力に使用することになる
⎼ 例:複数ステップの ETL データ処理パイプライン
– ステップ1: 入力の生データを整形、フォーマット変換
– ステップ2: 変換後のデータを入力として統計処理
Hadoop/Spark から S3 へのよくある操作その1
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
中間データの最終出力先への移動
• 中間出力先にデータを一時的に書きこみ、その後で対象のパスの
データを LIST して最終出力先に MV/RENAME
⎼ 中途半端な状態のデータを見えなくするため
• S3 には MV/RENAME の概念がないため、以下の手続きが必要
1. 中間出力先のパスを LIST
2. LIST で返却されたキーから最終出力先のキーへ COPY (オブ
ジェクトコピー)
3. LIST で返却されたキーに対して DELETE (元オブジェクト削
除)
(HDFS の MV/RENAME は非常に高速だが、S3 では時間がかかる)
Hadoop/Spark から S3 へのよくある操作その2
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
S3 Guard (S3A), EMRFS Consistent view (EMRFS)
• S3 の整合性 (特に LIST 整合性) をチェックする仕組み
• S3 オブジェクトのメタデータ管理に DynamoDB を使用
• S3 と DynamoDB が返却する結果を突合して最新のビューを提供
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-consistent-view.html
Hadoop/Spark における S3 整合性の影響緩和
Cluster
S3
HDFS
App
Temp
data
DynamoDB
Object PUT/GET
Metadata PUT/GET
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
S3A Committer, EMRFS S3-optimized committer
• S3 マルチパートアップロードの仕組みを活用
• ジョブ/タスクコミットフェーズ中に S3 への LIST/RENAME オペレー
ションを回避し、アプリケーションのパフォーマンスを向上
• ジョブ/タスクコミットフェーズで S3 結果整合性による問題を回避し、
タスク失敗時のジョブの正確性を向上
⎼ 中間出力先にデータを一時的に書きこむ代わりに、マルチパートアップロードを開始
(この時点ではファイルは見えない)
⎼ 書き込みが完了したら MV/RENAME する代わりに、マルチパートアップロードを終了
(LIST してコピーとかしなくていい)
https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-optimized-committer.html
https://aws.amazon.com/blogs/big-data/improve-apache-spark-write-performance-on-apache-parquet-formats-with-the-emrfs-s3-optimized-
committer/
Hadoop/Spark における S3 整合性の影響緩和
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
マルチパートアップロードの開始
• 開始リクエストを送信してアップロードIDを取得
各パートのアップロード
• アップロードIDとパート番号を添えてアップロード
• 明示的に完了/中止しないとパートは残存し、ストレージ課金が継続
マルチパートアップロードの完了/中止
• パート番号に基づいて昇順に連結したオブジェクトを S3 上に生成
• 個々のパートは解放され、ストレージも解放される
参考:マルチパートアップロードの流れ
マルチパート
アップロード
の開始
各パートの
アップロード
マルチパート
アップロード
の完了/中止
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
パフォーマンス比較
• EMR 5.19.0 (マスター m5d.2xlarge / コア m5d.2xlarge x 8台)
• 入力データ: 15 GB (100 Parquet ファイル)
参考: EMRFS S3-optimized committer の性能
EMRFS consistent view 無効 EMRFS consistent view 有効
INSERT OVERWRITE DIRECTORY ‘s3://${bucket}/perf-test/${trial_id}’
USING PARQUET SELECT * FROM range(0, ${rows}, 1, ${partitions});

Weitere ähnliche Inhalte

Was ist angesagt?

20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems ManagerAmazon Web Services Japan
 
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonightAmazon Web Services Japan
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)Masaya Tahara
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザNoritaka Sekiyama
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video StreamsAmazon Web Services Japan
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-Amazon Web Services Japan
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)Takeshi Mikami
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)NTT DATA Technology & Innovation
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon ElastiCacheAWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon ElastiCacheAmazon Web Services Japan
 
20191001 AWS Black Belt Online Seminar AWS Lake Formation
20191001 AWS Black Belt Online Seminar AWS Lake Formation 20191001 AWS Black Belt Online Seminar AWS Lake Formation
20191001 AWS Black Belt Online Seminar AWS Lake Formation Amazon Web Services Japan
 

Was ist angesagt? (20)

20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
 
AWS BlackBelt AWS上でのDDoS対策
AWS BlackBelt AWS上でのDDoS対策AWS BlackBelt AWS上でのDDoS対策
AWS BlackBelt AWS上でのDDoS対策
 
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザ
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
 
WiredTigerを詳しく説明
WiredTigerを詳しく説明WiredTigerを詳しく説明
WiredTigerを詳しく説明
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon ElastiCacheAWS Black Belt Online Seminar 2017 Amazon ElastiCache
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
 
20191001 AWS Black Belt Online Seminar AWS Lake Formation
20191001 AWS Black Belt Online Seminar AWS Lake Formation 20191001 AWS Black Belt Online Seminar AWS Lake Formation
20191001 AWS Black Belt Online Seminar AWS Lake Formation
 

Ähnlich wie S3 整合性モデルと Hadoop/Spark の話

Sparkにプルリク投げてみた
Sparkにプルリク投げてみたSparkにプルリク投げてみた
Sparkにプルリク投げてみたNoritaka Sekiyama
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...NTT DATA Technology & Innovation
 
Effective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターンEffective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターンNoritaka Sekiyama
 
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...NTT DATA Technology & Innovation
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...NTT DATA Technology & Innovation
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data PipelineAmazon Web Services Japan
 
20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポートRyoma Nagata
 
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift UpdateAmazon Web Services Japan
 
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみるTakahiro Moteki
 
Hadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめHadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめYuta Imai
 
AWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMRAWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMRAmazon Web Services Japan
 
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsAmazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsyuichi_komatsu
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Kenichi Sonoda
 
スタートアップでのAWS(Amazon Web Services)活用事例
スタートアップでのAWS(Amazon Web Services)活用事例スタートアップでのAWS(Amazon Web Services)活用事例
スタートアップでのAWS(Amazon Web Services)活用事例schoowebcampus
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Tatsuya Atsumi
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
 
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法Amazon Web Services Japan
 

Ähnlich wie S3 整合性モデルと Hadoop/Spark の話 (20)

Sparkにプルリク投げてみた
Sparkにプルリク投げてみたSparkにプルリク投げてみた
Sparkにプルリク投げてみた
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
 
Effective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターンEffective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターン
 
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
 
20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート
 
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
 
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
 
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPANSAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
 
Hadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめHadoop/Spark セルフサービス系の事例まとめ
Hadoop/Spark セルフサービス系の事例まとめ
 
AWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMRAWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMR
 
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsAmazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
 
Serverless analytics on aws
Serverless analytics on awsServerless analytics on aws
Serverless analytics on aws
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...
 
スタートアップでのAWS(Amazon Web Services)活用事例
スタートアップでのAWS(Amazon Web Services)活用事例スタートアップでのAWS(Amazon Web Services)活用事例
スタートアップでのAWS(Amazon Web Services)活用事例
 
AWS Black Belt - AWS Glue
AWS Black Belt - AWS GlueAWS Black Belt - AWS Glue
AWS Black Belt - AWS Glue
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
 

Mehr von Noritaka Sekiyama

5分ではじめるApache Spark on AWS
5分ではじめるApache Spark on AWS5分ではじめるApache Spark on AWS
5分ではじめるApache Spark on AWSNoritaka Sekiyama
 
VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話Noritaka Sekiyama
 
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueModernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueNoritaka Sekiyama
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudNoritaka Sekiyama
 
Introduction to New CloudWatch Agent
Introduction to New CloudWatch AgentIntroduction to New CloudWatch Agent
Introduction to New CloudWatch AgentNoritaka Sekiyama
 
Security Operations and Automation on AWS
Security Operations and Automation on AWSSecurity Operations and Automation on AWS
Security Operations and Automation on AWSNoritaka Sekiyama
 
運用視点でのAWSサポート利用Tips
運用視点でのAWSサポート利用Tips運用視点でのAWSサポート利用Tips
運用視点でのAWSサポート利用TipsNoritaka Sekiyama
 
基礎から学ぶ? EC2マルチキャスト
基礎から学ぶ? EC2マルチキャスト基礎から学ぶ? EC2マルチキャスト
基礎から学ぶ? EC2マルチキャストNoritaka Sekiyama
 
Floodlightってぶっちゃけどうなの?
Floodlightってぶっちゃけどうなの?Floodlightってぶっちゃけどうなの?
Floodlightってぶっちゃけどうなの?Noritaka Sekiyama
 

Mehr von Noritaka Sekiyama (10)

5分ではじめるApache Spark on AWS
5分ではじめるApache Spark on AWS5分ではじめるApache Spark on AWS
5分ではじめるApache Spark on AWS
 
VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話
 
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS GlueModernizing Big Data Workload Using Amazon EMR & AWS Glue
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
 
Running Apache Spark on AWS
Running Apache Spark on AWSRunning Apache Spark on AWS
Running Apache Spark on AWS
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
 
Introduction to New CloudWatch Agent
Introduction to New CloudWatch AgentIntroduction to New CloudWatch Agent
Introduction to New CloudWatch Agent
 
Security Operations and Automation on AWS
Security Operations and Automation on AWSSecurity Operations and Automation on AWS
Security Operations and Automation on AWS
 
運用視点でのAWSサポート利用Tips
運用視点でのAWSサポート利用Tips運用視点でのAWSサポート利用Tips
運用視点でのAWSサポート利用Tips
 
基礎から学ぶ? EC2マルチキャスト
基礎から学ぶ? EC2マルチキャスト基礎から学ぶ? EC2マルチキャスト
基礎から学ぶ? EC2マルチキャスト
 
Floodlightってぶっちゃけどうなの?
Floodlightってぶっちゃけどうなの?Floodlightってぶっちゃけどうなの?
Floodlightってぶっちゃけどうなの?
 

S3 整合性モデルと Hadoop/Spark の話

  • 1. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Noritaka Sekiyama Senior Cloud Support Engineer, Amazon Web Services Japan 2019.05.23 S3 整合性モデルと Hadoop/Spark の話
  • 2. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 関山 宜孝 (Noritaka Sekiyama) Senior Cloud Support Engineer - AWS サポートの中の人 - 専門は Big Data (EMR, Glue, Athena, …) - AWS Glue の専門家 - Apache Spark 好き Who I am... @moomindani
  • 3. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 今日話すこと • S3 整合性モデルの話 • Hadoop/Spark と S3 整合性モデルの関係と緩和方法 (Hadoop/Spark を使ったことのない方、あまり興味のない方にも、 ミドルウェアから S3 を活用する工夫の一例としてお聞きいただければ) 今日話さないこと • Hadoop/Spark の仕組み、最新動向 アジェンダ
  • 4. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. オブジェクトストレージサービス • 高いスケーラビリティ、可用性、耐障害性 (99.999999999%)、セ キュリティ、およびパフォーマンスを提供 • 単一オブジェクトの最大サイズ: 5TB • オブジェクトはバケット配下のユニークなキー名で管理される • ディレクトリは S3 コンソール上では疑似的に表現されるが、実態としては存 在しない • ファイルシステムではない 従量課金 • 主に、保管されたデータサイズと、リクエストに対して課金 Amazon S3
  • 5. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 新規オブジェクトの PUT: 書き込み後の読み込み整合性 存在しないオブジェクトの HEAD/GET: 結果整合性 PUT および DELETE の上書き: 結果整合性 オブジェクトの LIST: 結果整合性 https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel S3 整合性モデル
  • 6. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 書き込み後の読み込み整合性 • PUT したオブジェクトを直後に GET すると一貫した結果が得られる • 結果整合性ではない 新規オブジェクトの PUT 1. PUT s3://middwaredeeptalks/path_to_objectA.txt 2. GET s3://middwaredeeptalks/path_to_objectA.txt
  • 7. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 結果整合性 • PUT 前のオブジェクトを存在確認のために HEAD/GET して、 その後にオブジェクトを PUT して GET すると結果整合性となる 存在しないオブジェクトの HEAD/GET 1. HEAD or GET s3://middwaredeeptalks/path_to_objectB.txt 2. PUT s3://middwaredeeptalks/path_to_objectB.txt 3. GET s3://middwaredeeptalks/path_to_objectB.txt
  • 8. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 結果整合性 • 既存オブジェクトを PUT して GET すると古いデータが返却される場 合がある • 既存オブジェクトを DELETE して GET すると削除済データが返却さ れる場合がある PUT および DELETE の上書き 1. PUT/DELETE s3://middwaredeeptalks/path_to_objectC.txt 2. GET s3://middwaredeeptalks/path_to_objectC.txt
  • 9. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 結果整合性 • 新規オブジェクトを PUT して直後に LIST すると、追加されたオブ ジェクトがリストに含まれない場合がある • 既存オブジェクトを DELETE して直後に LIST すると、削除済のオブ ジェクトがリストに含まれる場合がある 特に LIST 結果整合性は、Hadoop/Spark に影響が大きい オブジェクトの LIST 1. PUT s3://middwaredeeptalks/path_to_objectD.txt 2. LIST s3://middwaredeeptalks/
  • 10. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 入力データの取得 • 引数にとった S3 の任意のパスのデータを分散処理のために取得 1. 対象のパスを LIST 2. LIST で返却されたキーに対して HEAD (存在確認) 3. LIST で返却されたキーに対して GET (オブジェクト取得) • 複数のジョブを多段で構成してパイプラインを組む場合、前段の ジョブの出力を後段のジョブの入力に使用することになる ⎼ 例:複数ステップの ETL データ処理パイプライン – ステップ1: 入力の生データを整形、フォーマット変換 – ステップ2: 変換後のデータを入力として統計処理 Hadoop/Spark から S3 へのよくある操作その1
  • 11. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 中間データの最終出力先への移動 • 中間出力先にデータを一時的に書きこみ、その後で対象のパスの データを LIST して最終出力先に MV/RENAME ⎼ 中途半端な状態のデータを見えなくするため • S3 には MV/RENAME の概念がないため、以下の手続きが必要 1. 中間出力先のパスを LIST 2. LIST で返却されたキーから最終出力先のキーへ COPY (オブ ジェクトコピー) 3. LIST で返却されたキーに対して DELETE (元オブジェクト削 除) (HDFS の MV/RENAME は非常に高速だが、S3 では時間がかかる) Hadoop/Spark から S3 へのよくある操作その2
  • 12. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. S3 Guard (S3A), EMRFS Consistent view (EMRFS) • S3 の整合性 (特に LIST 整合性) をチェックする仕組み • S3 オブジェクトのメタデータ管理に DynamoDB を使用 • S3 と DynamoDB が返却する結果を突合して最新のビューを提供 https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-consistent-view.html Hadoop/Spark における S3 整合性の影響緩和 Cluster S3 HDFS App Temp data DynamoDB Object PUT/GET Metadata PUT/GET
  • 13. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. S3A Committer, EMRFS S3-optimized committer • S3 マルチパートアップロードの仕組みを活用 • ジョブ/タスクコミットフェーズ中に S3 への LIST/RENAME オペレー ションを回避し、アプリケーションのパフォーマンスを向上 • ジョブ/タスクコミットフェーズで S3 結果整合性による問題を回避し、 タスク失敗時のジョブの正確性を向上 ⎼ 中間出力先にデータを一時的に書きこむ代わりに、マルチパートアップロードを開始 (この時点ではファイルは見えない) ⎼ 書き込みが完了したら MV/RENAME する代わりに、マルチパートアップロードを終了 (LIST してコピーとかしなくていい) https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-optimized-committer.html https://aws.amazon.com/blogs/big-data/improve-apache-spark-write-performance-on-apache-parquet-formats-with-the-emrfs-s3-optimized- committer/ Hadoop/Spark における S3 整合性の影響緩和
  • 14. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. マルチパートアップロードの開始 • 開始リクエストを送信してアップロードIDを取得 各パートのアップロード • アップロードIDとパート番号を添えてアップロード • 明示的に完了/中止しないとパートは残存し、ストレージ課金が継続 マルチパートアップロードの完了/中止 • パート番号に基づいて昇順に連結したオブジェクトを S3 上に生成 • 個々のパートは解放され、ストレージも解放される 参考:マルチパートアップロードの流れ マルチパート アップロード の開始 各パートの アップロード マルチパート アップロード の完了/中止
  • 15. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. パフォーマンス比較 • EMR 5.19.0 (マスター m5d.2xlarge / コア m5d.2xlarge x 8台) • 入力データ: 15 GB (100 Parquet ファイル) 参考: EMRFS S3-optimized committer の性能 EMRFS consistent view 無効 EMRFS consistent view 有効 INSERT OVERWRITE DIRECTORY ‘s3://${bucket}/perf-test/${trial_id}’ USING PARQUET SELECT * FROM range(0, ${rows}, 1, ${partitions});

Hinweis der Redaktion

  1. 皆さんの中には「S3は結果整合性だ」といった話を聞いたことがある方もいらっしゃるのではないかと思います。 ご存知の通り S3 には特有の整合性モデルがあります。 ここでは 4種類の異なる操作について、S3 がどのような整合性を提供しているのか説明します。 まず、新規オブジェクトの PUT に対しては、書き込み後の読み取り整合性となっています。 これは、PUT したオブジェクトを直後に GET すると一貫した結果が得られる、ということです。この操作に限っては、結果整合性ではない点にご注意ください。 次に、存在しないオブジェクトの HEAD/GET、そして PUT および DELETE の上書き、これらはいずれも結果整合性です。 Hadoop/Spark のようなワークロードで重要なのはオブジェクトの LIST ですが、こちらも結果整合性です。 どういうことかというと、新規オブジェクトを PUT して直後に LIST すると、追加されたオブジェクトがリストに含まれない場合があります。 また、既存オブジェクトを DELETE して直後に LIST すると、削除済のオブジェクトがリストに含まれる場合がある、ということになります。 -- https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel
  2. マルチパートアップロードというのはサイズの大きいファイルを S3 にアップロードするために S3 側で用意している仕組みで、3つのステップで構成されます。 第1のステップでは、マルチパートアップロードを開始します。 第2のステップでは、対象のマルチパートアップロードに、ファイルを構成する複数のパートをアップロードしていきます。 このとき、マルチパートアップロードを明示的に完了または中止しないと、このパートは残存し、S3 のストレージ課金が継続します。 第3のステップでは、マルチパートアップロードを完了または中止します。 この時点で、複数のパートが連結され、最終的なファイルが S3 上に出力されます。併せて、個々のパートは解放され、ストレージ課金も停止します。