---
title: 大数据组件调优
description: "配置文件默认目录是“$HADOOP_HOME/etc/hadoop”，$HADOOP_HOME是Hadoop组件部署路径。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdsml_05_0009.html
sourcePath: /source/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdsml_05_0009.html
indexId: ffb9a3f96c3200209b4ac42b740880f282aefd1c9b56963d35996eeaeeb63f0b83
---
# 大数据组件调优

#### Yarn组件配置

配置文件默认目录是“$HADOOP_HOME/etc/hadoop”，$HADOOP_HOME是Hadoop组件部署路径。

| 组件 | 参数名 | 推荐值 | 修改原因 |
| --- | --- | --- | --- |
| Yarn \->NodeManager Yarn \->ResourceManager | GC\_OPTS | \-Xms64G \-Xmx64G \-XX:MetaspaceSize=128M \-XX:MaxMetaspaceSize=128M \-XX:+UseG1GC \-XX:MaxGCPauseMillis=200 \-XX:InitiatingHeapOccupancyPercent=60 \-XX:+PrintFlagsFinal \-XX:+PrintReferenceGC \-XX:+PrintAdaptiveSizePolicy \-XX:ConcGCThreads=20 \-XX:ParallelGCThreads=48 \-XX:InitiatingHeapOccupancyPercent=65 \-XX:G1HeapRegionSize=32M \-XX:G1ReservePercent=15 | 修改GC引擎为G1GC，从某种层面上来说更适合多核CPU场景。 修改JVM内存大小，保证内存水平较高，减少GC的频率。 |
| Yarn \->NodeManager | yarn.nodemanager.resource.cpu\-vcores | 与实际数据节点物理核相等 | 可分配给Container的CPU核数。 |
| Yarn \->NodeManager | yarn.nodemanager.resource.memory\-mb | 与实际数据节点物理内存总量相等 | 可分配给Container的内存。 |
| Yarn \->NodeManager | yarn.nodemanager.numa\-awareness.enabled | true | NodeManager启动Container时的Numa感知。 |
| Yarn \->NodeManager | yarn.nodemanager.numa\-awareness.read\-topology | true | NodeManager的NUMA拓扑自动感知。 |


#### HDFS组件配置

配置文件默认目录是“$HADOOP_HOME/etc/hadoop”，$HADOOP_HOME是Hadoop组件部署路径。

| 组件 | 参数名 | 推荐值 | 修改原因 |
| --- | --- | --- | --- |
| HDFS \->NameNode | GC\_OPTS | \-Xms64G \-Xmx64G \-XX:MetaspaceSize=128M \-XX:MaxMetaspaceSize=128M \-XX:+UseG1GC \-XX:MaxGCPauseMillis=200 \-XX:InitiatingHeapOccupancyPercent=60 \-XX:+PrintFlagsFinal \-XX:+PrintReferenceGC \-XX:+PrintAdaptiveSizePolicy \-XX:ConcGCThreads=20 \-XX:ParallelGCThreads=48 \-XX:InitiatingHeapOccupancyPercent=65 \-XX:G1HeapRegionSize=32M \-XX:G1ReservePercent=15 | 修改GC引擎为G1GC，从某种层面上来说更适合多核CPU场景。 修改JVM内存大小，保证内存水平较高，减少GC的频率。 |
| HDFS \->DataNode | dfs.datanode.handler.count | 512 | DataNode服务线程数，可适量增加。 |
| HDFS \->NameNode | dfs.namenode.service.handler.count | 128 | NameNode RPC服务端侦听DataNode和其他请求的线程数，可适量增加。 |
| HDFS \->NameNode | dfs.namenode.handler.count | 512 | NameNode RPC服务端侦听客户端请求的线程数，可适量增加。 |


#### Spark客户端配置

配置文件默认目录是“$SPARK_HOME/conf”，$SPARK_HOME是Spark组件部署路径。

| 参数名 | 推荐值 | 修改原因 |
| --- | --- | --- |
| Spark.io.compression.codec | Snappy | RDD、Shuffle输出等内部数据的编码解码器，Snappy在速度上较快且内存/CPU占用小。 |
| Spark.serializer | KryoSerializer | KryoSerializer比JavaSerializer效率更高。 |
| Spark.shuffle.service.enabled | true | 开启可提高Shuffle性能，长期存在于NodeManager中的辅助服务。 |
| Spark.dynamicAllocation.enabled | true | 动态资源分配。 |
| Spark.scheduler.mode | FAIR | 多用户推荐用FAIR。 |
| Spark.speculation | true | 使用推测执行机制，较慢的Task会被重启，会带来额外的CPU开销（该参数可以关闭也可以打开，视Task时间分布而定）。 |
