

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

# ステップ 6: Amazon EMR クラスターの設定の確認
<a name="emr-troubleshoot-slow-6"></a>

 構成設定では、タスクを再試行する回数およびソートに利用できるメモリ量など、クラスターの実行方法に関する詳細を指定します。Amazon EMR を使用してクラスターを起動すると、標準の Hadoop 設定に加えて、Amazon EMR 固有の設定があります。構成設定はクラスターのマスターノードに保存されます。構成設定を確認し、効率的に実行するのに必要なリソースがクラスターにあるようにできます。

 Amazon EMR は、クラスターの起動に使用されるデフォルトの Hadoop 設定を定義します。この値は、クラスターに指定した AMI およびインスタンスに基づいています。ブートストラップアクションを使用したデフォルトの値から、またはジョブ実行パラメータに新しい値を指定することによって、構成設定を変更できます。詳細については、「[Amazon EMR クラスターで追加のソフトウェアをインストールするブートストラップアクションを作成する](emr-plan-bootstrap.md)」を参照してください。ブートストラップアクションで構成設定を変更したかどうかを判定するには、ブートストラップアクションログを確認します。

 Amazon EMR は、各ジョブの実行に使用された Hadoop 設定をログに記録します。ログデータは、マスターノードの `/mnt/var/log/hadoop/history/` ディレクトリに `job_job-id_conf.xml` という名前のファイルで存されます。ここで *job-id* はジョブの識別子で置換されます。ログのアーカイブを有効にしている場合、このデータは Simple Storage Service (Amazon S3) の `logs/date/jobflow-id/jobs` フォルダーにコピーされます。ここで *date* はジョブが実行された日付、*jobflow-id* はクラスターの識別子です。

 次の Hadoop ジョブ構成設定は、パフォーマンスの問題を調査するのに特に役立ちます。Hadoop の構成設定および Hadoop の動作にどのように影響するかについては、[http://hadoop.apache.org/docs/](http://hadoop.apache.org/docs/) を参照してください。

**警告**  
ノードが 4 つ未満のクラスターで `dfs.replication` を 1 に設定すると、単一ノードがダウンした場合に HDFS データが失われる可能性があります。本番環境のワークロードには、少なくとも 4 つのコアノードを持つクラスターを使用することをお勧めします。
Amazon EMR では、クラスターはコアノードを `dfs.replication` 未満にスケールすることはできません。例えば、`dfs.replication = 2` の場合、コアノードの最小数は 2 です。
マネージドスケーリングや自動スケーリングを使用する場合や、クラスターのサイズを手動で変更する場合は、`dfs.replication` を 2 以上に設定することをお勧めします。


| 構成設定 | 説明 | 
| --- | --- | 
| dfs.replication | RAID のような環境を生成するために、単一ブロック（ハードドライブブロックなど）がコピーされる HDFS ノードの数。ブロックのコピーを含んでいる HDFS のノード数を決定します。 | 
| io.sort.mb | ソートに利用可能な合計メモリ。この値は io.sort.factor の 10 倍になります。この設定は、io.sort.mb に mapred.tasktracker.ap.tasks.maximum を掛けて計算して、タスクノードが使用する合計メモリを計算するためにも使用できます。 | 
| io.sort.spill.percent | 割り当てられたソートメモリがいっぱいであるため、ディスクが使用を開始するポイントでソート中に使用されます。 | 
| mapred.child.java.opts | 廃止済み。代わりに、mapred.map.child.java.opts および mapred.reduce.child.java.opts を使用します。TaskTracker が内部で実行するタスク用に JVM を起動する際に使用する Java オプション。共通パラメータは、最大メモリサイズの設定用の "-Xmx" です。 | 
| mapred.map.child.java.opts | TaskTracker が内部で実行するマップタスク用に JVM を起動する際に使用する Java オプション。共通パラメータは、最大メモリヒープサイズの設定用の "-Xmx" です。 | 
| mapred.map.tasks.speculative.execution | 同じタスクのマップタスク試行を並行して起動できるかどうかを決定します。 | 
| mapred.reduce.tasks.speculative.execution | 同じタスクのリデュースタスク試行を並行して起動できるかどうかを決定します。 | 
| mapred.map.max.attempts | マップタスクの最大試行回数。すべてが失敗した場合、マップタスクは失敗としてマークされます。 | 
| mapred.reduce.child.java.opts | TaskTracker が内部で実行する Reduce タスク用に JVM を起動する際に使用する Java オプション。共通パラメータは、最大メモリヒープサイズの設定用の "-Xmx" です。 | 
| mapred.reduce.max.attempts | Reduce タスクの最大試行回数。すべてが失敗した場合、マップタスクは失敗としてマークされます。 | 
| mapred.reduce.slowstart.completed.maps | Reduce タスクが試行される前に完了する必要のある Map タスクの量。待機時間が足りないと、試行中に「Too many fetch-failure」エラーが発生する場合があります。 | 
| mapred.reuse.jvm.num.tasks | タスクは単一の JVM 内で実行されます。同じ JVM を再利用できるタスク数を指定します。 | 
| mapred.tasktracker.map.tasks.maximum | マッピング中のタスクノードごとに並行して実行できる最大タスク数。 | 
| mapred.tasktracker.reduce.tasks.maximum | 減らしている間のタスクノードごとに並行して実行できる最大タスク数。 | 

 クラスタータスクがメモリを大量に使用する場合、コアノードごとに使うタスクの数を減らしてジョブトラッカーのヒープサイズを減らすと、パフォーマンスを向上させることができます。