

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

# Amazon EMR のノードタイプ (プライマリノード、コアノード、タスクノード) について理解する
<a name="emr-master-core-task-nodes"></a>

このセクションでは、Amazon EMR によるこれらの各ノードタイプの使用方法を説明し、クラスターの容量計画の基礎を提供します。

## プライマリノード
<a name="emr-plan-master"></a>

プライマリノードはクラスターを管理し、通常は分散アプリケーションのプライマリコンポーネントを実行します。例えば、プライマリノードは、アプリケーションのリソースを管理するための YARN ResourceManager サービスを実行します。また、HDFS NameNode サービスを実行し、クラスターにサブミットされたジョブのステータスを追跡して、インスタンスグループのヘルスをモニタリングします。

クラスターの進行状況をモニタリングしてアプリケーションを直接操作するには、Hadoop ユーザーとして SSH でプライマリノードに接続します。詳細については、「[SSH を使用して Amazon EMR クラスタープライマリノードに接続する](emr-connect-master-node-ssh.md)」を参照してください。プライマリノードに接続すると、Hadoop ログファイルなどのディレクトリとファイルに直接アクセスすることができます。詳細については、「[Amazon EMR ログファイルを表示する](emr-manage-view-web-log-files.md)」を参照してください。プライマリノードで実行されるウェブサイトとしてアプリケーションで公開しているユーザーインターフェイスを表示することもできます。詳細については、「[Amazon EMR クラスターでホストされているウェブインターフェイスを表示する](emr-web-interfaces.md)」を参照してください。

**注記**  
Amazon EMR 5.23.0 以降では、YARN リソースマネージャー、HDFS NameNode、Spark、Hive、Ganglia といったアプリケーションの高可用性をサポートするために、3 つのプライマリノードを持つクラスターを起動できます。プライマリノードは、現在この機能による潜在的な単一障害点ではありません。プライマリノードのいずれかに障害が発生した場合、Amazon EMR は自動的にスタンバイプライマリノードにフェイルオーバーし、障害が発生したプライマリノードを同じ設定とブートストラップアクションを持つ新しいプライマリノードに置き換えます。詳細については、「[プライマリノードの計画と設定](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ha.html)」を参照してください。

## コアノード
<a name="emr-plan-core"></a>

コアノードは、プライマリノードによって管理されます。コアノードはデータノードデーモンを実行して、Hadoop Distributed File System (HDFS)の一部としてデータストレージを調整します。さらにタスクトラッカーデーモンを実行し、インストールされているアプリケーションが要求するデータ上で、その他の並列計算タスクを実行します。たとえば、コアノードは YARN NodeManagerデーモン、Hadoop MapReduce タスク、および Spark 実行プログラムを実行します。

コアインスタンスグループまたはインスタンスフリートはクラスターごとに 1 つだけですが、インスタンスグループまたはインスタンスフリートでは、複数の Amazon EC2 インスタンスで複数のノードを実行できます。インスタンスグループの場合、クラスターの実行中に Amazon EC2 インスタンスを追加または削除することができます。また、オートスケーリングを設定して、メトリクスの値に基づいてインスタンスを追加することもできます。インスタンスグループ設定で Amazon EC2 インスタンスを追加または削除する方法の詳細については、「[Amazon EMR クラスタースケーリングを使用してワークロードの変化に適応する](emr-scale-on-demand.md)」を参照してください。

