---
title: 安平行业应用软件在MRS上的调优实践-官方技术文章-鲲鹏社区
description: 本文档提供应用软件在MRS（MapReduce Service）上的调优实践。
keywords: MRS,安平行业应用,软件在,上的调优实践,官方技术文章,鲲鹏社区,介绍,硬件配置
url: https://www.hikunpeng.com/developer/techArticles/20250911-9?envFlag=1
section: (其他)
---

# 安平行业应用软件在MRS上的调优实践-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20250911-9?envFlag=1
描述: 本文档提供应用软件在MRS（MapReduce Service）上的调优实践。
关键词: MRS,安平行业应用,软件在,上的调优实践,官方技术文章,鲲鹏社区,介绍,硬件配置

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

安平行业应用软件在MRS上的调优实践

安平行业应用软件在MRS上的调优实践

纳管集群主机

发表于 2025/09/11

0

作者 |陈楚昭

# 一、介绍

本文档提供应用软件在MRS（MapReduce Service）上的调优实践。

二、基础软硬件信息

## 1、硬件配置

#### 管理/控制节点硬件配置

| 鲲鹏硬件 | 配置信息 |
| --- | ---|
| CPU型号 | 鲲鹏920 5220处理器 |
| 内存 | 32G*8，内存速率2933MT/s |
| 网络 | 4*25GE |
| 硬盘 | 4 * 1TB SATA HDD2 * 512GB SATA SSD |

#### 数据节点硬件配置

| 鲲鹏硬件 | 配置信息 |
| --- | ---|
| CPU型号 | 鲲鹏920 5220处理器 |
| 内存 | 32G*8，内存速率2933MT/s |
| 网络 | 4*25GE |
| 硬盘 | 12 * 8TB SATA HDD2 * 512GB SATA SSD |

## 2、设备组网

- 管理节点：安装FusionInsight Manager，即MRS集群的管理系统，提供统一的访问入口。FusionInsight Manager对部署在集群中的节点及服务进行集中管理。
- 控制节点：控制监控数据节点执行存储数据、接收数据、进程状态及完成控制节点的公共功能。
- 数据节点：执行管理节点发出的指示，上报任务状态、存储数据，以及执行数据节点的公共功能。

| 节点角色 | IP地址 | 说明 |
| --- | --- | ---|
| 管理节点 | 10.xx.xx.59 | 主节点 |
| 10.xx.xx.61 | 备用节点 |  |
| 控制节点 | 10.xx.xx.59 | - |
| 10.xx.xx.61 | - |  |
| 10.xx.xx.57 | - |  |
| 数据节点 | 10.xx.xx.51 | - |
| 10.xx.xx.53 | - |  |
| 10.xx.xx.55 | - |  |

## 3、软件要求

#### 操作系统

| 操作系统名称 | 版本 |
| --- | ---|
| openEuler | 22.03 SP1 |

#### 应用软件

| 软件名称 | 版本 |
| --- | ---|
| MapReduce Service | 3.2.0 |
| Hive | 3.1.0 |
| HBase | 2.2.3 |
| Elasticsearch | 7.10.2 |

# 三、性能调优

## 1、测试场景

- 两电数据（文本文件）标准化处理性能测试

#### 测试项一：不设置归一化、关联和比对规则，输出类型为hbase/hive平台文件输出

| 预置条件 | 文件大小为20G缓存过期时间内最少增加行数: 500单记录集过期时间: 300s单记录集最大大小: 51200MB单记录集最多记录条数: 10000分区数: 3写入线程数: 5 |
| --- | ---|
| 测试步骤 | 设置标准化处理条件（不设置归一化、关联和比对规则，文件输出）指定目录下预先放置要标准化处理的数据文件启动标准化程序统计标准化处理用时 |

#### 测试项二：不设置归一化、关联和比对规则，输出类型为hbase/hive平台kafka输出

| 预置条件 | 文件大小为20G缓存过期时间内最少增加行数: 500单记录集过期时间: 300s单记录集最大大小: 51200MB单记录集最多记录条数: 10000分区数: 3写入线程数: 5 |
| --- | ---|
| 测试步骤 | 设置标准化处理条件（不设置归一化、关联和比对规则，kafka输出）指定目录下预先放置要标准化处理的数据文件启动标准化程序统计标准化处理用时 |

#### 测试项三：设置归一化、关联和比对规则，输出类型为hbase/hive平台文件输出

