HDFS文件系統在Linux環境中的維護指南
在Linux系統中維護HDFS前,需完成以下基礎配置:
java -version
檢查是否安裝,未安裝則使用sudo apt-get install openjdk-8-jdk
(Ubuntu)或sudo yum install java-1.8.0-openjdk
(CentOS)安裝,并配置JAVA_HOME
環境變量(添加至/etc/profile
并執行source /etc/profile
)。/usr/local/hadoop
)。/etc/profile
中添加HADOOP_HOME
(Hadoop安裝目錄)和PATH
(包含$HADOOP_HOME/bin
、$HADOOP_HOME/sbin
),執行source /etc/profile
使配置生效。ssh-keygen -t rsa
),將公鑰復制到所有DataNode節點(ssh-copy-id datanode1
、ssh-copy-id datanode2
等),確保NameNode可通過SSH無密碼訪問DataNode。修改Hadoop配置文件(位于$HADOOP_HOME/etc/hadoop/
),定義HDFS運行參數:
fs.defaultFS
,如hdfs://namenode:9000
)和Hadoop臨時目錄(hadoop.tmp.dir
,如/tmp/hadoop
)。dfs.namenode.name.dir
,如/data/namenode
)、DataNode數據目錄(dfs.datanode.data.dir
,如/data/datanode
)、副本因子(dfs.replication
,生產環境建議3)、數據塊大?。?code>dfs.blocksize,如128MB或256MB,根據數據訪問模式調整)。mapreduce.framework.name
為yarn
)。yarn.resourcemanager.hostname
為ResourceManager節點地址)和shuffle服務(yarn.nodemanager.aux-services
為mapreduce_shuffle
)。hdfs namenode -format
,注意:此操作會清除已有數據)。start-dfs.sh
啟動NameNode和DataNode服務;如需啟動YARN,可在ResourceManager節點執行start-yarn.sh
。jps
命令查看Java進程(NameNode、DataNode、SecondaryNameNode等是否運行)。hdfs dfsadmin -report
查看集群詳情(DataNode數量、磁盤使用情況、副本數等)。http://namenode:50070
)查看集群狀態。使用hdfs dfs
命令管理HDFS中的文件和目錄:
hdfs dfs -ls /path/to/directory
hdfs dfs -mkdir -p /path/to/new_directory
(-p
表示遞歸創建父目錄)hdfs dfs -put localfile /hdfs/destination
hdfs dfs -get /hdfs/sourcefile localdestination
hdfs dfs -rm -r /hdfs/file_or_directory
(-r
表示遞歸刪除,刪除后進入回收站)hdfs dfs -cat /hdfs/file
df -h
查看Linux系統磁盤空間,通過hdfs dfs -df -h
查看HDFS各目錄使用情況(如/user/hive/warehouse
)。hdfs dfs -rm /path/to/old_file
hdfs dfs -expunge
(清空回收站,回收站文件默認保留1天)/tmp/hive
中的7天以上數據(hdfs dfs -rm -r /tmp/hive/*.tmp
)。start-balancer.sh
啟動均衡任務(默認閾值10%,可通過hdfs balancer -threshold 5
調整)。hdfs dfs -chmod
調整文件/目錄權限(如hdfs dfs -chmod 755 /path/to/dir
),使用hdfs dfs -chown
修改所有者(如hdfs dfs -chown user:group /path/to/file
)。hdfs dfs -setfacl
設置訪問控制列表(如hdfs dfs -setfacl -m user:alice:rwx /path/to/file
),通過hdfs dfs -getfacl
查看ACL規則。hdfs lifecycle -createPolicy
)定義數據保留時間(如30天),超過期限的數據自動刪除或歸檔。hdfs dfsadmin -allowSnapshot /path/to/dir
,hdfs dfs -createSnapshot /path/to/dir snapshot_name
),用于快速恢復數據。distcp
命令(hadoop distcp hdfs://namenode1:9000/path hdfs://namenode2:9000/path
)實現數據跨集群備份。hdfs dfs -put localfile /hdfs/destination -D mapreduce.output.fileoutputformat.compress=true -D mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec
)。jps
命令定期檢查HDFS進程(NameNode、DataNode、ResourceManager等)是否運行,若進程異常退出,需查看日志(/usr/local/hadoop/logs/
目錄下的namenode.log
、datanode.log
)定位原因。hdfs dfsck /
檢查文件系統完整性。HADOOP_NAMENODE_OPTS="-Xmx4g"
,根據數據量調整),使用G1GC垃圾回收器(-XX:+UseG1GC
)減少Full GC時間。hadoop archive
命令或編寫MapReduce程序),減少NameNode內存壓力。