本文檔介紹如何將開源HDFS的數據平滑地遷移到文件存儲 HDFS 版。
背景信息
當前業界有很多公司是以Hadoop技術構建數據中心,而越來越多的公司和企業希望將業務順暢地遷移到云上。文件存儲 HDFS 版可以幫助您實現將開源HDFS的數據遷移到云上,并允許您在云上就像在Hadoop分布式文件系統中管理和訪問數據。
準備工作
開通文件存儲 HDFS 版服務并創建文件系統實例和掛載點。具體操作,請參見文件存儲HDFS版快速入門。
基于阿里云ECS搭建Hadoop集群(下稱"遷移集群"),用于訪問文件存儲 HDFS 版實例和遷移數據,并滿足以下條件:
遷移集群與文件存儲 HDFS 版實例在相同區域、相同可用區。
遷移集群與文件存儲 HDFS 版實例的掛載點使用相同阿里云VPC網絡和交換機。
遷移集群上安裝的JDK版本不低于1.8。
遷移集群上安裝的Hadoop版本不低于2.7.2。
說明如果原集群滿足上述條件且計算資源充足,可以直接將原集群當作遷移集群使用,不必額外創建新集群。
在遷移集群中配置文件存儲 HDFS 版實例。具體操作,請參見掛載文件存儲HDFS版文件系統。
驗證遷移集群和文件存儲 HDFS 版實例之間的連通性。
執行以下命令,在文件存儲 HDFS 版上創建目錄(例如/dfs_links)。
hadoop fs -mkdir /dfs_links
執行以下命令,驗證連通性。
hadoop fs -ls dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/dfs_links
其中
f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com
為文件存儲 HDFS 版掛載點域名,請根據您的實際情況進行修改。如果命令正常執行無輸出結果,則表示連通成功。如果連通失敗,請排查連通性問題。具體操作,請參見創建文件系統實例后,為什么無法訪問文件存儲 HDFS 版?。
準備遷移工具。
您可以通過Hadoop社區標準的DistCp工具實現全量或增量的HDFS數據遷移。更多關于DistCp工具使用說明,請參見Hadoop DistCp工具官方說明文檔。
說明使用
hadoop distcp
命令將原集群數據遷移至文件存儲 HDFS 版時,請注意文件存儲 HDFS 版不支持以下參數,其它參數使用和Hadoop DistCp工具官方說明文檔一致。文件存儲 HDFS 版及命令行存在限制的更多信息,請參見使用限制。參數
描述
狀態
-p[rbpax]
r:replication,b:block-size,p:permission,a:ACL,x:XATTR
不可用
數據遷移
下面介紹直接遷移和數據中轉兩種遷移方式,推薦使用直接遷移。
直接遷移
直接從原集群遷移數據到文件存儲 HDFS 版,需要先連通原集群和遷移集群的網絡環境,再執行數據遷移任務。
連通原集群與遷移集群的網絡環境。
場景A:原集群在阿里云ECS實例上(包括EMR)
如果在準備工作中將原集群當作遷移集群來使用,請直接執行步驟2中的遷移命令。
集群處于VPC網絡環境,但無法訪問文件存儲 HDFS 版實例時,請參見使用云企業網跨VPC訪問文件存儲HDFS版。
原集群處于經典網絡時,建立ClassicLink連接。
場景B:原集群在其他平臺上。
使用阿里云高速通道產品連通原集群和遷移集群的網絡環境。具體操作,請參見功能特性。
在已配置文件存儲 HDFS 版的集群上參考以下命令遷移數據。
hadoop distcp hdfs://x.x.x.x:9000/user/hive/warehouse dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/hive/warehouse
數據中轉
如果原集群與遷移集群的網絡無法連通,可以參考以下步驟遷移數據。
將對象存儲OSS數據遷移到文件存儲 HDFS 版。具體操作,請參見文件存儲HDFS版和對象存儲OSS雙向數據遷移。
將原集群數據遷移到對象存儲OSS。具體操作,請參見離線遷移。
常見問題
整體遷移速度受Hadoop集群與文件存儲 HDFS 版之間的帶寬、集群規模影響。同時傳輸文件越多,checksum需要的時間越長。如果遷移數據量大,建議先嘗試遷移幾個目錄評估整體時間。如果只能在指定時間段內遷移數據,可以將目錄切為幾個小目錄,依次遷移。
一般全量數據同步時,需要一個短暫的業務停寫過程,用來啟用雙寫雙算。
遷移過程出現異常提示:
Cannot obtain block length for LocatedBlock
。從原生的HDFS往對象存儲OSS或文件存儲 HDFS 版遷移數據時,可能會遇到這個問題。遇到該問題時,請執行
hdfs fsck / -openforwrite
命令,檢查當前是否有文件處于寫入狀態尚未關閉。如果有處于寫入狀態的文件時,需判斷文件是否有效。如果文件無效,則直接刪除文件。
hdfs rm <path-of-the-file>
如果文件有效,則不能直接刪除,請考慮恢復問題文件租約。
hdfs debug recoverLease -path <path-of-the-file> -retries <retry times>