| 预置条件 | 文件大小为20G缓存过期时间内最少增加行数: 500单记录集过期时间: 300s单记录集最大大小: 51200MB单记录集最多记录条数: 10000分区数: 3写入线程数: 5 |
| --- | ---|
| 测试步骤 | 设置标准化处理条件（设置归一化、关联和比对规则，文件输出）指定目录下预先放置要标准化处理的数据文件启动标准化程序统计标准化处理用时 |

#### 测试项四：设置归一化、关联和比对规则，输出类型为hbase/hive平台kafka输出

| 预置条件 | 文件大小为20G缓存过期时间内最少增加行数: 500单记录集过期时间: 300s单记录集最大大小: 51200MB单记录集最多记录条数: 10000分区数: 3写入线程数: 5 |
| --- | ---|
| 测试步骤 | 设置标准化处理条件（设置归一化、关联和比对规则，kafka输出）指定目录下预先放置要标准化处理的数据文件启动标准化程序统计标准化处理用时 |

- 分光数据（zip包）标准化处理性能测试

#### 测试项一：不设置归一化、关联和比对规则，输出类型为hbase/hive平台文件输出

| 预置条件 | 文件大小为20G缓存过期时间内最少增加行数: 500单记录集过期时间: 300s单记录集最大大小: 51200MB单记录集最多记录条数: 10000分区数: 3写入线程数: 5 |
| --- | ---|
| 测试步骤 | 设置标准化处理条件（不设置归一化、关联和比对规则，文件输出）指定目录下预先放置要标准化处理的数据文件启动标准化程序统计标准化处理用时 |

#### 测试项二：不设置归一化、关联和比对规则，输出类型为hbase/hive平台kafka输出

| 预置条件 | 文件大小为20G缓存过期时间内最少增加行数: 500单记录集过期时间: 300s单记录集最大大小: 51200MB单记录集最多记录条数: 10000分区数: 3写入线程数: 5 |
| --- | ---|
| 测试步骤 | 设置标准化处理条件（不设置归一化、关联和比对规则，kafka输出）指定目录下预先放置要标准化处理的数据文件启动标准化程序统计标准化处理用时 |

#### 测试项三：设置归一化、关联和比对规则，输出类型为hbase/hive平台文件输出

| 预置条件 | 文件大小为20G缓存过期时间内最少增加行数: 500单记录集过期时间: 300s单记录集最大大小: 51200MB单记录集最多记录条数: 10000分区数: 3写入线程数: 5 |
| --- | ---|
| 测试步骤 | 设置标准化处理条件（设置归一化、关联和比对规则，文件输出）指定目录下预先放置要标准化处理的数据文件启动标准化程序统计标准化处理用时 |

#### 测试项四：设置归一化、关联和比对规则，输出类型为hbase/hive平台kafka输出

| 预置条件 | 文件大小为20G缓存过期时间内最少增加行数: 500单记录集过期时间: 300s单记录集最大大小: 51200MB单记录集最多记录条数: 10000分区数: 3写入线程数: 5 |
| --- | ---|
| 测试步骤 | 设置标准化处理条件（设置归一化、关联和比对规则，kafka输出）指定目录下预先放置要标准化处理的数据文件启动标准化程序统计标准化处理用时 |

## 2、调优实施

- 操作系统调优

| 优化措施 | 实施方法 | 调优目的 |
| --- | --- | ---|
| 禁用透明大页 | echo never > /sys/kernel/mm/transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defrag | 内存大页，防止内存泄漏，减少卡顿。 |
| swap | swapoff -a | Linux的虚拟内存会根据系统负载自动调整，内存页（page）swap到磁盘会影响测试性能。 |
| 磁盘调度策略优化 | echo mq-deadline > /sys/block/sd$i/queue/scheduler | 文件系统在通过驱动读写磁盘时，不会立即将读写请求给驱动，而是延迟执行，这样Linux内核的IO调度器可以将多个读写请求合并为一个请求或者排序（减少机械磁盘的寻址）给驱动，提升性能。 |
| 调整脏页刷新策略 | echo 500 > /proc/sys/vm/dirty_expire_centisecsecho 100 > /proc/sys/vm/dirty_writeback_centisecs | PageCache中需要回写到磁盘的数据为脏数据。在应用程序通知系统保存脏数据时，应用可以选择直接将数据写入磁盘（O_DIRECT），或者先写到PageCache（非O_DIRECT模式）。非O_DIRECT模式，对于缓存在PageCache中的数据的操作，都在内存中进行，减少了对磁盘的操作。 |
| 调整磁盘文件预读参数 | echo 65472 > /sys/block/sd$i/queue/read_ahead_kb | 文件预取的原理，就是根据局部性原理，在读取数据时，会多读一定量的相邻数据缓存到内存。如果预读的数据是后续会使用的数据，那么系统性能会提升。 |
| 网卡中断绑核 | systemctl stop irqbalance.servicesystemctl disable irqbalance.serviceecho $cpunum > /proc/irq/$irq/smp_affinity_list | 相比使用内核的irqbalance使网卡中断在所有核上进行调度，使用手动绑核将中断固定，能有效提高业务网络收发包的能力。 |

