翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
S3DistCp (s3-dist-cp)
Apache DistCp は、大量のデータをコピーするために使用できるオープンソースツールです。S3DistCp は に似ていますが DistCp、 AWS、特に Amazon S3 と連携するように最適化されています。Amazon EMRバージョン 4.0 以降の S3DistCp のコマンドは でs3-dist-cp
、クラスターまたはコマンドラインでステップとして追加します。S3DistCp を使用すると、大量のデータを Amazon S3 から に効率的にコピーし、Amazon EMRクラスターの後続のステップで処理HDFSできます。S3DistCp を使用して、Amazon S3 バケット間、または から Amazon S3 HDFSにデータをコピーすることもできます。S3DistCp は、バケット間および AWS アカウント間で多数のオブジェクトを並列コピーするためのスケーラビリティと効率が向上しています。
実際のシナリオにおける S3DistCP の柔軟性を示す特定のコマンドについては、 AWS ビッグデータブログのS3DistCp を使用するための 7 つのヒント
同様に DistCp、S3DistCp は MapReduce を使用して分散的にコピーします。複数のサーバー全体でのコピー、エラー処理、復旧、および報告のタスクが共有されます。Apache DistCp オープンソースプロジェクトの詳細については、Apache Hadoop ドキュメントのDistCpガイド
S3DistCp が指定されたファイルの一部またはすべてをコピーできない場合、クラスターステップは失敗し、ゼロ以外のエラーコードを返します。この場合、S3DistCp は部分的にコピーされたファイルをクリーンアップしません。
重要
S3DistCp は、アンダースコア文字を含む Amazon S3 バケット名をサポートしていません。
S3DistCp は Parquet ファイルの連結をサポートしていません。 PySpark 代わりに を使用します。詳細については、「Amazon での Parquet ファイルの連結EMR
S3DistCP を使用して S3 から に単一のファイル (ディレクトリではなく) をコピーする際のコピーエラーを回避するにはS3HDFS、Amazon EMRバージョン 5.33.0 以降または Amazon EMRバージョン 6.3.0 以降を使用します。
S3DistCp オプション
S3DistCp は DistCp、データのコピーと圧縮の方法を変更するためのさまざまなオプションをサポートしています。
S3DistCp を呼び出すときに、次の表で説明するオプションを指定できます。オプションは、引数リストを使用してステップに追加されます。S3DistCp 引数の例を次の表に示します。
オプション | 説明 | 必須 |
---|---|---|
‑‑src=LOCATION
|
コピーするデータのロケーション。これは、 HDFSまたは Amazon S3 の場所のいずれかです。 例: 重要S3DistCp は、アンダースコア文字を含む Amazon S3 バケット名をサポートしていません。 |
あり |
‑‑dest=LOCATION
|
データのコピー先。これは、 HDFSまたは Amazon S3 の場所のいずれかです。 例: 重要S3DistCp は、アンダースコア文字を含む Amazon S3 バケット名をサポートしていません。 |
あり |
‑‑srcPattern=PATTERN
|
正規表現の引数にアスタリスク(*)などの特殊文字が含まれる場合は、正規表現または 例: |
なし |
‑‑groupBy=PATTERN
|
S3DistCp が式に一致するファイルを連結する正規 括弧は、ファイルをグループ化する方法を示しています。括弧で囲まれたステートメントと一致するすべての項目が 1 つの出力ファイルに統合されます。正規表現に括弧ステートメントが含まれていない場合、クラスターは S3DistCp ステップで失敗し、エラーを返します。 正規表現の引数にアスタリスク(*)などの特殊文字が含まれる場合は、正規表現または
例: |
なし |
‑‑targetSize=SIZE
|
例: |
なし |
‑‑appendToLastFile |
がHDFS既に存在する Amazon S3DistCp からファイルにコピーするときの S3 の動作を指定します。 Amazon S3 既存のファイルに新しいファイルのデータが追加されます。 |
なし |
‑‑outputCodec=CODEC
|
コピーされたファイルで使用する圧縮コーデックを指定します。値としては 例: |
なし |
‑‑s3ServerSideEncryption
|
ターゲットデータが を使用して転送SSLされ、 AWS サービス側のキーを使用して Amazon S3 で自動的に暗号化されるようにします。S3DistCp を使用してデータを取得する場合、オブジェクトは自動的に暗号化されません。暗号化されていないオブジェクトを、暗号化が必要な Amazon S3 バケットにコピーしようとすると、操作は失敗します。詳細については、「データ暗号化の使用」を参照してください。 例: |
なし |
‑‑deleteOnSuccess
|
コピーオペレーションが成功すると、このオプションにより、S3DistCp はコピー元の場所からコピーされたファイルを削除します。このオプションは、スケジュールされたタスクとして、ログファイルなどの出力ファイルを、あるロケーションから他のロケーションにコピーするときに役立ちます。これにより、同じファイルを 2 回コピーせずに済むようになります。 例: |
なし |
‑‑disableMultipartUpload
|
マルチパートアップロードの使用を無効にします。 例: |
なし |
‑‑multipartUploadChunkSize=SIZE
|
Amazon S3 マルチパートアップロードでの各パートサイズ (MiB 単位)。S3DistCp は、 より大きいデータをコピーするときにマルチパートアップロードを使用します 例: |
なし |
‑‑numberFiles
|
出力ファイル名の先頭に通し番号を付けます。 例: |
なし |
‑‑startingIndex=INDEX
|
例: |
なし |
‑‑outputManifest=FILENAME
|
S3DistCp によってコピーされたすべてのファイルのリストを含む、Gzip で圧縮されたテキストファイルを作成します。 例: |
なし |
‑‑previousManifest=PATH
|
例: |
なし |
‑‑requirePreviousManifest |
S3DistCp への前回の呼び出し中に作成された以前のマニフェストが必要です。これが false に設定されている場合、以前のマニフェストが指定されていないときにエラーが生成されません。デフォルトは true です。 |
なし |
‑‑copyFromManifest
|
の動作 例: |
なし |
‑‑s3Endpoint=ENDPOINT |
ファイルをアップロードするときに使用する Amazon S3 エンドポイントを指定します。このオプションは、アップロード元とアップロード先の両方のエンドポイントを設定します。設定しない場合は、デフォルトのエンドポイント 例: |
なし |
‑‑storageClass=CLASS |
送信先が Amazon S3 のときに使用するストレージクラス。有効な値は STANDARDおよび REDUCED_ ですREDUNDANCY。このオプションを指定しない場合、S3DistCp はストレージクラスを保持しようとします。 例: |
なし |
‑‑srcPrefixesFile=PATH |
Amazon S3 (s3://)、 HDFS (hdfs:///)、またはローカルファイルシステム (file:/) のテキストファイル。1 行に 1 つのプレフィックスの が指定されている場合、S3DistCp 例: |
なし |
上記のオプションに加えて、S3DistCp はツールインターフェイス
クラスター内のステップとしての S3DistCp の追加
S3DistCp を呼び出すには、クラスターのステップとして追加します。ステップは、起動時にクラスターに追加するか、コンソール、CLI、または を使用して実行中のクラスターに追加できますAPI。次の例は、実行中のクラスターに S3DistCp step を追加する方法を示しています。クラスターにステップを追加する方法の詳細については、「Amazon EMR管理ガイド」の「クラスターに作業を送信する」を参照してください。
を使用して実行中のクラスターに S3DistCp step を追加するには AWS CLI
での Amazon EMR コマンドの使用の詳細については AWS CLI、AWS CLI 「 コマンドリファレンス」を参照してください。
-
S3DistCp を呼び出すクラスターにステップを追加するには、S3DistCp がコピーオペレーションを引数として実行する方法を指定するパラメータを渡します。
次の例では、デーモンログを Amazon S3 から
hdfs:///output
にコピーします。次のコマンドについて説明します。-
‑‑cluster-id
でクラスターを指定します。 -
Jar
は S3DistCp JAR ファイルの場所です。command-runner.jar を使用してクラスターでコマンドを実行する方法の例については、「スクリプトまたはコマンドを実行するカスタムJARステップを送信する」を参照してください。 -
Args
は、S3DistCp に渡すオプションの名前と値のペアのカンマ区切りリストです。使用可能なオプションの完全なリストについては、「S3DistCp オプション」を参照してください。
実行中のクラスターに S3DistCp copy ステップを追加するには、
この例のように、Amazon S3 またはローカルJSONファイルシステムに保存されたファイルに以下を入力します。をクラスター IDmyStep.json
j-3GYXXXXXX9IOK
に置き換え、 を Amazon S3 バケット名amzn-s3-demo-bucket
に置き換えます。[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*[a-zA-Z,]+"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]
aws emr add-steps ‑‑cluster-id
j-3GYXXXXXX9IOK
‑‑steps file://./myStep.json -
例 Amazon S3 から にログファイルをコピーする HDFS
この例は、実行中のクラスターにステップHDFSを追加して、Amazon S3 バケットに保存されているログファイルを にコピーする方法も示しています。この例では、‑‑srcPattern
オプションを使用して、デーモンログにコピーされたデータを制限しています。
‑‑srcPattern
オプションHDFSを使用してログファイルを Amazon S3 から にコピーするには、
この例のようにAmazon S3またはローカルJSONファイルシステムに保存されたファイルに以下を入力します。をクラスター ID myStep.json
j-3GYXXXXXX9IOK
に置き換え、 を Amazon S3 バケット名amzn-s3-demo-bucket
に置き換えます。
[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*daemons.*-hadoop-.*"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]