一、硬件优化:提升基础性能支撑
二、操作系统调优:优化底层资源调度
noop(无队列调度,减少调度开销),HDD推荐使用deadline(保证读写延迟)或cfq(公平队列,适合多任务场景)。ulimit -n 65535临时设置,修改/etc/security/limits.conf(添加* soft nofile 65535; * hard nofile 65535)永久生效,解决HDFS大量文件导致的文件句柄瓶颈。/etc/sysctl.conf中添加net.ipv4.tcp_tw_reuse = 1(复用TIME-WAIT连接)、net.core.somaxconn = 65535(增加监听端口队列长度)、net.ipv4.ip_local_port_range = 1024 65535(扩大临时端口范围),提升网络传输效率。/data),并使用RAID 0(提升吞吐量)或RAID 10(兼顾性能与冗余)技术,提高磁盘I/O性能。三、HDFS配置参数调优:针对性优化读写效率
dfs.blocksize(默认128MB)——大文件(如日志、视频)可设置为256MB或512MB(减少元数据操作,提高顺序读写速度);小文件可保持128MB或更小(避免过多空闲空间)。dfs.replication(默认3)——热数据(频繁访问)可保持3份(保证高可用),冷数据(很少访问)可降低至2份(减少存储开销和网络传输)。dfs.namenode.handler.count(默认10)和dfs.datanode.handler.count(默认10)——根据集群规模增大至50-100,提升NameNode和DataNode的并发处理能力,减少RPC调用延迟。core-site.xml中设置dfs.client.read.shortcircuit为true,允许客户端直接从本地数据节点读取数据(绕过DataNode的网络转发),减少网络传输延迟约30%~50%。dfs.namenode.handler.count和dfs.datanode.handler.count,提升节点间的并发处理能力,避免因线程不足导致的请求堆积。四、数据本地化:减少网络传输开销
mapreduce.job.locality.wait(默认3秒),延长任务等待本地数据的时间(如设置为30秒),提高数据本地化执行率(理想状态达到80%以上)。hdfs balancer命令(如hdfs balancer -threshold 10)定期均衡集群数据,避免某些节点过载(数据倾斜),确保每个节点的存储利用率和负载均衡。五、应用层优化:提升数据处理效率
mapreduce.map.output.compress=true),选择高效的压缩算法(如Snappy,压缩比约2-3倍,解压速度快;LZO,压缩比更高但需要额外安装解压库),减少数据存储空间和网络传输时间。mapreduce.job.maps设置为集群CPU核心数的1.5-2倍,mapreduce.job.reduces设置为集群内存容量的1/4-1/2),提高数据处理并行度,减少任务执行时间。六、监控与持续调优:动态优化性能
namenode.log)和DataNode(datanode.log)的日志,识别慢操作(如长时间的块复制、频繁的GC),针对性地调整配置(如增加内存、优化GC参数)。