Linux環境下HDFS集群管理指南
在管理HDFS集群前,需完成Linux環境的初始化配置,確保集群節點間通信正常:
sudo apt-get install openjdk-8-jdk),并配置JAVA_HOME環境變量。ssh-keygen -t rsa生成密鑰對,通過ssh-copy-id將公鑰復制到所有節點。systemctl enable ntpd && systemctl start ntpd),確保所有節點時間一致,避免數據同步問題。$HADOOP_HOME/etc/hadoop)下的關鍵文件:
fs.defaultFS=hdfs://namenode:9000)和臨時目錄(hadoop.tmp.dir=/path/to/tmp)。dfs.namenode.name.dir)、DataNode數據存儲路徑(dfs.datanode.data.dir)及副本數(dfs.replication=3,生產環境建議3副本)。hdfs namenode -format),初始化元數據存儲目錄(會清空原有數據,生產環境需謹慎)。start-dfs.sh啟動HDFS集群,DataNode節點會自動注冊;停止集群使用stop-dfs.sh。hdfs dfsadmin -report查看集群整體狀態,包括DataNode數量、磁盤使用情況、副本數等;hdfs dfsadmin -safemode get查看NameNode是否處于安全模式(安全模式下無法寫入數據)。http://namenode-host:9870)可視化監控集群狀態,查看DataNode列表、存儲容量、數據塊分布等信息。hdfs dfs -chmod(修改文件權限,如hdfs dfs -chmod 755 /user/data)、hdfs dfs -chown(修改所有者,如hdfs dfs -chown user:group /user/data)管理文件/目錄權限。hdfs dfs -setfacl(添加ACL規則,如hdfs dfs -setfacl -m user:alice:rwx /user/data)實現更精細的權限控制,允許特定用戶或組訪問資源;使用hdfs dfs -getfacl查看ACL規則。hdfs dfsadmin -safemode leave),或在配置文件中設置自動退出時間(dfs.safemode.extension)。stop-dfs.sh),在slaves文件中添加新DataNode主機名,配置新節點的hdfs-site.xml(指向NameNode地址),啟動新節點(hadoop-daemon.sh start datanode),最后執行start-dfs.sh重啟集群。slaves文件中添加新節點,新節點執行hadoop-daemon.sh start datanode啟動;在NameNode執行hdfs dfsadmin -refreshNodes刷新節點列表,NameNode會自動連接新節點并分配數據塊。hdfs-site.xml中配置dfs.hosts.exclude(指定排除節點的文件路徑),將待移除節點添加到該文件,執行hdfs dfsadmin -refreshNodes,NameNode會將節點標記為“decommissioning”(正在退役),并自動遷移其上的數據塊到其他節點;待數據遷移完成后,停止該節點的DataNode服務并從slaves文件中移除。hdfs dfsadmin -allowSnapshot /path允許目錄創建快照,使用hdfs dfs -createSnapshot /path snapshotname創建快照(如hdfs dfs -createSnapshot /user/data snap1),快照是某一時刻的數據狀態,可用于快速恢復誤刪除或損壞的數據。hdfs dfs -copyToLocal將HDFS數據復制到本地存儲,或復制到其他HDFS目錄(如hdfs dfs -cp /user/data /backup/data)。hdfs dfs -restoreSnapshot /path snapname)、編輯日志(NameNode的edits文件)或備份文件恢復數據。dfs.replication),熱數據(頻繁訪問)設置為3副本(高可靠性),冷數據(很少訪問)設置為2副本(節省存儲成本)。hadoop archive工具或自定義腳本)。