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 没有执行的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop API 在尝试初始化集群以使用 DistCp 时抛出错误
某游戏厂商 hdfs 迁移 distcp failing write attempt Tried pipline recovery 5 times without success 问题排查