SlideShare a Scribd company logo
© 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});

More Related Content

PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PDF
Deep Dive into Spark SQL with Advanced Performance Tuning
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
PDF
20190806 AWS Black Belt Online Seminar AWS Glue
PPTX
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PPTX
マイクロサービスにおける 結果整合性との戦い
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Deep Dive into Spark SQL with Advanced Performance Tuning
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
20190806 AWS Black Belt Online Seminar AWS Glue
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
マイクロサービスにおける 結果整合性との戦い
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤

What's hot (20)

PDF
20200218 AWS Black Belt Online Seminar Next Generation Redshift
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PPTX
Amazon SageMakerでカスタムコンテナを使った学習
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
PDF
20190723 AWS Black Belt Online Seminar AWS CloudHSM
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PDF
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
PDF
社内ドキュメント検索システム構築のノウハウ
PDF
SQL大量発行処理をいかにして高速化するか
PPTX
MongoDBが遅いときの切り分け方法
PDF
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
PDF
Google Cloud のネットワークとロードバランサ
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
PDF
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
PDF
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
20200218 AWS Black Belt Online Seminar Next Generation Redshift
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Amazon SageMakerでカスタムコンテナを使った学習
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
20190723 AWS Black Belt Online Seminar AWS CloudHSM
単なるキャッシュじゃないよ!?infinispanの紹介
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
社内ドキュメント検索システム構築のノウハウ
SQL大量発行処理をいかにして高速化するか
MongoDBが遅いときの切り分け方法
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
Google Cloud のネットワークとロードバランサ
20190911 AWS Black Belt Online Seminar AWS Batch
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
Ad

Similar to S3 整合性モデルと Hadoop/Spark の話 (20)

PDF
ビッグデータサービス群のおさらい & AWS Data Pipeline
PDF
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
PDF
ソリューションセッション#3 ビッグデータの3つのVと4つのプロセスを支えるAWS活用法
PPTX
【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム
PPTX
Lv1から始めるWebサービスのインフラ構築
PPTX
20170803 bigdataevent
PPTX
AI/MLシステムにおけるビッグデータとの付き合い方
PDF
Amazon Elasticsearch Serviceを利用したAWSのログ活用
PDF
20161214 re growth-sapporo
PDF
AWS Black Belt Online Seminar 2017 Amazon S3
PDF
AWS Black Belt Techシリーズ AWS Data Pipeline
PDF
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
PDF
Accelerating AdTech on AWS #AWSAdTechJP
PDF
Cm re growth-devio-mtup11-sapporo-004
PDF
AWSの様々なアーキテクチャ
PPTX
Spark Summit 2014 の報告と最近の取り組みについて
PDF
Jenkinsとhadoopを利用した継続的データ解析環境の構築
PPTX
re:invent2018 総ざらえ
PDF
AWS Glueを使った Serverless ETL の実装パターン
PDF
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
ビッグデータサービス群のおさらい & AWS Data Pipeline
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
ソリューションセッション#3 ビッグデータの3つのVと4つのプロセスを支えるAWS活用法
【AWS Summit Tokyo 2017】Amazon ECS と SpotFleet を活用した低コストでスケーラブルなジョブワーカーシステム
Lv1から始めるWebサービスのインフラ構築
20170803 bigdataevent
AI/MLシステムにおけるビッグデータとの付き合い方
Amazon Elasticsearch Serviceを利用したAWSのログ活用
20161214 re growth-sapporo
AWS Black Belt Online Seminar 2017 Amazon S3
AWS Black Belt Techシリーズ AWS Data Pipeline
Modernizing Big Data Workload Using Amazon EMR & AWS Glue
Accelerating AdTech on AWS #AWSAdTechJP
Cm re growth-devio-mtup11-sapporo-004
AWSの様々なアーキテクチャ
Spark Summit 2014 の報告と最近の取り組みについて
Jenkinsとhadoopを利用した継続的データ解析環境の構築
re:invent2018 総ざらえ
AWS Glueを使った Serverless ETL の実装パターン
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Ad

More from Noritaka Sekiyama (12)

PPTX
5分ではじめるApache Spark on AWS
PDF
VPC Reachability Analyzer 使って人生が変わった話
PDF
AWS で Presto を徹底的に使いこなすワザ
PPTX
Sparkにプルリク投げてみた
PDF
Running Apache Spark on AWS
PDF
Effective Data Lakes - ユースケースとデザインパターン
PDF
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
PDF
Introduction to New CloudWatch Agent
PPTX
Security Operations and Automation on AWS
PDF
運用視点でのAWSサポート利用Tips
PPTX
基礎から学ぶ? EC2マルチキャスト
PDF
Floodlightってぶっちゃけどうなの?
5分ではじめるApache Spark on AWS
VPC Reachability Analyzer 使って人生が変わった話
AWS で Presto を徹底的に使いこなすワザ
Sparkにプルリク投げてみた
Running Apache Spark on AWS
Effective Data Lakes - ユースケースとデザインパターン
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Introduction to New CloudWatch Agent
Security Operations and Automation on AWS
運用視点でのAWSサポート利用Tips
基礎から学ぶ? EC2マルチキャスト
Floodlightってぶっちゃけどうなの?

Recently uploaded (9)

PDF
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
PDF
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
PDF
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
PDF
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
PDF
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
PDF
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
PDF
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
PDF
液体クラトム抽出物供給側分析:世界の生産能力・販売量・平均価格動向(2025-2031)
PDF
口腔内スキャナー市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
液体クラトム抽出物供給側分析:世界の生産能力・販売量・平均価格動向(2025-2031)
口腔内スキャナー市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測

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});

Editor's Notes

  • #6: 皆さんの中には「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
  • #15: マルチパートアップロードというのはサイズの大きいファイルを S3 にアップロードするために S3 側で用意している仕組みで、3つのステップで構成されます。 第1のステップでは、マルチパートアップロードを開始します。 第2のステップでは、対象のマルチパートアップロードに、ファイルを構成する複数のパートをアップロードしていきます。 このとき、マルチパートアップロードを明示的に完了または中止しないと、このパートは残存し、S3 のストレージ課金が継続します。 第3のステップでは、マルチパートアップロードを完了または中止します。 この時点で、複数のパートが連結され、最終的なファイルが S3 上に出力されます。併せて、個々のパートは解放され、ストレージ課金も停止します。