一、硬件基础优化
dfs.namenode.name.dir(NameNode元数据目录)和dfs.datanode.data.dir(DataNode数据目录)配置多个存储路径,分散磁盘负载,避免单点磁盘故障影响整体服务。export HADOOP_NAMENODE_OPTS="-Xmx4096m -Xms2048m"),DataNode需内存处理数据块存储与传输;采用多核CPU提升并行处理能力,应对高并发请求。net.core.somaxconn(内核参数,调整网络连接队列长度)等参数优化网络吞吐量。二、操作系统内核参数调优
/etc/security/limits.conf文件,增加nofile(单进程最大打开文件数)的值(如* soft nofile 655360、* hard nofile 655360),避免HDFS因打开文件过多导致进程崩溃。/etc/sysctl.conf中的TCP参数,如net.core.rmem_max(接收缓冲区最大值)、net.core.wmem_max(发送缓冲区最大值)、net.ipv4.tcp_tw_reuse(复用TIME-WAIT连接),提升网络传输效率。/etc/rc.d/rc.local文件,添加echo never > /sys/kernel/mm/transparent_hugepage/enabled,禁用THP以提升HDFS的内存访问性能。三、HDFS配置参数优化
dfs.blocksize(默认64MB),大文件场景(如日志、视频)设置为128MB或256MB,减少NameNode的元数据管理负担;小文件场景可适当减小块大小,但需平衡NameNode内存占用。dfs.replication=3(兼顾可靠性与存储成本);高写入场景可临时设置为2(节省存储空间),可靠性要求高的场景保持3;冷数据可使用Erasure Coding(hdfs ec -setPolicy)替代副本,进一步减少存储开销。dfs.namenode.handler.count(NameNode处理客户端请求的线程数,默认10,建议30+)和dfs.datanode.handler.count(DataNode处理数据传输的线程数,默认10,建议20+),提升集群并发处理能力。core-site.xml配置fs.trash.interval=60(回收站保留时间,单位分钟)和fs.trash.checkpoint.interval=10(回收站检查间隔),防止误删文件,可通过hdfs dfs -expunge命令手动清空回收站。四、高可用性(HA)配置
dfs.nameservices(集群逻辑名称)、dfs.ha.namenodes.mycluster(NameNode节点列表)、dfs.namenode.shared.edits.dir(JournalNode共享编辑日志路径)、dfs.ha.automatic-failover.enabled=true(启用自动故障转移);初始化ZooKeeper数据(hdfs zkfc -formatZK),启动JournalNode(hdfs --daemon start journalnode)和NameNode(hdfs namenode -initializeSharedEdits),验证状态(hdfs haadmin -getServiceState nn1)。zoo.cfg(server.1=zoo1:2888:3888等),确保ZooKeeper集群的高可用性,为HDFS HA提供可靠的故障检测与切换服务。五、数据管理与容灾
hdfs fsck命令(如hdfs fsck / -files -blocks -locations)定期检查HDFS数据完整性,修复损坏的数据块;通过hdfs dfsadmin -report命令监控数据块复制状态,确保副本数符合设定要求。hdfs dfsadmin -allowSnapshot /path)创建目录只读副本,应对数据删除或篡改;定期备份NameNode元数据(如hdfs namenode -backup),制定灾难恢复方案(如从备份恢复元数据、重新同步数据块)。六、监控与运维
hadoop-hadoop-namenode.log、DataNode的hadoop-hadoop-datanode.log),使用ELK(Elasticsearch+Logstash+Kibana)堆栈分析日志,快速定位性能瓶颈(如GC停顿、网络延迟、磁盘IO过高)。