2012-12-07 67 views
1

我有兩個Hadoop集羣,我的目標是使用Hadoop的-cp所有HDFS文件從cluster1中複製到Cluster2中Hadoop的HDFS遷移CDH4

Cluster1中: Hadoop的0.20。 2 cdh3u4

Cluster2中: 的Hadoop 2.0.0 cdh4.1.1

現在,即使只是運行DFS -ls

hadoop fs -ls hdfs://cluster1-namenode:8020/hbase 

我得到異常:

LS:無法在本地異常:java.io.IOException異常:對如下cluster1中遠程對Cluster2中命令響應爲null;主機詳細信息:本地主機是:「cluster2-namenode/10.21.xxx.xxx」;目標主機是:「cluster1-namenode」:8020;

我認爲這是由於Hadoop的版本比較,有什麼解決辦法對此有何看法?我的老環境cluster1中不具有mapred部署這就排除了所有的DistCp使用,bhase copytable選項。而且hbase複製功能在cluster1上也不可用。我很努力,因爲每個人都在談論升級CDH3到CDH4而不是從3遷移到4

回答

1

在Cloudera的CDH用戶郵件討論過這個更想辦法從cluster1中Cluster2中遷移HDFS數據螺紋:

https://groups.google.com/a/cloudera.org/forum/?fromgroups=#!topic/cdh-user/GeT1RTbRVcw

綜上所述,

  1. 定期DFS命令,如CDH3和CDH4之間將無法​​正常工作,都有不同的協議版本(並與通過普通的RPC調用另一個不兼容)。

  2. Distcp可以用來複制hdfs數據跨集羣,甚至從cdh3到cdh4,但這裏有一些先決條件:您需要在cdh4集羣上運行distcp命令,同時cdh4集羣也需要映射部署/可用。 cdh3集羣不一定需要映射。

  3. 運行distcp命令時,不要使用hdfs作爲源路徑,使用hftp作爲源路徑,而使用hftp作爲目標路徑(因爲hftp是READ-ONLY,所以需要對目標路徑進行寫訪問)因此命令看起來像:

    Hadoop的DistCp使用HFTP://hadoop-namenode.cluster1/hbase HFTP://hadoop-namenode.cluster2/hbase

1

從我的經驗,幾個音符,爲聖潔的答案:

  1. 它可從CDH4和CDH3運行,重要的是,該命令在目標集羣上運行。

  2. 運行distcp當commnad使用hftp源和hdfs作爲目標(因爲HFTP是隻讀!)因此命令看起來像:

Hadoop的DistCp使用HFTP://source.cluster1/路徑hdfs://destination.cluster1/path