当前位置: 首页 > 知识库问答 >
问题:

无法摆脱著名的DataStreamer异常:org.apache.hadoop.ipc.RemoteException:错误

公良理
2023-03-14

我正在运行hadoop集群,Ubuntu主机作为主从,虚拟机作为另一个从运行在它上(2节点集群)。

似乎这个问题的解决方案在没有数据节点启动时就应该解决,对我来说不起作用。我试了那里解释的两种解决方案。

似乎当我手动将受影响的datanodes的命名空间ID等同于name node并启动集群时(链接帖子中的解决方案2),我仍然会得到相同的错误(DataStreamer异常)。接下来,其中一个datanode的日志显示了相同的不兼容namespaceIDs错误,但日志中显示的data节点的名称空间id与显示我的tmp/dfs/data/current/version文件的名称空间id不同(该文件没有更改,与tmp/dfs/name/current/version文件的名称空间id相同)

经过几个小时的调试,我仍然一无所知:(。

PS:

>

  • 从我的主机到从机没有连接问题

      null

    在org.apache.hadoop.ipc.client.call(client.java:1113)在org.apache.hadoop.ipc.rpc$invoker.invoke(rpc.java:229)在com.sun.proxy.$proxy1.addBlock(未知源)在sun.reflect.nativeMethodAccessorImpl.invoke0(原生方法)在sun.reflect.nativeMethodAccessorImpl.invoke(原生方法)在在org.apache.hadoop.hadoop.hadoop.io.retry.retryInvocationHandler.invokeMethod(retryInvocationHandler.java:85)(retryInvocationHandler.invoke(retryInvocationHandler.java:62)(retryInvocationHandler.java:62)在com.sun.proxy.$proxy1.AddBlock(未知源)在org.apache.hadoop.hdfs.dfsclient 3580)在org.apache.hadoop.hdfs.dfsclient$dfsoutputstream.access$2600(dfsclient.java:2783)在org.apache.hadoop.hdfs.dfsclient$dfSoutputStream$datastreamer.run(dfsclient.java:3023)

    14/05/04 04:12:54 WARN hdfs.dfsclient:null bad datanode[0]节点的错误恢复==null 14/05/04 04:12:54 WARN hdfs.dfsclient:无法获取块位置。源文件“/user/dsingh/mysample”-中止...put:java.io.ioException:文件/user/dsingh/mysample只能复制到0个节点,而不是1 14/05/04 04:12:54错误hdfs.dfsclient:关闭文件/user/dsingh/mysample org.apache.hadoop.ipc.remoteException:java.ioException:文件/user/dsingh/mysample只能复制到0个节点,而不是org.apache.hadoop.hdfs.server.getadditionalblock(fsnamesystem.java:1920)nameNode.java:783)在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:606)在服务器$handler$1.run(server.java:1428)在java.security.AccessController.doprivileged(本机方法),地址为javax.security.auth.subject.doas(subject.java:415),地址为org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation.java:1190),地址为org.apache.hadoop.ipc.server$handler.run(server.java:1426)

    在org.apache.hadoop.ipc.client.call(client.java:1113)在org.apache.hadoop.ipc.rpc$invoker.invoke(rpc.java:229)在com.sun.proxy.$proxy1.addBlock(未知源)在sun.reflect.nativeMethodAccessorImpl.invoke0(原生方法)在sun.reflect.nativeMethodAccessorImpl.invoke(原生方法)在在org.apache.hadoop.hadoop.hadoop.io.retry.retryInvocationHandler.invokeMethod(retryInvocationHandler.java:85)(retryInvocationHandler.invoke(retryInvocationHandler.java:62)(retryInvocationHandler.java:62)在com.sun.proxy.$proxy1.AddBlock(未知源)在org.apache.hadoop.hdfs.dfsclient 3580)在org.apache.hadoop.hdfs.dfsclient$dfsoutputstream.access$2600(dfsclient.java:2783)在org.apache.hadoop.hdfs.dfsclient$dfSoutputStream$datastreamer.run(dfsclient.java:3023)

    任何线索都会帮助我。

  • 共有1个答案

    华升
    2023-03-14

    在这个问题上工作了几个小时之后。我最终放弃了,在我的知识宇宙中仍然没有解决。]

    但好的一点是,我没有在同一台机器上使用虚拟盒子作为从机,而是将另一台ubuntu机器与我的主机连接起来,所有事情都像魅力一样工作:)我想问题可能与虚拟机存储的有限虚拟内存分配有关(在我的情况下,它不到500MB),我在某个地方读到,集群中的每个节点应该至少有10 GB的可用空间来保持HDFS的快乐。

    如果可能的话,我要在两台独立的机器上尝试hadoop集群,而不是在同一台主机上使用虚拟机

     类似资料:
    • 我是spring boot的新手,我正在通过ControllerAdvisor向控制器添加自定义异常。在MyController.class中,我正在执行三个操作 null 下面的类是特定于未找到的异常的。 在application.properties中,我添加了以下三个条件 当我使用GET API http://localhost:8080/ticke访问我的服务器时,它应该抛出bad req

    • 如上所述,我的XSL中只定义了一个命名空间,如下所示 xml: xsi="w3.org/2001/XMLSchema-instance" 但是,我的输出XML有2个命名空间,如下所示 xsi="w3.org/2001/XMLSchema-instance"xmlns: mea="ibm.com/maximo" 我可以摆脱xmlns: mea="ibm.com/maximo"

    • 问题内容: 我正在尝试更新服务器上的用户位置 使用此功能 这是代表 我有Optional(“”)和和变量,不能摆脱它。 任何想法如何做到这一点? 问题答案: 如果您像这样解开纬度和经度值… …然后您可以在函数中完全避免使用可选: 没错…除非您有充分理由强制拆开它们,否则应该养成安全地解开可选内容的习惯。而且,仅尝试摆脱可选内容以使代码可以编译并不是一个很好的理由。

    • 我有JavaWebService代码在我的eclipse。我使用了@WebService@Webmethod,@XmlElements,@XmlType,@XmlAccessorType 现在我正在使用cxf框架中的java2ws命令生成wsdl。这是命令 我的wsdl文件包含agr0作为我不想要的名称,因为当我将其导入SoapUI时。它正在字段周围添加标记。 下面是带有arg0的wsdl部分 下

    • 问题内容: 我正在使用express在nodejs上运行服务器。我似乎无法摆脱标题: 我想知道是否有任何方法可以摆脱此标头,还是我必须忍受它? 问题答案: 在Express> = 3.0.0rc5中: 这是一个简单的中间件,可以删除早期版本的Express中的标头:

    • 我正在使用“io”的“graphql spqr spring boot starter”库版本0.0.4。利安根。图形QL’。我可以自定义错误。参考以下代码和屏幕截图: 型号: 服务等级: 自定义异常类: 然而,我不知道如何在获取数据(/saveStudent)时消除异常,如上面的消息字段截图所示。我知道我们可以有一个实现GraphQLErrorHandler(GraphqlJava kickst