フェアスケジューラーは、Apache YARN に組み込まれたスケジューラーです。 YARN で実行されるアプリケーションにリソースを均等に割り当てるために使用されます。
個々のキューで使用されるリソースは、設定された重みに基づいて割り当てられます。
フェアスケジューラの有効化
重要 [リソースキューの有効化] をオンにした後、YARN サービスページの [設定] タブにある、 [サービス設定] の [フェアスケジューラー] タブでデータを設定できなくなります。 既存の設定は、 [クラスターリソース] ページに同期されます。 YARN サービスページの [構成] タブでクラスターリソースを構成する場合、[クラスタリソース] ページで [リソースキューの有効化] をオフにします。
- 表示される [クラスターの概要] ページの左側のナビゲーションウィンドウで、 [クラスターリソース] をクリックします。
- 表示される [クラスターリソース] ページで、[リソースキューの有効化] をオンにします。
- [フェアスケジューラー] を選択します。
- [保存] をクリックします。
フェアスケジューラーの構成
[リソースキューの有効化] をオンにした後、次の手順に沿ってフェアスケジューラーを構成します。
- [クラスターリソース] ページで、右上隅の [キューの設定] をクリックします。
- [キューの設定] タブで、対象のキューを見つけて、[アクション] 列の [編集] をクリックします。
[アクション] 列の [その他] ドロップダウンリストから [子キューの作成] を選択して、子キューを作成します。
[root] はレベル 1 のキューです。 これは、すべての他のキューの親キューであり、YARN のすべてのリソースを管理します。 デフォルトで、root キュー配下ではdefault
キューのみが使用できます。
重要 キュー構成はネストされているため、親キューのパラメーターが子キューのパラメーターより優先されます。 子キューに構成されたリソース使用率が親キューのリソース使用率より高い場合、スケジューラーは親キューのパラメーター設定に基づいて子キューにリソースを割り当てます。
- [キュー名] は必須項目です。 キュー名にピリオド (.) を含めることはできません。
- [重み] は必須項目です。 重みのしきい値に達した場合、スケジューラーはリソースをキューに均等に割り当てます。 重みは、レベル 2、レベル 3、より深いレベルのキューで有効になります。
たとえば、親キューに、重みが 2 の子キューと、重みが 1 の子キューがあるとします。 2 つの子キューの両方に実行中のタスクがあり、リソース割り当て比率が 2:1
に達した場合、リソースは均等に割り当てられます。
- [最大リソース] とは、キューに割り当て可能な vCore の最大数と最大メモリ容量を示します。 このパラメーターの値は、 [最小リソース] の値以上で、YARN サービスが提供可能なリソーススケール未満である必要があります。 最大リソースの値がリソーススケールより大きい場合、リソーススケールがキューに対して有効になります。
YARN サービスが提供できる vCore の数が 16 で、最大リソースの vCore の値が 20 であると想定します。 16 個の vCores がキューに割り当てられます。
- アプリケーションの実行中にキューを指定しない場合、ジョブは default キューに送信されます。
- 子キューの名前を変更後に ResourceManager を再起動しない場合でも、タスクを元のキューに送信できます。 ただし、EMR コンソールにキュー構成は表示されなくなります。
ResourceManager を再起動すると、元のキューは使用できなくなります。
- レベル 2 のキューではないキューを削除後、 [デプロイ] をクリックして変更内容を確認します。 レベル 2 のキューを削除後、右上隅にある [アクション] ドロップダウンリストから [RestartResourceManager] を選択して、変更内容を確認します。
スケジューラータイプの切り替え
[リソースキューを有効化] をオンにした後、スケジューラーの種類を切り替えるには、次の手順を実行します。
- [クラスターリソース] ページで、右上隅の [スケジューラーを選択] をクリックします。
- 必要なスケジューラーを選択します。
- [保存] をクリックします。
- 右上隅から [アクション] ドロップダウンリストから [RestartResourceManager] を選択します。
- 表示される [クラスターアクティビティー] ダイアログボックスで、パラメーターを指定し、[OK] をクリックします。
- 表示される [確認] ダイアログボックスで、[OK] をクリックします。
完了メッセージが表示されたら、スケジューラータイプが切り替わります。
ジョブの送信
[mapreduce.job.queuename] を使用して、ジョブを送信するキューを指定します。 例:
`hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar pi -Dmapreduce.job.queuename=test 2 2`