[英]How to migrate data from a CDH3 cluster to a (different) CDH4 cluster?
我想將數據從CDH3復制到CDH4(在另一台服務器上)。 我的CDH4服務器設置為看不到CDH3,因此我必須將數據從CDH3上游推送到CDH4。 (這意味着我無法從CDH4運行distcp命令來復制數據)。 如何通過在較低版本的CDH3 hadoop上運行命令來將數據傳輸到CDH4的HDFS,或者這是不可能的?
理想情況下,您應該能夠使用distcp將數據從一個HDFS集群復制到另一個集群。
hadoop distcp -p -update "hdfs://A:8020/user/foo/bar" "hdfs://B:8020/user/foo/baz"
-p用於保留狀態,-update用於覆蓋數據(如果文件已經存在但大小不同)。
實際上,根據所使用的Cloudera的確切版本,您可能會遇到不兼容性問題,例如CRC不匹配錯誤 。 在這種情況下,您可以嘗試使用HTFP而不是HDFS,或者將群集升級到最新版本的CDH4,然后查看發行說明以查看是否存在任何相關的已知問題和解決方法。
如果使用distcp仍然有問題,請隨時創建一個新的stackoverflow問題,其中包含確切的錯誤消息,CDH3和CDH4的版本以及確切的命令。
傳輸黑白兩種不同版本的HDFS時,必須將distcp與以下命令配合使用(注意hftp ):
hadoop distcp hftp ://源名稱節點 :50070 / user / hdfs://目標名稱節點:8020 / user /
DistCp僅是集群內的。
我知道的唯一方法是對每個適合本地磁盤的數據子集使用“ fs -get”,“ fs -put”。
為了在兩個不同版本的Hadoop之間進行復制,通常將使用HftpFileSystem。 這是一個只讀文件系統,因此DistCp必須在目標群集上運行(更具體地說,在可以寫入目標群集的TaskTrackers上運行)。 每個源均指定為hftp:///(默認dfs.http.address為:50070)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.