CentOS环境下HDFS存储管理核心技巧
调整hdfs-site.xml中的关键参数是优化存储性能的基础:
通过调整系统参数提升HDFS运行效率:
/etc/security/limits.conf,添加hadoop hard nofile 65535(永久生效);临时调整可使用ulimit -n 65535,避免NameNode因文件句柄耗尽崩溃。/etc/sysctl.conf,添加net.ipv4.tcp_tw_reuse = 1(复用TIME_WAIT连接)、net.core.somaxconn = 65535(增大连接队列长度)、net.ipv4.ip_local_port_range = 1024 65535(扩大端口范围),减少网络瓶颈。noatime,nodiratime选项(如mount -o remount,noatime,nodiratime /data),减少磁盘I/O开销。hdfs dfs -df -h查看HDFS各目录空间使用情况,df -h查看操作系统磁盘空间,及时发现容量瓶颈。hdfs fs -rm /path/to/old_file删除过期数据;使用hdfs dfsadmin -expunge清空回收站的临时文件;清理NameNode/DataNode日志(位于/var/log/hadoop-hdfs)。启用压缩减少存储空间占用并提升传输效率:
mapred-site.xml中设置mapreduce.map.output.compress=true(Map输出压缩)、mapreduce.output.fileoutputformat.compress=true(最终输出压缩),并指定压缩算法(如mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec)。通过配额限制目录存储空间,防止滥用:
hdfs dfsadmin -setQuota 100G /user/test限制/user/test目录最多使用100GB空间。hdfs dfsadmin -clrQuota /user/test清除原配额,再重新设置;使用hdfs dfs -count -q /user/test查看配额使用情况。hdfs dfsadmin -allowSnapshot /path开启目录快照,hdfs dfs -createSnapshot /path/snapshot_name创建快照,hdfs dfs -restoreSnapshot /path/snapshot_name恢复数据(适用于误删除或数据损坏场景)。DistCp工具(hadoop distcp hdfs://source-namenode:8020/path hdfs://target-namenode:8020/path)将数据复制到异地集群,实现异地容灾。hdfs-policy.xml)配置数据保留时间(如30天),自动清理过期数据。/archive),减少活跃存储压力。hdfs-site.xml中添加新节点的dfs.datanode.data.dir路径,启动DataNode(sbin/hadoop-daemon.sh start datanode),NameNode会自动识别并分配数据块副本。hdfs dfsadmin -decommission /datanode-hostname),等待数据迁移完成后,停止DataNode进程并从集群配置中移除节点。小文件(通常小于128MB)会增加NameNode元数据负载,需定期合并:
hadoop archive -archiveName myhar.har -p /input/dir /output/dir将小文件打包成HAR文件,减少NameNode元数据数量。hdfs dfs -chmod 750 /path设置文件/目录权限(所有者可读写执行,组用户可读执行,其他用户无权限),hdfs dfs -chown user:group /path修改所有者。dfs.permissions.enabled=true),使用hdfs dfs -setfacl -m user:test:rwx /path为用户添加细粒度权限(如读、写、执行),hdfs dfs -getfacl /path查看ACL规则。