Hive企业级调优-计算资源配置

494 阅读2分钟

计算环境为Hive on MR。计算资源的调整主要包括Yarn和MR。

Yarn资源配置

需要调整的Yarn参数均与CPU、内存等资源有关,核心配置参数如下:

  1. yarn.nodemanager.resource.memory-mb

该参数的含义是,一个NodeManager节点分配给Container使用的内存。该参数的配置,取决于NodeManager所在节点的总内存容量和该节点运行的其他服务的数量。 考虑上述因素,此处可将该参数设置为64G,如下:

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

该参数的含义是,一个NodeManager节点分配给Container使用的CPU核数。该参数的配置,同样取决于NodeManager所在节点的总CPU核数和该节点运行的其他服务。 考虑上述因素,此处可将该参数设置为16。

<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>16</value>
</property>
  1. yarn.scheduler.maximum-allocation-mb

该参数的含义是,单个Container能够使用的最大内存。推荐配置如下:

<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>16384</value>
</property>
  1. yarn.scheduler.minimum-allocation-mb

该参数的含义是,单个Container能够使用的最小内存,推荐配置如下:

<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
</property>

修改$HADOOP_HOME/etc/hadoop/yarn-site.xml文件

<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>65536</value>
</property>
<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>16</value>
</property>
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>16384</value>
</property>
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>512</value>
</property>

MapReduce资源配置

MapReduce资源配置主要包括Map Task的内存和CPU核数,以及Reduce Task的内存和CPU核数。核心配置参数如下:

  1. mapreduce.map.memory.mb

该参数的含义是,单个Map Task申请的container容器内存大小,其默认值为1024。该值不能超出yarn.scheduler.maximum-allocation-mb和yarn.scheduler.minimum-allocation-mb规定的范围。 该参数需要根据不同的计算任务单独进行配置,在hive中,可直接使用如下方式为每个SQL语句单独进行配置:

set  mapreduce.map.memory.mb=2048;
  1. mapreduce.map.cpu.vcores

该参数的含义是,单个Map Task申请的container容器cpu核数,其默认值为1。该值一般无需调整。

  1. mapreduce.reduce.memory.mb

该参数的含义是,单个Reduce Task申请的container容器内存大小,其默认值为1024。该值同样不能超出yarn.scheduler.maximum-allocation-mb和yarn.scheduler.minimum-allocation-mb规定的范围。 该参数需要根据不同的计算任务单独进行配置,在hive中,可直接使用如下方式为每个SQL语句单独进行配置:

set  mapreduce.reduce.memory.mb=2048;
  1. mapreduce.reduce.cpu.vcores

该参数的含义是,单个Reduce Task申请的container容器cpu核数,其默认值为1。该值一般无需调整。