簡介:
本文面向剛接觸 Hadoop HDFS(Hadoop 分布式文件系統)的讀者,結合 CSDN 博客風格,系統梳理最常用的 HDFS 客戶端命令,并配以示例和注意事項,幫助你在開發和運維中快速掌握 HDFS 的文件管理能力。
一、前置條件與環境準備
-
安裝 Hadoop
已完成 Hadoop 單節點或偽分布式集群安裝,并能正常啟動 HDFS(start-dfs.sh
)。 -
配置環境變量
確保HADOOP_HOME
和PATH
已包含 Hadoop 可執行文件路徑。例如在~/.bashrc
中:export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
驗證 HDFS 服務
jps # 應至少看到 NameNode、DataNode、SecondaryNameNode 等進程 hdfs dfsadmin -report
二、HDFS 文件系統目錄操作
操作 | 命令示例 | 說明 |
---|---|---|
創建目錄 | hdfs dfs -mkdir /user/yourname/input | 支持 -p 遞歸創建父目錄 |
列出目錄 | hdfs dfs -ls /user/yourname | 同 hadoop fs -ls |
遞歸列出 | hdfs dfs -ls -R /user/yourname | 列出子目錄及文件 |
刪除文件/目錄 | hdfs dfs -rm /path/to/file hdfs dfs -rm -r /path/to/dir | -r 遞歸,-skipTrash 直刪 |
重命名/移動 | hdfs dfs -mv /src /dst | src 與 dst 必須同屬 HDFS |
復制文件 | hdfs dfs -cp /src /dst | 從 HDFS 到 HDFS |
三、HDFS 與本地文件互轉
操作 | 命令示例 | 說明 |
---|---|---|
本地 → HDFS(上傳) | hdfs dfs -put local.txt /user/yourname/input/ | 同 -copyFromLocal |
強制覆蓋上傳 | hdfs dfs -put -f local.txt /user/yourname/input/ | 覆蓋已存在同名文件 |
HDFS → 本地(下載) | hdfs dfs -get /user/yourname/input/data01.txt ./ | 同 -copyToLocal |
本地重命名后上傳 | hdfs dfs -copyFromLocal local.txt /user/yourname/input/new.txt | 可以在 HDFS 端指定新文件名 |
四、查看與讀取文件內容
-
查看完整內容
hdfs dfs -cat /user/yourname/input/data01.txt
-
查看開頭或結尾
hdfs dfs -cat /user/yourname/input/data01.txt | head -n 20 # 前 20 行 hdfs dfs -tail /user/yourname/input/data01.txt # 末尾 1KB
-
統計行數、字節數
hdfs dfs -count -q /user/yourname/input # 行數、文件數、目錄數 hdfs dfs -du -h /user/yourname/input # 各文件和目錄的大小
五、權限與空間管理
-
修改文件權限
hdfs dfs -chmod 755 /user/yourname/input/data01.txt
-
修改文件屬主/屬組
hdfs dfs -chown yourname:yourgroup /path/to/file
-
查看使用情況
hdfs dfsadmin -report hdfs dfs -df -h
六、最佳實踐與注意事項
-
避免在小文件大量場景下使用:HDFS 更適合存儲大文件,千萬級小文件會導致 NameNode 內存壓力增大。
-
合理設置副本數:開發環境可用副本數 1,生產應至少 2~3。
-
頻繁讀寫使用中間目錄:避免在同一目錄下反復
put
、rm
,可按日期或業務類型分區。 -
使用
hadoop fs
:hdfs dfs
與hadoop fs
功能等價,可根據習慣任選。
七、結語
以上涵蓋了 HDFS 最常用的基礎命令,包含目錄管理、文件上傳下載、內容查看及權限調整等。掌握這些命令后,你就可以在開發、調試和運維環節高效地與 HDFS 交互。更多高級用法(如 DistCp、HDFS Shell 腳本批量化操作、WebHDFS 接口等),可在后續文章中繼續分享,歡迎關注與留言討論!