- HDFS组件参数调优

| 参数 | 实例 | 默认值 | 调优值 | 描述 |
| --- | --- | --- | --- | ---|
| GC_OPTS | Namenode | -Xms2G -Xmx4G -XX:NewSize=128M -XX:MaxNewSize=256M | -Xms64G -Xmx64G -XX:NewSize=6G -XX:MaxNewSize=6G | Java虚拟机垃圾回收参数。 |
| Datanode | -Xms2G -Xmx4G -XX:NewSize=128M -XX:MaxNewSize=256M | -Xms32G -Xmx32G -XX:NewSize=3G -XX:MaxNewSize=3G | Java虚拟机垃圾回收参数。 |  |
| dfs.data.socket.size | - | 131072(BYTE) | 524288(BYTE) | Socket缓存区大小。 |
| dfs.datanode.max.transfer.threads | - | 8192 | 32768 | DataNode间传输数据的线程的最大数。 |
| dfs.journalnode.edit-cache-size.bytes | - | 104857600(BYTE) | 209715200(BYTE) | JournalNode在内存中缓存的edit logs的大小。 |
| hdfs.hdfs-site.customized.configs | - | null | 增加Namenode自定义参数：dfs.namenode.replication.considerLoad，值为false | - |

- Elasticsearch组件参数调优

| 参数 | 实例 | 默认值 | 调优值 | 描述 |
| --- | --- | --- | --- | ---|
| GC_OPTS | EsNodeX | -Xms1g -Xmx1g | -Xms30g -Xmx30g（最大30即可） | 实例启动时的JVM参数值，主要是存储索引数据，对文档进行增删改查、聚合等操作。 |
| EsMaster | -Xms1g -Xmx1g | -Xms30g -Xmx30g（最大30即可） | 实例启动时的JVM参数值，负责集群的管理，主要是集群相关的操作。 |  |
| EsClient | -Xms1g -Xmx1g | -Xms30g -Xmx30g（最大30即可） | 实例启动时的JVM参数值，只处理路由请求、搜索，及分发索引等操作。 |  |

- HBase组件参数调优