インスタンスフリートの場合、オンデマンドとスポットで、インスタンスフリートの*ターゲット容量*を変更することにより、事実上インスタンスを追加および変更できます。ターゲット容量の詳細については、「 [インスタンスフリートオプション](emr-instance-fleet.md#emr-instance-fleet-options)」を参照してください。

**警告**  
実行中のコアノードのHDFSデーモンを停止すること、もしくは実行中のコアノードそのものを停止することは、データ損失のリスクにつながります コアノードにスポットインスタンスを使用する場合は十分に考慮するようにしてください。詳細については、「[スポットインスタンスを使用すべき場合](emr-plan-instances-guidelines.md#emr-plan-spot-instances)」を参照してください。

## タスクノード
<a name="emr-plan-task"></a>

タスクノードは、Hadoop MapReduce タスクや Spark 実行プログラムなど、データに対して並行計算タスクを実行するための能力を追加するために使用できます。タスクノードは、データノードデーモン上で実行されることも、HDFS でデータを保存することもありません。コアノードと同様に、既存のユニフォームインスタンスグループに Amazon EC2 インスタンスを追加するか、タスクインスタンスフリートのターゲット容量を変更することにより、クラスターにタスクノードを追加できます。

ユニフォームインスタンスグループ設定では、最大で 48 のタスクインスタンスグループを持つことができます。この方法でインスタンスグループを追加できることで、お客様は、オンデマンドインスタンスとスポットインスタンスなど、異なる Amazon EC2 インスタンスタイプおよび料金設定オプションを組み合わせることができます。これにより、費用対効果の高い方法でワークロードの要件に対応できる柔軟性が得られます。

インスタンスフリート設定では、インスタンスタイプと購入オプションを組み合わせる機能が組み込まれているため、タスクインスタンスフリートは 1 つだけになります。

スポットインスタンスはタスクノードの実行に使用されることが多いため、Amazon EMR には、タスクノードが終了しても実行中のジョブが失敗しないように YARN ジョブをスケジュールするための機能がデフォルトで備えられています。Amazon EMR は、アプリケーションマスタープロセスをコアノードでのみ実行できるようにすることで、これを実現しています。アプリケーションマスタープロセスは実行中のジョブを制御し、ジョブが有効である間は存続する必要があります。

Amazon EMR リリース 5.19.0 以降では、組み込みの [YARN ノードラベル](https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/NodeLabel.html)機能を使用して、これを実現しています。(以前のバージョンではコードパッチを使用していました)。`yarn-site` と `capacity-scheduler` の設定分類のプロパティは、YARN capacity-scheduler と fair-scheduler がノードラベルを利用できるように、デフォルトで設定されます。Amazon EMR は、`CORE` ラベルでコアノードに自動的にラベルを付け、アプリケーションマスターが CORE ラベルを持つノードでのみスケジュールされるようにプロパティを設定します。yarn-site および capacity-scheduler 設定分類の関連プロパティを手動で変更したり、関連する XML ファイルで直接変更したりすると、この機能が停止したり、この機能が変更されたりする可能性があります。

Amazon EMR 6.x リリースシリーズ以降では、YARN ノードラベル機能はデフォルトで無効になっています。アプリケーションプライマリプロセスは、デフォルトでコアノードとタスクノードの両方で実行できます。次のプロパティを設定することで、YARN ノードラベル機能を有効にできます。
+ `yarn.node-labels.enabled: true`
+ `yarn.node-labels.am.default-node-label-expression: 'CORE'`

Amazon EMR 7.x リリースシリーズ以降、Amazon EMR はオンデマンドやスポットなどの市場タイプ別に YARN ノードラベルをインスタンスに割り当てます。次のプロパティを設定することで、ノードラベルを有効にし、アプリケーションプロセスを ON\_DEMAND に制限できます。

```
yarn.node-labels.enabled: true
yarn.node-labels.am.default-node-label-expression: 'ON_DEMAND'
```

Amazon EMR 7.0 以降を使用している場合は、次の設定を使用して、アプリケーションプロセスを `CORE` ラベル付きのノードに制限できます。

```
yarn.node-labels.enabled: true
yarn.node-labels.am.default-node-label-expression: 'CORE'
```

Amazon EMR リリース 7.2 以降では、クラスターがノードラベルでマネージドスケーリングを使用している場合、Amazon EMR はアプリケーションプロセスとエグゼキュターの需要に基づいてクラスターを個別にスケーリングしようとします。

例えば、Amazon EMR リリース 7.2 以降を使用し、アプリケーションプロセスを `ON_DEMAND` ノードに制限した場合、アプリケーションプロセスの需要が増加すると、マネージドスケーリングによって `ON_DEMAND` ノードがスケールアップされます。同様に、アプリケーションプロセスを `CORE` ノードに制限した場合、アプリケーションプロセスの需要が増加することにより、管理スケーリングによって `CORE` ノードがスケールアップされます。

特定のプロパティの詳細については、[タスクノードのスポットインスタンスの終了によるジョブの失敗を防ぐ Amazon EMR 設定](emr-plan-instances-guidelines.md#emr-plan-spot-YARN)を参照してください。