大数据组件调优
Yarn组件配置
组件 |
参数名 |
推荐值 |
修改原因 |
---|---|---|---|
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 |
|
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组件配置
组件 |
参数名 |
推荐值 |
修改原因 |
---|---|---|---|
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 |
|
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.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时间分布而定)。 |