监控是保障HDFS稳定运行的核心,需覆盖集群状态、资源使用、性能瓶颈三大维度,关键指标包括:
hdfs dfsadmin -report命令查看集群状态(包括DataNode数量、存储使用情况);NameNode/DataNode的Web UI(默认端口50070/9870)可实时监控集群健康、块分布、性能指标;check_hadoop_hdfs)监控HDFS服务可用性,触发告警。调整CentOS内核参数以提升网络和文件系统性能,编辑/etc/sysctl.conf文件,添加以下配置:
# TCP参数优化:重用TIME_WAIT连接、增加本地端口范围
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
# Socket缓冲区:提升网络吞吐量
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# 单进程打开文件数限制(需配合limits.conf)
fs.file-max = 65535
执行sysctl -p使配置生效。同时编辑/etc/security/limits.conf,添加:
* soft nofile 65535
* hard nofile 65535
提升单进程打开文件数限制,避免NameNode因文件句柄耗尽崩溃。
修改core-site.xml和hdfs-site.xml文件,优化核心参数:
<!-- 设置HDFS默认文件系统地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9020</value>
</property>
<!-- 启用HDFS回收站(保留删除文件7天,避免误删) -->
<property>
<name>fs.trash.interval</name>
<value>7</value>
</property>
<!-- 副本因子:根据数据重要性调整(存储充足建议3,否则设为2) -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 块大小:大文件建议256M(减少元数据操作),小文件建议64M(避免块过多) -->
<property>
<name>dfs.blocksize</name>
<value>256M</value>
</property>
<!-- NameNode处理线程数:根据客户端请求数量调整(集群规模大建议100+) -->
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<!-- DataNode处理线程数:根据DataNode数量调整(建议30-50) -->
<property>
<name>dfs.datanode.handler.count</name>
<value>30</value>
</property>
<!-- 数据目录多路径:提升数据可靠性(可配置多个磁盘路径,逗号分隔) -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hdfs/datanode1,/data/hdfs/datanode2</value>
</property>
yarn.scheduler.capacity.root.default.locality.threshold.node参数调整本地化阈值(默认0.8,表示80%的任务需本地化);mapreduce.map.output.compress=true(Map输出压缩)和mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec(Snappy压缩算法),平衡压缩率与CPU消耗。小文件(如小于1M的文件)会增加NameNode负载(每个文件需记录元数据),需定期合并:
hadoop archive命令),将小文件打包成大文件;