使用YARN

如果OushuDB和YARN配合使用,OushuDB可以从YARN申请资源,并把申请到的资源通过资源管理队列重新在查询之间分配。在不使用资源的时候会把资源动态归还给YARN。

你可以在hawq-site.xml中修改如下配置使之生效。

<property>
      <name>hawq_global_rm_type</name>
      <value>yarn</value>
</property>

hawq_global_rm_type默认值为none,指的是standalone模式。

配置为YARN模式后,你需要同时配置hawq-site.xml中的下面参数:

<property>
      <name>hawq_rm_yarn_address</name>
      <value>localhost:8032</value>
</property>
<property>
      <name>hawq_rm_yarn_scheduler_address</name>
      <value>localhost:8030</value>
</property>
<property>
      <name>hawq_rm_yarn_queue_name</name>
      <value>hawqque</value></property>
<property>
      <name>hawq_rm_yarn_app_name</name>
      <value>hawq</value>
</property>

如果你配置了YARN HA,你必须在$GPHOME/etc/yarn-client.xml中配置如下属性:

  • yarn.resourcemanager.ha
  • yarn.resourcemanager.scheduler.ha

例如:

<property>
   <name>yarn.resourcemanager.ha</name>
   <value>{0}:8032,{1}:8032</value>
</property>

<property>
   <name>yarn.resourcemanager.scheduler.ha</name>
   <value>{0}:8030,{1}:8030</value>
</property>

配置HA后,hawq_rm_yarn_address和hawq_rm_yarn_scheduler_address不再被使用。

当使用OushuDB YARN集成时,OushuDB只支持YARN CapacityScheduler。下面是YARN的一个典型配置:

# yarn-site.xml

<property>
   <name>yarn.resourcemanager.scheduler.class</name>
 <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>4GB</value>
</property>

<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>1</value>
</property>

yarn-site.xml配置了CapacityScheduler,并且配置了一个YARN container的内存和CPU大小。我们建议YARN container的 大小使用1GB/core,2GB/core或者4GB/core。这样的话可以减少碎片的出现。

# capacity-scheduler.xml

<property>
   <name>yarn.scheduler.capacity.root.queues</name>
   <value>mrque1,mrque2,hawqque</value>
</property>

<property>
   <name>yarn.scheduler.capacity.hawqque.maximum-applications</name>
   <value>1</value>
</property>

<property>
  <name>yarn.scheduler.capacity.hawqque.capacity</name>
  <value>20</value>
</property>

<property>
  <name>yarn.scheduler.capacity.hawqque.maximum-capacity</name>
  <value>80</value>
</property>

<property>
  <name>yarn.scheduler.capacity.hawqque.user-limit-factor</name>
  <value>2</value>
</property>

<property>
  <name>yarn.scheduler.capacity.mrque1.capacity</name>
  <value>30</value>
</property>

<property>
  <name>yarn.scheduler.capacity.mrque1.maximum-capacity</name>
  <value>50</value>
</property>

<property>
  <name>yarn.scheduler.capacity.mrque2.capacity</name>
  <value>50</value>
</property>

<property>
  <name>yarn.scheduler.capacity.mrque2.maximum-capacity</name>
  <value>50</value>
</property>

上面的例子中配置了3个YARN资源管理队列:mrque1,mrque2,hawqque。

在YARN模式下,OushuDB本身的资源管理队列的用法不变。用户依然可以安装前面几节的方法使用OushuDB资源队列。变得是OushuDB得到资源的方式。在Standalone模式下,OushuDB假设拥有整个集群资源,而在YARN模式下,OushuDB分配的资源需要从YARN申请。