Ubuntu下HDFS數據遷移的常用方法與最佳實踐
在Ubuntu環境下,HDFS數據遷移需根據數據規模、集群版本及業務需求選擇合適工具。以下是具體方法及注意事項:
hdfs dfs -get/-put命令適用于少量數據(如GB級以內)的遷移,操作簡單但效率較低。
hdfs dfs -get /hdfs/source/path /local/destination/pathhdfs dfs -put /local/source/path /hdfs/destination/pathdistcp命令(Hadoop自帶)是Hadoop生態中最常用的大規模數據復制工具,支持并行傳輸、斷點續傳,適用于集群間或集群內大規模數據遷移。
hadoop distcp hdfs://source-namenode:port/path/to/source hdfs://destination-namenode:port/path/to/destinationhftp協議):hadoop distcp hftp://source-cluster:50070/path/to/source hdfs://destination-cluster:9000/path/to/destination-p:保留文件權限、所有者、組等屬性(確保一致性);-update:更新目標集群中已存在的文件(避免重復傳輸);-m <num>:指定并行任務數(根據集群資源調整,如-m 100表示100個并行任務)。適用于需要零數據丟失的場景(如生產環境),通過快照創建源數據的只讀副本,再復制到目標集群。
hdfs dfsadmin -allowSnapshot /path/to/source(允許目錄創建快照)→ hdfs dfs -createSnapshot /path/to/source snapshot_name(生成快照);distcp或rsync);基于HDFS存儲策略(Storage Policy),將數據從舊存儲介質(如機械硬盤)遷移到新介質(如SSD),適用于存儲升級場景。
hdfs-site.xml,啟用Mover功能并設置自動遷移CRON表達式;hdfs mover -p /path/to/source(指定源目錄);hdfs dfs -du -h /命令查看各目錄總大小,按業務劃分(如用戶數據、日志數據)統計,制定分批遷移計劃;distcp命令參數,如使用hftp協議)。distcp -update參數更新目標集群中已修改的文件,或編寫腳本比對源/目標集群的文件數量、大??;-p參數保留文件權限,或使用hdfs dfs -chmod/-chown命令手動調整;tc命令),避免占用過多帶寬影響線上業務;hdfs超級用戶或目錄所屬用戶);yarn application -list查看distcp任務進度,記錄日志以便排查問題(如distcp -log /path/to/logfile)。