硬件配置优化
硬件是Hadoop性能的基础支撑,需根据集群规模和业务需求选择合适的配置:
net.core.somaxconn增大socket监听backlog上限、net.ipv4.tcp_max_syn_backlog调整SYN队列长度),增强网络吞吐能力。操作系统参数调优
操作系统内核参数的调整直接影响Hadoop的并发处理能力和稳定性:
ulimit -n命令增大同时打开的文件描述符上限(如设置为65535),并通过修改/etc/security/limits.conf(如* soft nofile 65535、* hard nofile 65535)和/etc/security/limits.d/90-nproc.conf(如* soft nproc 65535)使设置永久生效。/etc/sysctl.conf中的vm.swappiness参数为0(echo vm.swappiness = 0 >> /etc/sysctl.conf),禁止操作系统使用Swap。blockdev命令增大磁盘预读取缓冲区大小(如blockdev --setra 16384 /dev/sda),减少磁盘寻道次数,提升大文件顺序读性能。Hadoop核心配置优化
合理调整Hadoop框架参数可提升集群资源利用率和任务执行效率:
dfs.blocksize):默认128MB,可根据数据量和集群规模调整为256MB或更大(如大文件处理场景),减少NameNode的元数据压力和寻址时间。dfs.replication):默认3份,可根据数据重要性调整(如热数据保持3份,冷数据减少至2份),平衡数据可靠性和存储开销。mapreduce.map.memory.mb/mapreduce.reduce.memory.mb):根据任务复杂度分配内存(如Map任务分配4GB,Reduce任务分配8GB),避免内存不足导致任务失败。mapreduce.map.cpu.vcores/mapreduce.reduce.cpu.vcores):合理分配CPU核心数(如Map任务分配2核,Reduce任务分配4核),提高并行处理能力。mapreduce.task.io.sort.mb):增大Map中间结果溢出到磁盘的内存上限(如设置为200MB),减少磁盘I/O次数,提升Shuffle效率。yarn.nodemanager.resource.memory-mb/yarn.nodemanager.resource.cpu-vcores):根据节点硬件配置分配资源(如8GB内存、4核CPU),避免资源浪费。yarn.scheduler.maximum-allocation-mb):设置单个任务可申请的最多物理内存量(如8GB),防止任务占用过多资源导致其他任务饥饿。数据存储与处理策略优化
数据的高效存储和处理是提升Hadoop性能的关键:
mapreduce.job.locality.wait参数设置为30秒,等待数据本地化机会)。mapreduce.map.output.compress设置为true)和最终输出(mapreduce.output.fileoutputformat.compress设置为true)使用Snappy、LZO等压缩算法,减少磁盘空间占用和网络传输成本(如Snappy压缩比约为3:1,压缩/解压速度快)。Partitioner接口自定义分区)将数据均匀分布在不同节点上,避免数据倾斜(如某节点处理的数据量远大于其他节点);对于倾斜数据,可通过预处理(如过滤高频key)或自定义分区函数解决。监控与持续调优
持续监控集群状态并及时调整配置是保持Hadoop高性能的必要手段: