一、硬件配置优化
硬件是Hadoop集群性能的基础,需根据集群规模和业务需求选择合适的硬件:
二、操作系统参数调优
操作系统参数直接影响Hadoop的并发处理能力和稳定性,需重点调整以下参数:
/etc/security/limits.conf,添加:* soft nofile 65535、* hard nofile 65535;编辑/etc/pam.d/login,确保包含session required pam_limits.so。/etc/sysctl.conf,添加:net.core.somaxconn=65535(socket监听队列长度)、net.ipv4.tcp_max_syn_backlog=65535(SYN队列长度)、net.ipv4.tcp_rmem=4096 87380 16777216(TCP接收缓冲区)、net.ipv4.tcp_wmem=4096 65536 16777216(TCP发送缓冲区);执行sysctl -p使配置生效。/etc/sysctl.conf,添加vm.swappiness=0;执行sysctl -p生效。blockdev --setra 8192 /dev/sdX(X为数据盘设备名)。三、Hadoop核心配置优化
Hadoop的配置需根据硬件资源和业务场景调整,以下是关键参数:
dfs.blocksize:HDFS块大小,默认128MB,建议调整为256MB(大文件场景)或64MB(小文件场景),减少NameNode元数据压力。dfs.replication:副本数,默认3,可根据数据重要性调整(如热数据3副本,冷数据2副本),降低存储成本。dfs.namenode.handler.count:NameNode RPC处理线程数,默认10,建议调整为32(大集群),提升并发处理能力。mapreduce.map.memory.mb/mapreduce.reduce.memory.mb:Map/Reduce任务内存,建议Map设为4-8GB,Reduce设为8-16GB(根据数据量调整)。mapreduce.task.io.sort.mb:Map中间结果溢出到磁盘的内存大小,默认100MB,建议调整为400MB(减少溢出次数,提升性能)。mapreduce.reduce.shuffle.parallelcopies:Reduce拉取Map结果的并行线程数,默认5,建议调整为10(大集群),提升shuffle效率。yarn.nodemanager.resource.memory-mb:每个NodeManager可分配的内存,建议设为物理内存的80%(如16GB内存设为12GB)。yarn.nodemanager.resource.cpu-vcores:每个NodeManager可分配的CPU核心数,建议设为物理核心数的80%(如8核设为6核)。yarn.scheduler.maximum-allocation-mb:单个任务可申请的最大内存,建议设为yarn.nodemanager.resource.memory-mb的80%(如12GB设为9GB),避免单个任务占用过多资源。四、数据存储与处理优化
数据存储和处理策略直接影响Hadoop的IO效率和资源利用率:
mapreduce.output.fileoutputformat.compress=true,mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec(Snappy压缩速度快,适合大数据场景)。mapreduce.job.locality.wait参数(默认3秒),增加任务等待数据本地化的时间(如设为30秒),提高数据本地化率(减少网络传输)。五、监控与持续调优
持续监控集群状态,及时发现性能瓶颈并进行调整:
/tmp目录),合并小文件(使用Hadoop Archive工具),优化NameNode元数据(如定期执行hdfs dfsadmin -rollEdits)。