hadoop hdfs 从 cdh3 迁移到 cdh4
Posted
技术标签:
【中文标题】hadoop hdfs 从 cdh3 迁移到 cdh4【英文标题】:hadoop hdfs migration from cdh3 to cdh4 【发布时间】:2012-12-07 13:18:38 【问题描述】:我有两个hadoop集群,我的目标是使用hadoop -cp将所有hdfs文件从cluster1复制到cluster2
集群 1: Hadoop 0.20.2-cdh3u4
集群 2: Hadoop 2.0.0-cdh4.1.1
现在,即使只是在 cluster2 上远程对 cluster1 运行 dfs -ls 命令,如下所示:
hadoop fs -ls hdfs://cluster1-namenode:8020/hbase
我遇到了异常:
ls: 本地异常失败: java.io.IOException: Response is null.;主机详情:本地主机为:“cluster2-namenode/10.21.xxx.xxx”;目的主机是:“cluster1-namenode”:8020;
我认为这是由于 hadoop 版本的不同,有什么解决方法吗?我的旧 environment-cluster1 没有部署 mapred,这排除了所有 distcp、bhase 可复制选项。而且 cluster1 上也没有 hbase 复制能力。我正在努力想办法将 hdfs 数据从 cluster1 迁移到 cluster2,因为每个人都在谈论将 cdh3 升级到 cdh4 而不是从 3 迁移到 4。 p>
【问题讨论】:
【参考方案1】:在 cloudera cdh 用户邮件线程中对此进行了更多讨论:
https://groups.google.com/a/cloudera.org/forum/?fromgroups=#!topic/cdh-user/GeT1RTbRVcw
总之,
CDH3 和 CDH4 之间的常规 DFS 命令(如 dfs -cp
)将不起作用,因为它们具有不同的协议版本(并且在常规 RPC 调用中彼此不兼容)。
Distcp 可用于跨集群复制 hdfs 数据,甚至从 cdh3 到 cdh4,但这里有一些先决条件:您需要在 cdh4 集群上运行 distcp 命令,cdh4 集群也需要部署/可用 mapred . cdh3集群不一定需要mapred。
在运行 distcp 命令时,不要使用 hdfs 作为源路径,使用 hftp 作为源路径,而使用 hftp 作为目标路径(因为 hftp 是只读的,您需要对目标路径进行写访问)所以命令看起来像:
hadoop distcp hftp://hadoop-namenode.cluster1/hbase hftp://hadoop-namenode.cluster2/hbase
【讨论】:
【参考方案2】:我对胜杰的回答的几点说明:
它可以从CDH4和CDH3运行,重要的是命令在目标集群上运行。
当运行distcp
commnad 时,使用hftp
作为源,hdfs
作为目标(因为 hftp 是只读的!)所以命令看起来像:
hadoop distcp hftp://source.cluster1/path hdfs://destination.cluster1/path
【讨论】:
以上是关于hadoop hdfs 从 cdh3 迁移到 cdh4的主要内容,如果未能解决你的问题,请参考以下文章