Amazon S3 から Amazon EMR クラスターの HDFS に大量のデータをコピーする方法を教えてください。

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) から Amazon EMR クラスターに大量のデータをコピーしたいと考えています。

簡単な説明

S3DistCp を使用して Amazon S3 クラスターと Amazon EMR クラスター間でデータをコピーします。S3DistCp はデフォルトで、Amazon EMR クラスターにインストールされています。S3DistCp を呼び出すには、起動時またはクラスターの実行後にステップとして追加します。

解決策

AWS コマンドラインインターフェイス (AWS CLI) を使用して実行中のクラスターに S3DistCp ステップを追加するには、「クラスターで S3DistCp をステップとして追加する」を参照してください。

注: AWS CLI コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してください

コンソールを使用して S3DistCp ステップを追加するには、次の操作を行います。

1.Amazon EMR コンソールを開き、[クラスター] を選択します。

2.リストから Amazon EMR クラスターを選択し、[ステップ] を選択します。

3.[ステップを追加] を選択し、次のオプションを選択します。

[ステップの種類] に、[カスタム JAR] を選択します。
[名前] に、S3DistCp ステップの名前を入力します。
[JAR の場所] に、command-runner.jar と入力します。詳細については、「Amazon EMR クラスターでコマンドとスクリプトを実行する」を参照してください。
[引数] に入力するオプションの例を次に示します: s3-dist-cp --src=s3://s3distcp-source/input-data --dest=hdfs:///output-folder1
[失敗時のアクション] に、[続行] を選択します。

4.[追加] を選択します。

5.ステップの [ステータス]Completed に変わったら、ファイルがクラスターにコピーされたことを確認します。

$ hadoop fs -ls hdfs:///output-folder1/

注: groupBy オプションを使用して小さなファイルを少数の大きなファイルに集約し、outputCodec オプションを使用して大きなファイルを圧縮するのがベストプラクティスです。

トラブルシューティング

S3DistCp の問題をトラブルシューティングするには、ステップログとタスクログを確認します。

1.Amazon EMR コンソールを開き、[クラスター] を選択します。

2.リストから EMR クラスターを選択し、[ステップ] を選択します。

3.[ログファイル] 列で、適切なステップログを選択します。

controller: ステップの処理に関する情報。ロード中にステップが失敗した場合は、このログでスタックトレースを確認できます。
syslog: Apache や Hadoop など、Amazon 以外のソフトウェアからのログ。
stderr: ステップの処理中の Hadoop の標準エラーチャネル。
stdout: ステップの処理中の Hadoop の標準出力チャネル。

ステップログで失敗の根本原因が見つからない場合は、S3DistCp タスクログを確認してください。

1.Amazon EMR コンソールを開き、[クラスター] を選択します。

2.リストから EMR クラスターを選択し、[ステップ] を選択します。

3.[ログファイル] 列で [ジョブを表示] を選択します。

4.[アクション] 列で、[タスクを表示] を選択します。

5.失敗したタスクがある場合は、[表示] を選択してタスクログを確認します。

よくあるエラー

メモリ不足が原因でリデューサータスクが失敗する:

ステップの stderr ログに次のようなエラーメッセージがある場合は、リデューサータスクを処理するためのメモリが不足していたため、S3DistCp ジョブが失敗したことを示しています。

Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Container [pid=19135,containerID=container_1494287247949_0005_01_000003] is running beyond virtual memory limits. Current usage: 569.0 MB of 1.4 GB physical memory used; 3.0 GB of 3.0 GB virtual memory used. Killing container.

この問題を解決するには、以下のオプションのいずれかを使用してリデューサータスクのメモリリソースを増やします。

Amazon S3 のアクセス許可エラー:

ステップの stderr ログに次のようなエラーメッセージがある場合は、アクセス許可の問題により S3DistCp タスクが Amazon S3 にアクセスできなかったことを示しています。

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: REQUEST_ID

この問題を解決するには、「アクセス許可エラー」を参照してください。

関連情報

ログファイルを確認する

AWS公式
AWS公式更新しました 3ヶ月前
コメントはありません

関連するコンテンツ