Yarn を追加した Hadoop 2.0 で対処された Hadoop 1.0 の欠点を見てみましょう。
- スケーラビリティの問題: Hadoop クラスタに数千のノードがある場合でも、Job Tracker は単一のマシンで実行されます。ジョブ トラッカーの責任: リソース管理、ジョブとタスクのスケジュールと監視。これらのプロセスはすべて単一ノードで実行されるため、このモデルはスケーラブルではありません。
- 可用性の問題 (単一障害点) : Job Tracker は単一障害点です。
- リソースの使用率: Map & Reduce タスク スロットの数が事前に定義されているため、リソースが適切に使用されていません。すべての Mapper ノードがビジー状態の場合、Reducer ノードはアイドル状態になり、Mapper タスクの処理に使用できません。
- Map Reduce フレームワークとの緊密な統合: Hadoop 1.x は Map Reduce ジョブのみを実行できます。Map Reduce ジョブ以外のジョブのサポートはありません。
Hadoop 2.x のYARNアーキテクチャにより、単一のジョブ トラッカーのボトルネックが解消されました。
YARNの基本的な考え方は、リソース管理とジョブのスケジューリング/監視の機能を別々のデーモンに分割することです。アイデアは、グローバルなResourceManager (RM)とアプリケーションごとのApplicationMaster (AM)を持つことです。アプリケーションは、単一のジョブまたはジョブの DAG のいずれかです。
ResourceManagerには、 SchedulerとApplicationsManagerという2 つの主要コンポーネントがあります。
スケジューラは、キャパシティやキューなどのよく知られた制約に従って、実行中のさまざまなアプリケーションにリソースを割り当てる役割を果たします。スケジューラは、アプリケーションのステータスの監視や追跡を行わないという意味で、純粋なスケジューラです。
ApplicationsManagerは、ジョブの送信を受け入れ、アプリケーション固有のアプリケーションを実行するための最初のコンテナーをネゴシエートします。ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure.
アプリケーションごとのApplicationMasterは、スケジューラから適切なリソース コンテナをネゴシエートし、それらのステータスを追跡し、進行状況を監視する責任があります。
YARNの今の利点
- スケーラビリティの問題が解決されました
- 単一障害点はありません。すべてのコンポーネントの可用性が高い
- Map と Reduce スロットを適切に使用することで、リソースの使用率が向上しました。
- マップリデュース以外のジョブも投入可能