hadoop开发:HDFS上传文件失败原因

执行

[grid@hadoop001 hadoop-1.1.2]$ bin/hadoop fs -put ../input/* ./in

提示:

13/08/11 18:33:58 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ip      c.RemoteException: java.io.IOException: File /user/grid/in/input/test1.txt could on      ly be replicated to 0 nodes, instead of 1
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(F      SNamesystem.java:1639)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:7      36)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav      a:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor      Impl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:578)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1393)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1389)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformatio      n.java:1149)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1387)

        at org.apache.hadoop.ipc.Client.call(Client.java:1107)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
        at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav      a:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor      Impl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvo      cationHandler.java:85)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocation      Handler.java:62)
        at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DF      SClient.java:3686)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(D      FSClient.java:3546)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.j      ava:2749)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSCli      ent.java:2989)

13/08/11 18:33:58 WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0      ] nodes == null
13/08/11 18:33:58 WARN hdfs.DFSClient: Could not get block locations. Source file "      /user/grid/in/input/test1.txt" - Aborting...
put: java.io.IOException: File /user/grid/in/input/test1.txt could only be replicat      ed to 0 nodes, instead of 1
13/08/11 18:33:58 ERROR hdfs.DFSClient: Failed to close file /user/grid/in/input/te      st1.txt
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/grid/in/inpu      t/test1.txt could only be replicated to 0 nodes, instead of 1
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(F      SNamesystem.java:1639)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:7      36)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav      a:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor      Impl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:578)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1393)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1389)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformatio      n.java:1149)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1387)

        at org.apache.hadoop.ipc.Client.call(Client.java:1107)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
        at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav      a:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor      Impl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvo      cationHandler.java:85)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocation      Handler.java:62)
        at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DF      SClient.java:3686)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(D      FSClient.java:3546)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.j      ava:2749)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSCli      ent.java:2989)
查看文件列表,发现文件已经复制,但是大小为零

[grid@hadoop001 hadoop-1.1.2]$ bin/hadoop fs -ls ./in
Found 3 items
drwxr-xr-x   - grid supergroup          0 2013-08-11 18:33 /user/grid/in/input
-rw-r--r--   1 grid supergroup          0 2013-08-11 18:33 /user/grid/in/test1.txt
-rw-r--r--   1 grid supergroup          0 2013-08-11 18:33 /user/grid/in/test2.txt

分析:可以看文件列表,说明在namenode中已经定义文件名,但从错误日志可以看出,数据没有上传到数据节点datanode中,所以看到文件大小为零

解决:最后查找到原因为datanade的防火墙未关闭,运行关闭防火墙service iptables stop (centos下)命令

来自东子哥的Blog

海峡移动开发技术群:13734312
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值