hbase—从cdh3到cdh4的hadoop hdfs迁移

daupos2t  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(414)

我有两个hadoop集群,我的目标是使用hadoop-cp将所有hdfs文件从cluster1复制到cluster2
集群1:hadoop 0.20.2-cdh3u4
集群2:Hadoop2.0.0-cdh4.1.1
现在,即使只是对cluster2上的cluster1远程运行dfs-ls命令,如下所示:

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

我得到一个例外:
ls:本地异常失败:java.io.ioexception:响应为null。;主机详细信息:本地主机为:“cluster2 namenode/10.21..”;目的主机为:“cluster1 namenode”:8020;
我认为这是由于hadoop版本的不同,有什么解决方法吗?我的旧环境cluster1没有部署mapred,这排除了所有distcp、bhase copytable选项。而且在cluster1上也没有hbase复制功能。我正在努力想办法将hdfs数据从cluster1迁移到cluster2,因为每个人都在谈论将cdh3升级到cdh4,而不是从3迁移到4。

j2datikz

j2datikz1#

对于盛杰的回答,我的几点体会是:
它可以从cdh4和cdh3运行,重要的是命令在目标集群上运行。
运行时 distcp 通信使用 hftp 作为来源和 hdfs 作为目标(因为hftp是只读的!)所以命令看起来像:
hadoop分布hftp://source.cluster1/path hdfs://destination.cluster1/path

uqcuzwp8

uqcuzwp82#

在cloudera cdh用户邮件线程中详细讨论了这一点:
https://groups.google.com/a/cloudera.org/forum/?fromgroups=#!主题/cdh用户/get1rtbrvcw
总之,
常规dfs命令,如 dfs -cp cdh3和cdh4之间的连接将不起作用,因为两者都有不同的协议版本(并且在常规rpc调用中彼此不兼容)。
distcp可以用于跨集群复制hdfs数据,甚至可以从cdh3复制到cdh4,但这里有几个先决条件:您需要在cdh4集群上运行distcp命令,而且cdh4集群需要部署/提供mapred。cdh3集群不一定需要Map。
在运行distcp命令时,不要对源路径使用hdfs,对源路径使用hftp,而对目标路径使用hftp(因为hftp是只读的,您需要对目标路径进行写访问),因此该命令如下所示:
hadoop分布hftp://hadoop-namenode.cluster1/hbase hftp://hadoop-namenode.cluster2/hbase

相关问题