Amazon S3 にデータをアップロードする - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 にデータをアップロードする

Amazon S3 にオブジェクトをアップロードする方法については、「」を参照してください。バケットにオブジェクトを追加するAmazon Simple Storage Service 入門ガイド。Amazon S3 と Hadoop の使用方法については、「」を参照してください。http://wiki.apache.org/hadoop/AmazonS3

Amazon S3 バケットの作成と設定

Amazon EMR はAWS SDK for JavaAmazon S3 を使用して、入力データ、ログファイル、および出力データを保存します。Amazon S3 は、これらのストレージロケーションをバケット。バケットには、Amazon S3 と DNS の要件に従って一定の制限と上限があります。詳細については、Amazon Simple Storage Service デベロッパーガイドBucket restrictions and limitations を参照してください。

このセクションでは、Amazon S3 を使用する方法を示しますAWS Management ConsoleAmazon S3 バケットのアクセス許可を作成し、設定することができます。また、Amazon S3 API またはを使用して、Amazon S3 バケットのアクセス許可を作成および設定できます。AWS CLI。変更と共に curl を使用して、Amazon S3 の適切な認証パラメータを渡すこともできます。

以下のリソースを参照してください。

  • コンソールを使用してバケットを作成するには、「」を参照してください。バケットの作成Amazon S3 ユーザーガイド

  • を使用してバケットを作成し、操作するにはAWS CLI「」を参照してください。での高レベルの S3 コマンドの使用AWS Command Line InterfaceAmazon S3 ユーザーガイド

  • SDK を使用してバケットを作成するには、「」を参照してください。バケットを作成する例Amazon Simple Storage Service 開発者ガイド

  • カールを使用してバケットを操作する方法については、「」を参照してください。カール用の Amazon S3 認証ツール

  • リージョン固有のバケットの指定の詳細については、「」を参照してください。バケットへのアクセスAmazon Simple Storage Service 開発者ガイド

  • Amazon S3 アクセスポイントを使用してバケットを操作するには、「」を参照してください。アクセスポイントでのバケット形式のエイリアスの使用Amazon S3 ユーザーガイド。Amazon S3 アクセスポイントは、Amazon S3 バケット名の代わりに Amazon S3 アクセスポイントエイリアスで簡単に使用できます。Amazon S3 アクセスポイントエイリアスは、Spark、Hive、Presto などの既存のアプリケーションと新しいアプリケーションの両方に使用できます。

注記

バケットのロギングを有効にした場合、有効になるのはバケットアクセスログのみです。Amazon EMR クラスターログは有効にはなりません。

バケットの作成中またはそれ以降に、アプリケーションに応じてバケットにアクセスするための適切なアクセス許可を設定できます。一般的に、お客様自身(オーナー)に読み書きのアクセス、認証されたユーザーに対しては読み込みアクセスを付与します。

必要な Amazon S3 バケットが存在していなければなりません。クラスター内で参照される必要なスクリプトまたはデータはすべて、Amazon S3 にアップロードする必要があります。次の表では、サンプルデータ、スクリプト、およびログファイルの場所について説明しています。

Amazon S3 のマルチパートアップロードの設定

Amazon EMR は、Amazon S3 マルチパートアップロードをAWSSDK for Java。マルチパートアップロードを使用すると、単一のオブジェクトをパートのセットとしてアップロードすることができます。これらのオブジェクトパートは、任意の順序で個別にアップロードできます。いずれかのパートの送信が失敗すると、他のパートに影響を与えることなくそのパートを再送することができます。オブジェクトのすべてのパートがアップロードされると、Amazon S3 はパートを組み立ててオブジェクトを作成します。

詳細については、Amazon Simple Storage Service デベロッパーガイドの「マルチパートアップロードの概要」を参照してください。

さらに、Amazon EMR には、失敗したマルチパートアップロードのパートのクリーンアップをより正確に制御できるプロパティも用意されています。

マルチパートアップロードのための Amazon EMR 設定プロパティを次の表で説明します。これらは、core-site 設定分類を使用して設定することができます。詳細については、「」を参照してください。アプリケーションの設定Amazon EMR リリース ガイド

設定パラメータ名 デフォルト値 説明
fs.s3n.multipart.uploads.enabled true マルチパートアップロードを有効にするかどうかを示すブールタイプ。EMRFS Consistent View が有効になっていると、マルチパートアップロードがデフォルトで有効になっており、この値をfalseは無視されます。
fs.s3n.multipart.uploads.split.size 134217728

マルチパートアップロードが有効になっている場合に、EMRFS で新しいパートのアップロードを開始する前に、パートの最大サイズ (バイト単位) を指定します。最小値は 5242880 (5 MB) です。指定した値が小さい場合は、5242880 が使用されます。最大数は 5368709120 (5 GB) です。指定した値が大きい場合は、5368709120 が使用されます。

EMRFS のクライアント側で暗号化が無効になっていて、Amazon S3 Optimized Committer も無効になっている場合、この値によって、EMRFS がPutObjectリクエストでファイルをアップロードします。詳細については、「」を参照してください。

fs.s3n.ssl.enabled true http と https のどちらを使用するかを示すブールタイプ。
fs.s3.buckets.create.enabled false 存在しない場合にバケットを作成する必要があるかどうかを示すブールタイプです。false に設定すると、CreateBucket 操作で例外が発生します。
fs.s3.multipart.clean.enabled false 完了しないマルチパートアップロードの定期的なバックグラウンドクリーンアップを有効にするかどうかを示すブールタイプです。
fs.s3.multipart.clean.age.threshold 604800 マルチパートアップロードがクリーンアップの対象となるまでの最小期間 (秒単位) を指定する long 型です。デフォルトは 1 週間です。
fs.s3.multipart.clean.jitter.max 10000 次回クリーンアップをスケジュールする前の 15 分間の固定遅延に追加するランダムのジッター遅延時間 (秒単位) の最大数を指定する整数型です。

