硬件配置优化
硬件是Hadoop性能的基础,需根据集群规模和业务需求选择合适的配置:
操作系统参数调优
Linux系统的默认参数可能无法满足Hadoop的大规模数据处理需求,需调整以下关键参数:
ulimit -n 65536临时调整,或在/etc/security/limits.conf中永久设置(如* soft nofile 65536; * hard nofile 65536)。/etc/sysctl.conf中添加:net.core.somaxconn = 65535(socket监听队列长度)、net.ipv4.tcp_max_syn_backlog = 65535(SYN队列长度)、net.ipv4.ip_local_port_range = 1024 65535(客户端端口范围),然后执行sysctl -p生效。vm.swappiness = 0(禁用Swap)或设置为较低值(如1),避免操作系统将内存数据交换到磁盘。noatime选项挂载文件系统(如/etc/fstab中添加defaults,noatime),减少文件访问时间的更新操作,降低磁盘I/O开销。Hadoop配置优化
Hadoop的默认配置需根据集群资源调整,以提升资源利用率和处理效率:
hdfs-site.xml中的dfs.blocksize参数。hdfs-site.xml中的dfs.replication参数。mapreduce.map.memory.mb(Map任务内存)和mapreduce.reduce.memory.mb(Reduce任务内存),避免内存溢出(OOM)。mapreduce.map.java.opts和mapreduce.reduce.java.opts设置JVM参数(如-Xmx4g设置堆内存上限、-XX:+UseG1GC使用G1垃圾回收器减少GC停顿时间)。mapreduce.map.output.compress=true)和最终输出(mapreduce.output.fileoutputformat.compress=true)启用压缩(如Snappy、LZO),减少磁盘I/O和网络传输。yarn.nodemanager.resource.memory-mb(NodeManager可用内存)和yarn.nodemanager.resource.cpu-vcores(NodeManager可用CPU核心数),确保资源充分利用。数据本地化与分区优化
数据本地化是减少网络传输的关键,需确保计算任务在数据所在节点执行:
mapreduce.job.locality.wait参数(默认3秒)控制任务等待数据本地化的时间,若集群规模大,可适当延长(如5-10秒),提高数据本地化率。监控与维护
持续监控集群性能并及时排查瓶颈是保持Hadoop高效运行的关键:
namenode.log、DataNode的datanode.log),查找错误或性能问题(如GC停顿时间过长、任务失败率高)。