Hadoop distcp异常

Hadoop distcp异常,hadoop,distcp,Hadoop,Distcp,我们正在使用dictcp将数据从CDH4复制到CDH5。当我们在CDH5 destination namenode上运行该命令时,我们得到以下异常。如果您已经遇到问题并知道解决方案,请告诉我。谢谢 5/01/05 18:15:47 ERROR tools.DistCp: Exception encountered org.apache.hadoop.ipc.RemoteException(java.lang.NoSuchMethodError): org.apache.hadoop.net.N

我们正在使用dictcp将数据从CDH4复制到CDH5。当我们在CDH5 destination namenode上运行该命令时,我们得到以下异常。如果您已经遇到问题并知道解决方案,请告诉我。谢谢

5/01/05 18:15:47 ERROR tools.DistCp: Exception encountered 
org.apache.hadoop.ipc.RemoteException(java.lang.NoSuchMethodError): org.apache.hadoop.net.NetworkTopology.pseudoSortByDistance(Lorg/apache/hadoop/net/Node;[Lorg/apache/hadoop/net/Node;)V
at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.sortLocatedBlocks(DatanodeManager.java:354)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1618)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:482)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:322)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:587)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1026)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)

at org.apache.hadoop.ipc.Client.call(Client.java:1411)
at org.apache.hadoop.ipc.Client.call(Client.java:1364)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206)
at sun.proxy.$Proxy14.getBlockLocations(Unknown Source)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getBlockLocations(ClientNamenodeProtocolTranslatorPB.java:246)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at sun.proxy.$Proxy15.getBlockLocations(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient.callGetBlockLocations(DFSClient.java:1179)
at org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:1169)
at org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:1159)
at org.apache.hadoop.hdfs.DFSInputStream.fetchLocatedBlocksAndGetLastBlockLength(DFSInputStream.java:270)
at org.apache.hadoop.hdfs.DFSInputStream.openInfo(DFSInputStream.java:237)
at org.apache.hadoop.hdfs.DFSInputStream.<init>(DFSInputStream.java:230)
at org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:1457)
at org.apache.hadoop.hdfs.DistributedFileSystem$3.doCall(DistributedFileSystem.java:301)
at org.apache.hadoop.hdfs.DistributedFileSystem$3.doCall(DistributedFileSystem.java:297)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:297)
at org.apache.hadoop.io.SequenceFile$Reader.openFile(SequenceFile.java:1832)
at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1752)
at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1773)
at org.apache.hadoop.io.SequenceFile$Sorter$SortPass.run(SequenceFile.java:2825)
at org.apache.hadoop.io.SequenceFile$Sorter.sortPass(SequenceFile.java:2785)
at org.apache.hadoop.io.SequenceFile$Sorter.sort(SequenceFile.java:2733)
at org.apache.hadoop.io.SequenceFile$Sorter.sort(SequenceFile.java:2774)
at org.apache.hadoop.tools.util.DistCpUtils.sortListing(DistCpUtils.java:356)
at org.apache.hadoop.tools.CopyListing.validateFinalListing(CopyListing.java:145)
at org.apache.hadoop.tools.CopyListing.buildListing(CopyListing.java:91)
at org.apache.hadoop.tools.GlobbedCopyListing.doBuildListing(GlobbedCopyListing.java:90)
at org.apache.hadoop.tools.CopyListing.buildListing(CopyListing.java:84)
at org.apache.hadoop.tools.DistCp.createInputFileListing(DistCp.java:353)
at org.apache.hadoop.tools.DistCp.execute(DistCp.java:160)
at org.apache.hadoop.tools.DistCp.run(DistCp.java:121)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.tools.DistCp.main(DistCp.java:401)
5/01/05 18:15:47错误工具。DistCp:遇到异常
RemoteException(java.lang.NoSuchMethodError):org.apache.hadoop.net.NetworkTopology.pseudoSortByDistance(Lorg/apache/hadoop/net/Node;[Lorg/apache/hadoop/net/Node;)V
位于org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.sortLocatedBlocks(DatanodeManager.java:354)
位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1618)
位于org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:482)
位于org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:322)
位于org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
在org.apache.hadoop.ipc.protobufrpceengine$Server$protobufrpinvoker.call(protobufrpceengine.java:587)
位于org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1026)
位于org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
位于org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:416)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
位于org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)
位于org.apache.hadoop.ipc.Client.call(Client.java:1411)
位于org.apache.hadoop.ipc.Client.call(Client.java:1364)
位于org.apache.hadoop.ipc.protobufrpceengine$Invoker.invoke(protobufrpceengine.java:206)
位于sun.proxy.$Proxy14.getBlockLocations(未知源)
位于org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getBlockLocations(ClientNamenodeProtocolTranslatorPB.java:246)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
位于org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
位于org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
位于sun.proxy.$Proxy15.getBlockLocations(未知源)
位于org.apache.hadoop.hdfs.DFSClient.callGetBlockLocations(DFSClient.java:1179)
位于org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:1169)
位于org.apache.hadoop.hdfs.DFSClient.getLocatedBlocks(DFSClient.java:1159)
位于org.apache.hadoop.hdfs.DFSInputStream.fetchLocatedBlocksAndGetLastBlockLength(DFSInputStream.java:270)
位于org.apache.hadoop.hdfs.DFSInputStream.openInfo(DFSInputStream.java:237)
位于org.apache.hadoop.hdfs.DFSInputStream。(DFSInputStream.java:230)
位于org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:1457)
位于org.apache.hadoop.hdfs.DistributedFileSystem$3.doCall(DistributedFileSystem.java:301)
位于org.apache.hadoop.hdfs.DistributedFileSystem$3.doCall(DistributedFileSystem.java:297)
位于org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
位于org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:297)
位于org.apache.hadoop.io.SequenceFile$Reader.openFile(SequenceFile.java:1832)
位于org.apache.hadoop.io.SequenceFile$Reader。(SequenceFile.java:1752)
位于org.apache.hadoop.io.SequenceFile$Reader。(SequenceFile.java:1773)
位于org.apache.hadoop.io.SequenceFile$Sorter$SortPass.run(SequenceFile.java:2825)
位于org.apache.hadoop.io.SequenceFile$Sorter.sortPass(SequenceFile.java:2785)
位于org.apache.hadoop.io.SequenceFile$Sorter.sort(SequenceFile.java:2733)
位于org.apache.hadoop.io.SequenceFile$Sorter.sort(SequenceFile.java:2774)
位于org.apache.hadoop.tools.util.DistCpUtils.sortListing(DistCpUtils.java:356)
位于org.apache.hadoop.tools.CopyListing.validateFinalListing(CopyListing.java:145)
位于org.apache.hadoop.tools.CopyListing.buildListing(CopyListing.java:91)
位于org.apache.hadoop.tools.GlobbedCopyListing.doBuildListing(GlobbedCopyListing.java:90)
位于org.apache.hadoop.tools.CopyListing.buildListing(CopyListing.java:84)
位于org.apache.hadoop.tools.DistCp.createInputFileListing(DistCp.java:353)
位于org.apache.hadoop.tools.DistCp.execute(DistCp.java:160)
位于org.apache.hadoop.tools.DistCp.run(DistCp.java:121)
位于org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
位于org.apache.hadoop.tools.DistCp.main(DistCp.java:401)

这似乎是因为两个集群之间的协议不匹配

由于源和目标中使用的Hadoop版本不同,因此不能通过使用hdfs://Cluster2-Namenode1:Port/ 在source或destination中,您必须使用webhdfs://而不是简单的hdfs,如下所示

hadoop distcp /source-directory webhdfs://Cluster2-Namenode1:50070/dir/  

请注意,50070是默认的namenode Web UI,如果您为HDFS namenode Web UI配置了不同的端口,请将50070修改为您修改的端口。

还有一点。要使用它,您必须在群集中启用webhdfs