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規則。