CentOS系统基础优化
setenforce 0临时关闭,修改/etc/selinux/config永久生效;关闭防火墙(systemctl stop firewalld && systemctl disable firewalld)或配置允许Hadoop相关端口(如NameNode的9000、DataNode的50010等)。/etc/sysctl.conf优化网络与内存参数,提升系统吞吐量。关键配置包括:net.core.somaxconn = 65535(增大socket监听队列长度,避免连接拒绝)、net.ipv4.tcp_tw_reuse = 1(复用TIME_WAIT状态的连接,减少连接建立开销)、vm.swappiness = 0(禁用swap分区,防止Hadoop任务因内存不足频繁换页)、fs.file-max = 800000(增大系统最大文件描述符数)。执行sysctl -p使配置生效。/etc/security/limits.conf,添加以下内容永久提高用户(如hadoop)的文件描述符上限:hadoop hard nofile 65535、hadoop soft nofile 65535;同时修改/etc/pam.d/login,添加session required pam_limits.so,确保限制生效。HDFS配置优化
hadoop-env.sh中设置HADOOP_NAMENODE_OPTS(如-Xmx8g,分配8GB堆内存);增加NameNode处理DataNode心跳的并发线程数,修改hdfs-site.xml中的dfs.namenode.handler.count(建议值为20 * log2(集群节点数),如10节点集群设置为60)。dfs.datanode.data.dir),分散数据存储压力(如/data1/datanode,/data2/datanode);调整HDFS块大小(dfs.block.size),根据数据访问模式选择(如顺序读场景设为256MB,随机读场景设为64MB),默认128MB适用于多数场景。dfs.replication),热数据设为3(默认),冷数据可降低至2以减少存储开销;启用HDFS回收站(core-site.xml中设置fs.trash.interval = 1440(1天)、fs.trash.checkpoint.interval = 120(2小时)),防止数据误删除。YARN与MapReduce调优
yarn-site.xml中设置yarn.nodemanager.resource.memory-mb(节点可用内存,如32GB)、yarn.nodemanager.resource.cpu-vcores(节点可用CPU核心数,如8核);调整Map/Reduce任务内存(mapreduce.map.memory.mb、mapreduce.reduce.memory.mb,如2GB/4GB)及JVM堆内存(mapreduce.map.java.opts、mapreduce.reduce.java.opts,如-Xmx1536m、-Xmx3072m),避免内存溢出。Capacity Scheduler(按队列分配资源,适合多租户场景)或Fair Scheduler(动态分配资源,适合公平共享),在yarn-site.xml中配置yarn.resourcemanager.scheduler.class。mapreduce.task.io.sort.mb,如100MB),减少磁盘溢写次数;调整排序参数(mapreduce.task.io.sort.factor,如100),提高排序效率。硬件与环境优化
dfs.replication和机架感知策略dfs.network.script配置),减少网络传输开销。Hadoop Archive(HAR)或CombineFileInputFormat合并小文件,降低NameNode压力。压缩与监控
mapred-site.xml中设置mapreduce.map.output.compress = true、mapreduce.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec(Snappy压缩速度快,适合Hadoop场景);最终输出压缩设置mapreduce.output.fileoutputformat.compress = true。TestDFSIO测试HDFS读写性能、TeraSort测试MapReduce排序性能),识别瓶颈并针对性优化。