Yet Another Resource Negotiator (YARN)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 20:35 UTC 版)
「Apache Hadoop」の記事における「Yet Another Resource Negotiator (YARN)」の解説
Yet Another Resource Negotiator (YARN)は、Hadoopクラスタのリソース管理、ジョブスケジューリングを担当する。Hadoop 1系まで、Hadoopを構成するモジュールはHDFSとMapReduceの2つであったが、以下の課題を達成するためにYARNが開発され、Hadoop 2.2から利用可能である。 クラスタ規模の拡大: Hadoop 1系までのMapReduceエンジンにおけるマスタ(JobTracker)が、クラスタのリソース管理、クラスタ内で実行されるMapReduceジョブのスケジューリング、また、MapReduceジョブ自体のスケジューリング(各タスクに対する入力データの割り当てや進捗管理)の3つを担当する必要があったため、JobTrackerの負荷が大きい。そのため、Hadoopクラスタの台数は1000台程度が限界であった。 リソース管理の効率化: Hadoop 1系までのMapReduceエンジンにおけるスレーブ(TaskTracker)ではMapタスク用、Reduceタスク用にそれぞれスロットが用意されており、そこにMapReduceの各タスクが割り当てられる。ここで、Mapタスク用のスロットに空きがない場合は、Reduceタスク用のスロットに空きがあったとしてもMapタスクをこれ以上割り当てることができず、TaskTrackerのリソース使用率が低下する問題があった。 MapReduce以外の分散処理の実行: Hadoopで分散処理するためには、必ずMapReduceの仕組みに当てはめる必要があった。MapReduceが2回以上連続するような処理を実行する場合、前段のMapReduceジョブの処理結果をHDFSに書き込み、それを後続のMapReduceで読み込む、という流れになるが、ここでHDFSに中間データを書き込むため、処理が非効率である。多段のMapReduceとなるような処理を高速化するために、MapReduceフレームワークとは異なる分散処理が必要であった。 YARNは、Hadoop 1系までのMapReduceからクラスタのリソース管理、ジョブスケジューリングを分離したものである。YARNもHDFSと同様に、マスタースレーブ型の構成で、マスターの役割(リソース管理、ジョブスケジューリング)を担当するのがResourceManager、スレーブの役割(割り当てられた処理の実行)を担当するのがNodeManagerである。MapReduceを含む各アプリケーション用にそれぞれ専用のApplicationMasterが実行され、アプリケーション自体のスケジューリングはApplicationMasterが担当する。NodeManagerはMapReduce用に特化したスロットではなく、より汎用化したコンテナ単位でリソースを割り当てる。ApplicationMasterもそのコンテナ上で動作する。また、YARN上ではMapReduce以外にも、Apache Spark(英語版)、Apache Storm(英語版)、Apache Tez などの様々な分散処理フレームワークが動作する。
※この「Yet Another Resource Negotiator (YARN)」の解説は、「Apache Hadoop」の解説の一部です。
「Yet Another Resource Negotiator (YARN)」を含む「Apache Hadoop」の記事については、「Apache Hadoop」の概要を参照ください。
- Yet Another Resource Negotiatorのページへのリンク