我在Mapreduce作业中获得org.apache.hadoop.ipc.RemoteException:java.io.IOException?

我在Mapreduce作业中获得org.apache.hadoop.ipc.RemoteException:java.io.IOException?,java,hadoop,Java,Hadoop,我使用以下几点安装了hadoop 使用tar文件安装hadoop 创建hdfs用户和组并将其分配到hadoop文件夹 然后在/opt文件夹中为namenode和datanode创建hdfs目录 还设置了配置文件 但是当我试图运行hadoop-jar-hadoop-examples-1.0.0.jar pi 4 100时,我遇到了这个错误 2014-11-05 12:12:02,978 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery fo

我使用以下几点安装了hadoop

  • 使用tar文件安装hadoop
  • 创建hdfs用户和组并将其分配到hadoop文件夹
  • 然后在/opt文件夹中为namenode和datanode创建hdfs目录
  • 还设置了配置文件 但是当我试图运行hadoop-jar-hadoop-examples-1.0.0.jar pi 4 100时,我遇到了这个错误

    2014-11-05 12:12:02,978 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null 
    2014-11-05 12:12:02,978 WARN org.apache.hadoop.hdfs.DFSClient: Could not get block locations. Source file "/tmp/hadoop-hdfs/mapred/system/jobtracker.info" - Aborting...
    2014-11-05 12:12:02,979 WARN org.apache.hadoop.mapred.JobTracker: Writing to file   hdfs://hostname:9000/tmp/hadoop-hdfs/mapred/system/jobtracker.info failed! 
    2014-11-05 12:12:02,979 WARN org.apache.hadoop.mapred.JobTracker: FileSystem is not ready yet!
    2014-11-05 12:12:02,982 WARN org.apache.hadoop.mapred.JobTracker: Failed to initialize recovery manager.
    
    org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /tmp/hadoop-hdfs/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
         at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1556)
         at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:696)
         at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:606)
         at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563)
         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388)
         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384)
         at java.security.AccessController.doPrivileged(Native Method)
         at javax.security.auth.Subject.doAs(Subject.java:415)
         at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1083)
         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)
    
         at org.apache.hadoop.ipc.Client.call(Client.java:1066)
         at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
         at com.sun.proxy.$Proxy5.addBlock(Unknown Source)
         at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:606)
         at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
         at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
         at com.sun.proxy.$Proxy5.addBlock(Unknown Source)
         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3507)
         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3370)
         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2700(DFSClient.java:2586)
         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2826)
    
    这里我想提到的一件事是,我已经将hdfs路径设置为
    /mnt
    direcotry,但hdfs仍然指向
    /tmp/hadoop hdfs

    请给出一些建议

    检查您尝试运行的操作节点的所有路径,这通常是由于提供了错误的输入/输出路径造成的

    另外,如果要重新运行工作流作业,请确保coordinator.xml(或job.xml)中提供的所有事件和属性都必须存在于job.properties中,因为与正常协调器作业运行(计划运行)相比,重新运行工作流作业不会引用job.xml


    你格式化你的名字节点了吗?检查是否已启动所有DataNode是的,我已格式化namenode。我删除了/tmp/hadoop hdfs/dfs/data和/tmp/hadoop hdfs/dfs/name目录的内容。同样的错误再次出现。我想知道为什么hadoop hdfs在/tmp目录中指向或存储数据,如果我将配置设置为/mnt direcorylooks,就像datanode有问题一样。可以检查所有datanode是否正常运行。是的datanode正在运行我可以在jps命令后看到它,并且我可以执行此命令hadoop fs-ls/successfully检查您的datanode(端口)是否阻塞namenode。