blog

Hadoopソースコード解析:Yarnスケジューラー(スケジューラー)

1.FIFO Hadoopの初期のバージョンでは、ユーザージョブのスケジューリングに非常にシンプルなアプローチを使用していました。通常、各ジョブはクラスタ全体を使用するため、ジョブは実行する順番が来る...

Apr 1, 2020 · 3 min. read
シェア

スケジューラ:どの電卓をいつ実行するかをスケジューリングします。

FIFO

Hadoopの初期のバージョンでは、ユーザジョブのスケジューリングに非常にシンプルなアプローチを使用していました。ジョブは、FIFOスケジューリングアルゴリズムを使用して、投入された順に実行されました。通常、各ジョブはクラスタ全体を使用するため、ジョブは実行の順番が来るまで待たなければなりません。共有クラスタは複数のユーザーに対して多くのリソースを提供する可能性が高いものの、問題はユーザー間でリソースをいかに公平に分配するかであり、そのためにはより優れたスケジューラが必要です。プロダクションジョブは、即席のクエリを実行するユーザが妥当な時間で結果を返せるように、タイムリーに完了する必要があります。

その後、mapred.job.priorityプロパティまたはJobClinetのsetJobPriority()メソッドを設定して、ジョブの優先度を設定する機能を追加します。ジョブスケジューラが次に実行するジョブを選択するとき、最も優先度の高いものを選択します。しかし、FIFOスケジューリングアルゴリズムでは、優先順位は先取りをサポートしないため、優先順位の高いジョブは、優先順位の低いジョブによってブロックされます。

デメリット例:1つ目の計算プログラムの実行時間が60分、2つ目の計算プログラムの実行時間が3分の場合、FIFOルールにより、2つ目の計算プログラムは1つ目の計算が成功するのを待ってから実行を開始する必要があり、この場合、2つ目の計算プログラムは63分待つ必要があります。

FAIR

Fair Scheduleの目的は、各ユーザがクラスタのキャパシティを公平に共有できるようにすることです。ジョブが1つしか実行されていない場合、そのジョブはクラスタのすべてのリソースを取得します。より多くのジョブが投入されるにつれて、空きスロットは「すべてのユーザにクラスタを公平に共有させる」方法で割り当てられます。あるユーザの短いジョブは、他のユーザの長いジョブが実行中であっても、妥当な時間で完了します。

ジョブはジョブプールに配置され、デフォルトでは各ユーザが自分のジョブプールを持ちます。他のユーザよりも多くのジョブを投入したユーザが、結果として後者よりも多くのクラスタリソースを得ることはありません。ジョブプールの最小容量は、mapとreduceのタスクスロット数を使用して決定でき、各プールの重みも設定できます。

Fair Scheduleはpreemptionをサポートしており、プールが特定の期間リソースを公平に取得できていない場合、リソース不足で実行されているプールにタスク・スロットを譲るために、プール内のリソースを過剰に取得しているタスクの実行を中止します。

デメリットの例:最初の計算プログラムが2時間実行され、残りの10分は正常に計算できたが、突然複数のタスクがクラスタリソースを均等に共有するようになった場合、最初の計算プログラムは正常に計算するために時間を延長する必要があります。

CAPACITY

マルチユーザスケジューリングの場合、Capacity Scheduleは少し異なるアプローチをとります。クラスタは、それぞれが単一の割り当て容量を持つ、いくつかのキューから構成されます。これはFair Scheduleと似ていますが、各キュー内でジョブはFIFOアプローチに基づいてスケジューリングされます。基本的に、Capacity Scheduleでは、ユーザーや組織ごとにFIFO Schedulingを使用して、個別のMapReduceクラスタをシミュレートすることができます。対照的に、Fair Scheduleは、優先順位付けされたジョブのプール内でのFIFOジョブスケジューリングを実際にサポートします。

需要に応じてリソースの使用を設定することができ、内部で複数のキューを維持することができ、複数のキュー間でリソースを割り当てることができ、各キューでFIFOを実行します。クラスタは、計算プログラムが必要とする数のリソースを割り当てます。 Hadoop 2.x では、デフォルトの

Read next

Android開発|バイト舐めドキュメンタリー

私は211卒、985の粗末なマスター1、このバイト初期バッチ6.24にレジュメを兄プッシュに、その後レジュメがハングアップし、その後レジュメを修正し、その後長い時間待っていました。片方1、Javaの一般的な、反射2、プロセス間通信の方法は、アンドロイドの方法は何ですか、なぜですか?

Apr 1, 2020 · 2 min read