如何将数据从cdh3集群迁移到(不同的)cdh4集群?

7kqas0il  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(408)

我想将数据从cdh3复制到cdh4(在不同的服务器上)。我的cdh4服务器设置为看不到cdh3,因此我必须将数据从cdh3推送到cdh4的上游(这意味着我无法从cdh4运行distcp命令来复制数据)。如何通过在较低版本的cdh3hadoop上运行命令将数据传递到cdh4'hdfs?这是不可能的吗?

bvk5enib

bvk5enib1#

在传输2个不同版本的hdfs时,必须使用distcp和以下命令(注意hftp):
hadoop分布hftp://source-namenode:50070/用户/hdfs://destination-namenode:8020/用户/

moiiocjp

moiiocjp2#

distcp仅在集群内。
我知道的唯一方法是“fs-get”,“fs-put”来表示每一个可以容纳本地磁盘的数据子集。

owfi6suc

owfi6suc3#

理想情况下,您应该能够使用distcp将数据从一个hdfs集群复制到另一个集群。

  1. 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的版本以及确切的命令。

cotxawn7

cotxawn74#

对于在两个不同版本的hadoop之间进行复制,通常会使用hftpfilesystem。这是一个只读文件系统,因此distcp必须在目标集群上运行(更具体地说,在可以写入目标集群的tasktracker上)。每个源都指定为hftp://(默认的dfs.http.address为:50070)。

相关问题