distcp 没有执行

Posted

技术标签:

【中文标题】distcp 没有执行【英文标题】:distcp is not executing 【发布时间】:2019-07-21 00:36:11 【问题描述】:

我正在尝试使用 distcp 命令将数据从一个 hdfs 集群复制到另一个。以下是我提交的命令

hadoop distcp hdfs://sourcenamenodehostname:50070/var/lib/hadoop-hdfs/distcptest.txt hdfs://destinationnamenodehostname:50070/var/lib/hadoop-hdfs

提交时我收到错误消息。请仔细阅读错误消息并指导我正确的方法。


19/02/27 04:28:19 INFO tools.OptionsParser: parseChunkSize: blocksperchunk false 19/02/27 04:28:20 错误工具。DistCp:无效参数: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyException):状态待机不支持操作类别READ。访问https://s.apache.org/sbnn-error 在 org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.checkOperation(StandbyState.java:88) 在 org.apache.hadoop.hdfs.server.namenode.NameNode$NameNodeHAContext.checkOperation(NameNode.java:1835) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkOperation(FSNamesystem.java:1515) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:4448) 在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:912) 在 org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getFileInfo(AuthorizationProviderProxyClientProtocol.java:533) 在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:862) 在 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2281) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2277) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:2275)

    at org.apache.hadoop.ipc.Client.call(Client.java:1504)
    at org.apache.hadoop.ipc.Client.call(Client.java:1441)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:230)
    at com.sun.proxy.$Proxy10.getFileInfo(Unknown Source)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:788)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:258)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:104)
    at com.sun.proxy.$Proxy11.getFileInfo(Unknown Source)
    at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:2168)
    at org.apache.hadoop.hdfs.DistributedFileSystem$20.doCall(DistributedFileSystem.java:1266)
    at org.apache.hadoop.hdfs.DistributedFileSystem$20.doCall(DistributedFileSystem.java:1262)
    at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
    at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1262)
    at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1418)
    at org.apache.hadoop.tools.DistCp.setTargetPathExists(DistCp.java:208)
    at org.apache.hadoop.tools.DistCp.run(DistCp.java:133)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.tools.DistCp.main(DistCp.java:493)

无效参数:状态待机不支持操作类别 READ。访问https://s.apache.org/sbnn-error 在 org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.checkOperation(StandbyState.java:88) 在 org.apache.hadoop.hdfs.server.namenode.NameNode$NameNodeHAContext.checkOperation(NameNode.java:1835) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkOperation(FSNamesystem.java:1515) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:4448) 在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:912) 在 org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getFileInfo(AuthorizationProviderProxyClientProtocol.java:533) 在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:862) 在 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2281) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2277) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:2275)

【问题讨论】:

【参考方案1】:

在我看来,其中一个名称节点(源)不健康,不接受入站连接来修改状态或新写入。看到这个 -

Invalid arguments: Operation category READ is not supported in state standby. 

【讨论】:

所以你建议我使用另一个名称节点? 您应该在这里做的两件事 - 为什么您的名称节点不健康?是的,您可以使用其他 HA 节点来运行 distCP Raunak,我尝试了两个名称节点,但仍然显示相同的错误。 我尝试使用 hadoop distcp hdfs://ipaddress of the source namenode:50070/var/lib/hadoop-hdfs/distcptest.txt hdfs://ipaddressof thedestnation namenode:50070/var/lib /hadoop-hdfs 这是我提交上述命令时得到的结果。请帮我解决这个问题。 PriviledgedActionException as:hdfs/hostname.of.the.sourceserver@EDA.domain.COM (auth:KERBEROS) 原因:java.io.EOFException 19/02/27 06:14:34 WARN ipc.Client: 连接到时遇到异常服务器:java.io.EOFException

以上是关于distcp 没有执行的主要内容,如果未能解决你的问题,请参考以下文章

一篇文章彻底搞定跨集群跨版本distcp的使用

Distcp 分布式拷贝

HDFS数据迁移解决方案之DistCp工具的巧妙使用

HDFS数据迁移解决方案之DistCp工具的巧妙使用

Hadoop API 在尝试初始化集群以使用 DistCp 时抛出错误

某游戏厂商 hdfs 迁移 distcp failing write attempt Tried pipline recovery 5 times without success 问题排查