Amazon EMR コンソールを使用してマルチパートアップロードを無効にするには

この手順では、クラスターの作成時に Amazon EMR コンソールを使用してマルチパートアップロードを無効にする方法を説明します。

マルチパートアップロードを無効にするには

  1. で Amazon EMR コンソール (https://console.aws.amazon.com/elasticmapreduce/

  2. [Create cluster (クラスターの作成)]、[Go to advanced options (詳細オプションに移動する)] の順に選択します。

  3. [Edit Software Settings (ソフトウェア設定の編集)] の下で、次の設定を入力します。classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false]

  4. クラスターの作成に進みます.

を使用してマルチパートアップロードを無効にするにはAWS CLI

この手順では、AWS CLI を使用してマルチパートアップロードを無効にする方法を説明します。マルチパートアップロードを無効にするには、create-cluster コマンドを入力し、--bootstrap-actions パラメータを指定します。

AWS CLI を使用してマルチパートアップロードを無効にするには

  1. 次の内容で myConfig.json ファイルを作成してコマンドを実行するのと同じディレクトリに保存します。

    [ { "Classification": "core-site", "Properties": { "fs.s3n.multipart.uploads.enabled": "false" } } ]
  2. 次のコマンドを入力し、myKey を EC2 キーペアの名前に置き換えます。

    注記

    Linux の行継続文字 (\) は、読みやすくするために含まれています。これらは、削除したり、Linux コマンドで使用することができます。Windows の場合、Windows の場合、それらを削除するか、キャレット (^) に置き換えます。

    aws emr create-cluster --name "Test cluster" \ --release-label emr-5.33.0 --applications Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --configurations file://myConfig.json

API を使用してマルチパートアップロードを無効にするには

Amazon S3 のマルチパートアップロードをプログラムで使用する方法については、の使用AWSマルチパートアップロード用の SDK for Java SDKAmazon Simple Storage Service 開発者ガイド

の詳細については、「」を参照してください。AWSSDK for JavaAWSSDK for Java

ベストプラクティス

EMR クラスターで Amazon S3 バケットを使用するための推奨事項を次に示します。

バージョニングの有効化

バージョニングは、Amazon S3 バケット用の推奨設定です。バージョニングを有効にすると、データが誤って削除または上書きされても復元できます。詳細については、「」を参照してください。バージョニングの使用Amazon Simple Storage Service 開発者ガイドの「」

失敗したマルチパートアップロードのクリーンアップ

EMR クラスターコンポーネントは、AWSデフォルトで SDK for Java で、ログファイルと出力データを Amazon S3 に書き込みます。Amazon EMR を使用した、この設定に関連するプロパティの変更の詳細については、「」を参照してください。Amazon S3 のマルチパートアップロードの設定。大きなファイルのアップロードでは、Amazon S3 マルチパートアップロードが不完全になることがあります。マルチパートアップロードを正常に完了できないと、進行中のマルチパートアップロードによって継続的にバケットが使用され、ストレージ料金が発生します。過剰なファイルストレージを避けるために以下のオプションをお勧めします。

  • Amazon EMR で使用するバケットについては、Amazon S3 のライフサイクル設定ルールを使用して、アップロードの開始日から 3 日後に不完全なマルチパートアップロードを削除します。ライフサイクル設定ルールを使用すると、オブジェクトのストレージクラスと有効期限を制御できます。詳細については、「」を参照してください。オブジェクトのライフサイクル管理, およびバケットライフサイクルポリシーを使用した完了しないマルチパートアップロードの中止

  • Amazon EMR のマルチパートクリーンアップ機能を有効にするには、fs.s3.multipart.clean.enabledTRUE他のクリーンアップパラメータのチューニングを行います。この機能は、大容量、大規模、および稼働時間が限られているクラスターで便利です。この場合は、DaysAfterIntitiationパラメータが、最小に設定しても長すぎ、Amazon S3 ストレージでスパイクを発生させています。Amazon EMR のマルチパートクリーンアップにより、より正確な制御が可能になります。詳細については、「Amazon S3 のマルチパートアップロードの設定」を参照してください。

バージョンマーカーを管理する

Amazon S3 でライフサイクル設定ルールを有効にして、Amazon EMR で使用するバージョニング対応バケットについて期限切れのオブジェクト削除マーカーを削除することをお勧めします。バージョニング対応のバケットからオブジェクトを削除すると、削除マーカーが作成されます。オブジェクトの以前のバージョンすべてがその後有効期限切れになると、有効期限が切れたオブジェクトの削除マーカー 1 つがバケット内に残ります。これらの削除マーカーに対する料金はかかりませんが、期限切れのマーカーを削除すると LIST リクエストのパフォーマンスが向上する可能性があります。詳細については、「」を参照してください。バージョニングが設定されたバケットのライフサイクル設定」 (Amazon Simple Storage Service Console User Guide) を参照してください。

パフォーマンスに関するベストプラクティス

EMR クラスターやこれらのクラスターのアプリケーションでは、使い方やワークロードに応じて、バケットに対する多数のリクエストが発生することがあります。詳細については、「」を参照してください。リクエスト率とパフォーマンスに関する考慮事項Amazon Simple Storage Service 開発者ガイド