使用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申请。