0
我是Apache Hadoop的新手。我們有一個Hadoop集羣[1]充滿了一些數據。還有另外一個Hadoop集羣[2]沒有數據。從[1]到[2]複製數據的最簡單和最好的方法是什麼?如何將一個Hadoop集羣中的數據複製到另一個Hadoop集羣?
我是Apache Hadoop的新手。我們有一個Hadoop集羣[1]充滿了一些數據。還有另外一個Hadoop集羣[2]沒有數據。從[1]到[2]複製數據的最簡單和最好的方法是什麼?如何將一個Hadoop集羣中的數據複製到另一個Hadoop集羣?
您可以使用DistCp(分佈式副本),它是一種允許您在集羣之間複製數據或從/到不同文件系統(如S3或FTP服務器)複製數據的工具。
https://hadoop.apache.org/docs/r1.2.1/distcp2.html
您必須指定從外部集羣複製數據的絕對路徑:HDFS:// OtherClusterNN:端口/路徑
此工具啓動,從任何類型的並行複製數據的MapReduce工作可用於HDFS,FTP,S3,AZURE(最新版本等)的Hadoop FileSystem庫中的源代碼
要從不同版本的hadoop複製數據,而使用HDFS協議,則必須使用來自其中一個版本的HftpFileSystem。
以這種方式..我們不需要擔心2個服務器的任何內部配置(例如:節點數量)和表結構等。 –
與HDFS的通信始終以NameNode開頭,該URL是URL中的主機(hdfs:// NameNode:port/path)。 NameNode是保持羣集中所有可用數據節點的軌跡以及每個HDFS塊的位置。你不需要手工處理。在客戶端收到每個塊的位置後,它將能夠直接聯繫數據節點以檢索數據。 – RojoSam
但是,如果您的兩個羣集都有不同的HDFS版本,那麼這兩個羣集都不能共享,HDFS版本不保證向後兼容性。在這種情況下,解決方案是使用HftpFileSystem從源讀取,因爲此API僅用於讀取。這個API保證兼容性版本 – RojoSam