blog

Hadoop YARN 設定パラメータ・プロファイリング (5)-Capacity Scheduler 関連パラメータ

Capacity SchedulerはYARNのデフォルトのリソース・スケジューラです。\n\nCapacity Schedulerの設定ファイルでは、キューqueueXのパラメータYの設定名は次のよ...

Jan 31, 2014 · 6 min. read
シェア

Capacity SchedulerはYARNのデフォルトのリソース・スケジューラです。

キャパシティ・スケジューラの設定ファイルでは、キューqueueXのパラメータYをyarn.scheduler.capacity.queueX.Yという名前で設定し、簡単のためにYと表記しています:

1. 資源配分に関するパラメータ

capacity: キューの資源容量。 システムが非常に混雑している場合,各キューの資源容量が満たされていることが保証されるべきで,各キューのアプリケーション数が少ない場合には,残りの資源を他のキューと共有することができます。全キューの資源容量の合計は 100 以下であるべきであることに注意してください。

maximum-capacity: キューの資源使用量の上限。資源共有が行われているため、キューが使用する資源量はその容量を超える可能性があり、このパラメータによって使用する資源量の上限を制限することができます。

m minimum-user-limit-percent: ユーザ単位の***リソース保証。ある時点でキュー内の各ユーザが利用可能なリソース量には制限があります。複数のユーザのアプリケーションがキュー内で同時に動作している場合、 各ユーザが使用する資源量は、動作しているアプリケーションの数に依存する 最小値と、minimum-user-limit-percentによって決定される *** 値との間で変動します。例えば、minimum-user-limit-percent を25 と仮定すると、各ユーザが利用可能なリソースの量は、2 人のユーザがアプリケーションをキューに投入した場合は 50%、3 人のユーザが投入した場合は 33%、4 人以上のユーザが投入した場合は 25% を超えることはできません。各ユーザが利用可能なリソースの25%を超えることはできません。

user-limit-factor: 各ユーザが使用できるリソースの最大量。例えば、この値が 30 である場合、各ユーザが使用するリソースの量は、任意の時点で キューの容量の 30% を超えることはできません。

2. 申請数の制限に関するパラメータ

maximum-applications: クラスタやキューで同時に待機・実行されるアプリケーションの最大数、これは強力な制限であり、一度クラスタ内のアプリケーション数がこの制限を超えると、それ以降のアプリケーションは拒否されます。capacity.maximum-applicationsで設定することができ、個々のキューはパラメータyarn.scheduler.capacity.<queue-path>.maximum-applicationsで適切な値に設定することができます。

maximum-am-resource-percent:アプリケーションの実行に使用できるクラスタ内のリソースの割合の上限 ApplicationMasterでは通常、アクティブなアプリケーションの数を制限するためにこのパラメータを使用します。このパラメータは浮動小数点型で、デフォルトは0.1(10%)です。ApplicationMasterのリソース割合の上限は、パラメータ yarn.scheduler.capacity.maximum-am-resource-percent で全てのキューに対して、パラメータ yarn.scheduler.capacity.<queue-パス>を指定します。 maximum-am-resource-percentを使用することで、適切な値を設定することができます。

3. キューアクセスおよび権限制御パラメータ

state:キューの状態は、STOPPED または RUNNING のいずれかです。キューが STOPPED 状態の場合、ユーザはそのキューやそのサブキューにアプリケーションを投入することができません。同様に、ROOT キューが STOPPED 状態の場合、ユーザはクラスタにアプリケーションを投入することができませんが、実行中のアプリケーションは正常に実行することができます!を終了させることで、キューを優雅に終了させることができます。

acl_submit_applications: 与えられたキューに対して、どの Linux ユーザ/ユーザグループが アプリケーションを提出できるかを指定します。この属性は継承されることに注意してください。 すなわち、あるユーザが与えられたキューにアプリケーションを投入できる場合、 そのユーザは、そのキューのすべてのサブキューにアプリケーションを投入することが できます。この属性を設定する場合、ユーザやグループは "," で区切り、ユーザとグループは空白で区切ります。

acl_administer_queue: キューに管理者を割り当てます。この管理者は、キュー内のすべてのアプリケーションを制御することができます。繰り返しますが、この属性は継承されます。したがって、あるユーザがあるキューにアプリケーションを投入することができれば、そのユーザはそのキューのすべてのサブキューにアプリケーションを投入することができます。

設定ファイルの例を以下に示します:

<configuration> 
  <property> 
    <name>yarn.scheduler.capacity.maximum-applications</name> 
    <value>10000</value> 
    <description>同時に待機・実行可能なアプリケーションの最大数</description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name> 
    <value>0.1</value> 
    <description>集群中可用于运行application master的资源比例上限,这通常用于限制并发运行的应用程序数目。</description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.root.queues</name> 
    <value>default</value> 
    <description>rootキューのすべてのサブキュー、この例では1つだけである。</description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.root.default.capacity</name> 
    <value>100</value> 
    <description>defaultキューの資源容量</description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.root.default.user-limit-factor</name> 
    <value>1</value> 
    <description> 
     各ユーザーが利用可能なリソースの制限 
    </description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.root.default.maximum-capacity</name> 
    <value>100</value> 
    <description> 
      Defaultキューが利用可能なリソースの上限. 
    </description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.root.default.state</name> 
    <value>RUNNING</value> 
    <description> 
     Defaultキューの状態。RUNNING または STOPPED のいずれか。. 
    </description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.root.default.acl_submit_applications</name> 
    <value>*</value> 
    <description> 
      デフォルトのキューにアプリケーションを投入できるユーザを制限する。. 
    </description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.root.default.acl_administer_queue</name> 
    <value>*</value> 
    <description> 
どのユーザがデフォルトのキューでアプリケーションを管理できるかを制限する。*”任意のユーザを示す 
</description> 
  </property> 
  
  <property> 
    <name>yarn.scheduler.capacity.node-locality-delay</name> 
    <value>-1</value> 
    <description>调度器尝试调度一个rack-local container,最多跳过的调度机会,通常而言,该值被设置成集群中机架数目,默认情况下为-1,表示不启用该功能。 
    </description> 
  </property> 
</configuration> 
Read next