更新时间:2024-12-10 GMT+08:00

多CPU内核下的MapReduce调优配置

操作场景

当CPU内核数很多时,如CPU内核为磁盘数的3倍时的调优配置。

操作步骤

以下参数有如下两个配置入口:

  • 服务器端配置

    进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。

  • 客户端配置
    直接在客户端中修改相应的配置文件。
    • HDFS客户端配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/hdfs-site.xml。
    • Yarn客户端配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/yarn-site.xml。
    • MapReduce客户端配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。
表1 多CPU内核设置

配置

参数

配置描述

节点容器槽位数

yarn.nodemanager.resource.memory-mb

  • 参数解释:节点上YARN可使用的物理内存总量。单位:M。
  • 默认值:

    MRS 3.x之前版本:

    8192

    MRS 3.x及之后版本:

    16384

  • 参数入口:

    MRS 3.x之前版本:需要在MRS控制台上进行配置。

    MRS 3.x及之后版本:需要在FusionInsight Manager系统进行配置。

  • 参数配置组合决定了每节点任务(map、reduce)的并发数。
  • 如果所有的任务(map/reduce)需要读写数据至磁盘,多个进程将会同时访问一个磁盘。这将会导致磁盘的IO性能非常低下。为了改善磁盘的性能,请确保客户端并发访问磁盘的数不大于3。
  • 最大并发的container数量应该为[2.5 * Hadoop中磁盘配置数 ]。

mapreduce.map.memory.mb

  • 参数解释:map任务的内存限制。单位:MB。
  • 默认值:4096
  • 参数入口:需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。

mapreduce.reduce.memory.mb

  • 参数解释:Reduce任务的内存限制。单位:MB。
  • 默认值:4096
  • 参数入口:需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。

Map输出与压缩

mapreduce.map.output.compress

  • 参数解释:指定了Map任务输出结果可以在网络传输前被压缩。这是一个per-job的配置。
  • 默认值:true
  • 参数入口:需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。
  • Map任务所产生的输出可以在写入磁盘之前被压缩,这样可以节约磁盘空间并得到更快的写盘速度,同时可以减少至Reducer的数据传输量。需要在客户端进行配置。
  • 在这种情况下,磁盘的IO是主要瓶颈。所以可以选择一种压缩率非常高的压缩算法。
  • 编解码器可配置为Snappy,Benchmark测试结果显示Snappy是非常平衡以及高效的编码器。

mapreduce.map.output.compress.codec

  • 参数解释:指定用于压缩的编解码器。
  • 默认值:org.apache.hadoop.io.compress.Lz4Codec
  • 参数入口:需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。

Spills

mapreduce.map.sort.spill.percent

  • 参数解释:序列化缓冲区中的软限制。一旦达到该限制,线程将在后台开始将内容溢出到磁盘。
  • 默认值:0.8
  • 参数入口:需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/mapred-site.xml。

磁盘IO是主要瓶颈,合理配置“mapreduce.task.io.sort.mb”可以使溢出至磁盘的内容最小化。

数据包大小

dfs.client-write-packet-size

  • 参数解释:配置项可以指定该数据包的大小。可以通过每个job进行指定。
  • 默认值:262144
  • 参数入口:需要在客户端进行配置,配置文件路径:客户端安装目录/HDFS/hadoop/etc/hadoop/hdfs-site.xml。
  • 当HDFS客户端写数据至数据节点时,数据会被累积,直到形成一个包。这个数据包会通过网络传输。
  • 数据节点从HDFS客户端接收数据包,然后将数据包里的数据单线程写入磁盘。当磁盘处于并发写入状态时,增加数据包的大小可以减少磁盘寻道时间,从而提升IO性能。
  • dfs.client-write-packet-size = 262144