一、硬件配置优化:提升基础性能支撑
hadoop-env.sh中的HADOOP_NAMENODE_OPTS参数(如-Xmx16G);DataNode内存需满足数据缓存需求(如处理10GB/s吞吐量需至少32GB内存)。二、HDFS配置参数调优:精准匹配业务需求
dfs.blocksize(默认128MB,Hadoop 3.x+默认256MB)。大文件/顺序读场景(如历史日志、视频文件):增大至256MB-512MB,减少NameNode元数据压力(如1TB文件按256MB分块仅需4K个元数据条目);小文件/随机读场景(如数据库备份):减小至64MB-128MB,提高并行度,但需避免块过多导致元数据膨胀。dfs.replication参数调整副本数(默认3)。关键业务数据(如金融交易记录):保持3副本以确保高容错;非关键冷数据(如历史归档):减少至2副本,降低存储成本(存储开销从3倍降至2倍)。hadoop archive -archiveName myhar.har -p /input/dir /output/dir);② 使用CombineFileInputFormat读取小文件(将多个小文件合并为一个输入分片,减少Map任务数);③ 将小文件存储至HBase等列式数据库(适合结构化小文件管理)。三、数据存储策略优化:平衡效率与成本
dfs.datanode.data.dir配置压缩(如dfs.datanode.data.dir=/data1/compressed,/data2/compressed),减少存储空间占用(如Snappy可将数据压缩至原大小的30%-50%)和网络传输时间。hdfs ec命令配置(如hdfs ec -enablePolicy -policy RS-3-2),显著降低存储成本。hdfs storagepolicies -setStoragePolicy -path /cold/data -policy COLD)。四、数据本地性与任务调度优化:减少网络开销
dfs.datanode.handler.count(默认10,建议调整为20-30)增加DataNode处理请求的并发能力,提高数据本地读取率(目标>90%)。优化任务调度策略(如YARN的Capacity Scheduler),优先将任务分配至数据所在节点(通过mapreduce.job.locality.wait参数控制等待时间,默认3秒)。dfs.client.read.shortcircuit为true(默认false),允许客户端直接从本地DataNode读取数据(绕过NameNode),减少网络延迟(实测延迟可降低30%-50%)。需同时配置dfs.client.read.shortcircuit.streams.cache.size(如1000,缓存短路读取流的数量)。五、集群维护与监控:持续优化性能
hdfs dfsadmin -refreshNodes命令更新节点列表。hdfs balancer -threshold 10,阈值设为10%)定期平衡各DataNode的存储负载(避免部分节点过载导致性能下降)。建议每周执行一次,或在新增节点后执行。