Hadoop性能调优建议

一、服务器配置

  1. BIOS配置: 关闭smmu/关闭cpu预取/performance策略

  2. 硬盘优化 raid0 打卡cache /jbod scheduler/sector_size/read_ahead_kb

  3. 网卡优化 rx_buff/ring_buffer/lro/中断绑核/驱动升级

  4. 内存插法:要用均衡插法,内存配对插。

  5. 占用通道:先把每个通道都插满,再去插对应通道。(内存通道分布请查看机箱背板示意图)

  6. Rank数:内存条硬件参数,1R和2R的区别,得用2R的

  7. 频率:内存条主频,要选择主频高的。

  8. Scheduler策略:ssd硬盘得用noop策略;机械硬盘建议deadline策略

  9. 驱动升级:用最新版本的网卡驱动程序

二、操作系统调优

1、关闭selinux:

为了减少selinux的性能损耗,关闭selinux。vim /etc/sysconfig/selinux命令,打开selinux文件。将"SELINUX=enforcing" 改为 "SELINUX=disabled"。保存文件,重启服务器。

2、配置扩展文件描述符:

需要配置最大打开文件数为102400,否则在测试过程中可能会导致软件最大打开文件数被限制在1024,影响服务器性能。在"/etc/security/limits.conf"文件中写入以下配置。保存文件并重启。

*表示所有用户;hard表示严格的设定,必定不能超过这个设定的数值;soft表示警告的设定,可以超过这个设定值,但是若超过则有警告信息。

3、关闭不用的系统服务

Cpus等

4、配置网卡中断:(绑定的核专门用于处理网卡中断)

关闭irqbalance,重启服务器生效

systemctl stop irqbalance.service

systemctl disable irqbalance.service

步骤1:查询网卡中断默认在哪个numa上

cat /sys/class/net/$eth1 /device/numa_node

步骤2:查询中断号

cat /proc/interrupts | grep eth1 \| awk -F ':' '{print 1}'

步骤3:根据中断号,将每个中断各绑定在一个核上。

echo cpunum \> /proc/irq/irq/smp_affinity_list

步骤4:查看是否绑定成功

cat /proc/irq/$irq/smp_affinity_list

5、关闭透明大页

查看配置:

cat /sys/kernel/mm/transparent_hugepage/enable

若显示不为nener则修改配置:

echo never > /sys/kernel/mm/transparent_hugepage/enable

三、Hadoop参数调优

1、Yarn组件在3.1.0版本合入的新特性支持,支持Yarn组件在启动Container时使能numa 感知功能,原理是读取系统物理节点上每个Numa节点的CPU核、内存容量,使用 Numactl命令指定启动container的CPU范围和mem bind范围,减少跨片访问.

Yarn-default.xml 里的

yarn.nodemanager.numa-awareness.enabled 默认值为false改成ture

yarn.nodemanager.numa-awareness.read-topology 默认值为false改成ture

2、单台服务器可启动容器数量设置:

Mapred-site.xml

根据内存计算:NUM_container(mem)=容器内存/container内存

Mapreduc.map.memory.mb

Mapreduce.reduce.memory.mb

3、根据CPU计算:

NUM_container(vcore)=容器vcore/container vcore

mapreduce.map.cpu.vcores

Mapreduce.reduce.cpu.vcores

默认的DefaultResourceCalculator只考虑内存资源,并不采用vcore相关设置。 采用DominantResourceCalculator可以精确控制设置vcore资

在Capacity-scheduler.xml

yarn.scheduler.capacity.resource-calculator 默认值为DefaultResourceCalculator 改为 DominantResourceCalculator

4、Yarn 资源设置:资源的多少会决定任务执行的性能,而不决定任务运行的成败

Yarn-default.xml

yarn.nodemanager.resource.memory-mb 默认值为-1 改为 容器内存,一般设置物理内存75%左右

yarn.scheduler.minimum-allocation-mb 默认值为1024MB 改为 最小容器内存;最大容器数量(单节点)=容器内存/最小容器内

mapred-default.xml

mapreduce.map.java.opts JVM最大内存,一般设置为container内存的0.75 ~ 0.8

mapreduce.reduce.java.opts JVM最大内存,一般设置为container内存的0.75 ~ 0.8

5、HDFS的Handler数量由dfs.namenode.handler.count、dfs.namenode.service.handler.count和dfs.datanode.handler.count控制。4节点规模不需要配置的太大。

dfs.namenode.handler.count Namenode 的RPC服务的用于监听处理来自客户端请求的线程数

Dfs.namenode.service.handler.count Namenode的RPC服务端用于监听来自datanode和所有非客户端节点请求的线程数

Dfs.datanode.handler.count Datanode同时可以处理来自客户端的请求线程数,当集群规模比较大或者同时跑的任务比较多,可以增加此值

6、减小副本数降低可靠性的方式提升写入的性能。减轻磁盘IO压力和网络压力。

增大客户端任务写入数据时数据包大小。dfs.client-write-packet-size设置过小,导致发送数据包的效率较低,写HDFS数据较慢,适当扩大该参数可以提升写HDFS时的效率(设置会65536的整数倍,推荐131072)

Dfs.replication 默认3副本,但可以修改客户端的副本数设置

Dfs.client-write-packet-size 客户端任务写入数据时数据包大小

6、Map buffer大小:

mapreduce.task.io.sort.mb 一般设置为容器内存的25%,加大可以减少map中间结果spill到硬盘次数。

mapreduce.map.sort.spill.percent 默认0.8 , io sort buffer 达到80%时开始spill到硬盘。

mapreduce.reduce.shuffle.parallelcopies 默认 5或者10 , 可加大

7、reduce merge 内存中merge

每个reduce task把map 结果copy过去时都要对从各个map 端来的数据做merge(合并)动作, reduce端的内存没有那么大的时候, 只能把拉过来的数据先保存到本地磁盘中然后才做merge, 如果reduce端
的内存可以设置的很大, 完全就可以做memtomem的merge动作,
mapreduce.reduce.merge.memtomem.enabled=true

当map输出文件达到mapreduce.reduce.merge.memtomem.threshold时,触发合并

8、Heartbeat

yarn.nodemanager.heartbeat.interval-ms 1000 (ms) 设置成100

yarn.resourcemanager.nodemanagers.heartbeat-interval-ms

9、读写文件的buffer设置

io.file.buffer.size

这个属性只要是读写文件就都得使用. 默认4K (4K~64K,太大了可能会变差)

相关推荐
大树8831 分钟前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠35 分钟前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush41 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 小时前
Linux 11 动态监控指令top
linux
Inhand陈工2 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智2 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
王小王-1232 小时前
基于 Hive 的网易云音乐数据分析及可视化系统
hive·hadoop·数据分析·音乐数据分析·网易云音乐分析·hive音乐分析·hadoop网易云
不会C语言的男孩3 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_3 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化