| 参数 | 实例 | 默认值 | 调优值 | 描述 |
| --- | --- | --- | --- | ---|
| GC_OPTS | HMaster | -server -Xms4G -Xmx4G -XX:NewSize=512M -XX:MaxNewSize=512M | -31G，（New size= 4gb ，MaxNewSize=4gb，Rregion超过6000需要改 | Java虚拟机垃圾回收参数。 |
| RegionServer | -server -Xms6G -Xmx6G -XX:NewSize=1024M -XX:MaxNewSize=1024M | -31G，New size= 4gb ，MaxNewSize=4gb | Java虚拟机垃圾回收参数。 |  |
| hbase.regionserver.handler.count | RegionServer | 200 | 1000 | 在RegionServer上启动的RPC侦听器实例数。 |
| hbase.regionserver.metahandler.count | RegionServer | 200 | 600 | RegionServer中处理优先请求的程序实例的数量。 |
| hbase.hregion.memstore.flush.size | RegionServer | 134217728（单位：Byte） | 268435456（单位：Byte） | 若MemStore的大小（单位：Byte）超过指定值，MemStore将被冲洗至磁盘。 |
| hbase.regionserver.hlog.blocksize | RegionServer | 134217728（单位：Byte） | 268435456（单位：Byte） | RegionServer中HLog文件的大小限制。 |
| hbase.client.write.buffer | - | 2097152(单位：Byte） | 5242880（单位：Byte） | HBase客户端程序向HBase集群写入数据的缓存值。 |
| hbase.regionserver.maxlogs | - | 32 | 100 | RegionServer进程运行过程中，仅有一个HLog文件可以被用来提供写数据服务。 |
| hbase.hstore.flusher.count | - | 2 | 10 | flush线程数。 |
| hbase.regionserver.thread.compaction.small | - | 10 | 30 | 小压缩线程数。 |
| hbase.regionserver.hfilecleaner.large.thread.count | - | - | 5 | 大文件清理线程的数量。 |
| hbase.regionserver.hfilecleaner.small.thread.count | - | - | 5 | 小文件清理线程的数量。 |
| hfile.block.cache.size | - | 0.1 | 0.2->0.35 | 最大heap的百分比。 |
| hbase.regionserver.global.memstore.size | - | 0.4 | 0.4->0.3 | 更新被锁定以及强制冲洗发生之前一个RegionServer上支持的所有MemStore的大小。 |
| hbase.wal.provider | - | defaultProvider | multiwal | 指定WAL provider类。 |
| hbase.rpc.protection | - | privacy | authentication | 安全SASL连接保护。 |
| hbase.hfile.hsync | - | TRUE | FALSE | 设置是否启用Hfile耐久性以将数据持久化到磁盘。 |
| hbase.wal.hsync | - | TRUE | FALSE | 设置是否启用WAL文件耐久性以将WAL数据持久化到磁盘。 |

- Hive组件参数调优

| 参数 | 实例 | 默认值 | 调优值 | 描述 |
| --- | --- | --- | --- | ---|
| GC_OPTS | HiveServer | -Xms2G -Xmx4G | -Xms24G -Xmx48G | Java虚拟机垃圾回收参数。 |
| MetaStore | -Xms1G -Xmx2G | -Xms16G -Xmx32G | Java虚拟机垃圾回收参数。 |  |
| maxConnectionsPerPartition | - | 30 | 60 | MetaStore与DBService并行连接的数量，即与数据库的连接在同一时间内并行连接的数量。 |
| partitionCount | - | 2 | 4 | MetaStore使用的分区数量。 |
| .auditlog.filesize | HiveServer/MetaStore | 20M | 40M | 审计日志文件的最大大小。 |
| .auditlog.maxbackupindex | HiveServer/MetaStore | 20 | 40 | 审计日志文件的最大数量。 |
| .log.filesize | HiveServer/MetaStore | 20M | 40M | 日志文件的最大大小。 |
| .log.maxbackupindex | HiveServer/MetaStore | 20M | 40M | 日志文件的最大数量。 |
| hive.exec.reducers.max | - | 999 | 1500 | Hive提交的MR任务中reducer的最大个数。 |
| hive.server2.thrift.min.worker.threads | - | 5 | 50 | HiveServer内部线程池，初始化时启动的线程数量。 |
| hive.exec.compress.output | - | FALSE | TRUE | 是否对查询的最终输出进行压缩。 |
| hive.zookeeper.session.timeout | - | 180000 | 300000 | HiveServer与ZooKeeper建立连接时的超时时间。 |
| hive.execution.engine | - | mr | tez | 选择执行引擎，默认添加Tez引擎。 |

3、调优后性能数据

调优后各性能数据达业务要求，具体如下：

| 输入类型 | 设置条件 | 耗时 | 性能结果 |
| --- | --- | --- | ---|
| 两电数据+文本文件 | 不设置归一化、关联和比对规则，输出类型为hbase/hive平台文件输出 | 3m24s | 100.4M/S |
| 两电数据+文本文件 | 不设置归一化、关联和比对规则，输出类型为hbase/hive平台kafka输出 | 3m20s | 102.4M/S |
| 两电数据+文本文件 | 设置归一化、关联和比对规则，输出类型为hbase/hive平台文件输出 | 26m11s | 13.0M/S |
| 两电数据+文本文件 | 设置归一化、关联和比对规则，输出类型为hbase/hive平台kafka输出 | 31m20s | 10.9M/S |
| 分光数据+zip文件 | 不设置归一化、关联和比对规则，输出类型为hbase/hive平台文件输出 | 5m12s | 65.6M/S |
| 分光数据+zip文件 | 不设置归一化、关联和比对规则，输出类型为hbase/hive平台kafka输出 | 5m9s | 66.3M/S |
| 分光数据+zip文件 | 设置归一化、关联和比对规则，输出类型为hbase/hive平台文件输出 | 1h6m52s | 5.1M/S |
| 分光数据+zip文件 | 设置归一化、关联和比对规则，输出类型为hbase/hive平台kafka输出 | 1h8m52s | 5.5M/S |

本页内容
