当前位置: > Linux集群 > Hadoop >

hadoop上传文件到hdfs出错

时间:2015-01-07 22:05来源:linux.it.net.cn 作者:IT

通过命令:

 


  1. Hadoop fs  -put  /opt/program/userall20140828  hdfs://localhost:9000/tmp/tvbox/  

 

上传文件到hdfs是出现错误

 

 


 
  1. 14/12/11 17:57:49 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /tmp/tvbox/behavior_20141210.log could only be replicated to 0 nodes, instead of 1  
  2.         at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271)  
  3.         at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422) purpose  
  4.         at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)  
  5.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  6.         at java.lang.reflect.Method.invoke(Method.java:606)  
  7.         at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508)  
  8.         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)  
  9.         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)  
  10.         at java.security.AccessController.doPrivileged(Native Method)  
  11.         at javax.security.auth.Subject.doAs(Subject.java:415)  
  12.         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)  
  13.   
  14.         at org.apache.hadoop.ipc.Client.call(Client.java:740)  
  15.         at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)  
  16.         at com.sun.proxy.$Proxy0.addBlock(Unknown Source)  
  17.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  18.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  19.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  20.         at java.lang.reflect.Method.invoke(Method.java:606)  
  21.         at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)  
  22.         at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)  
  23.         at com.sun.proxy.$Proxy0.addBlock(Unknown Source)  
  24.         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:2937)  
  25.         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2819)  
  26.         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2102)  
  27.         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2288)  
  28.   
  29. 14/12/11 17:57:49 WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null  
  30. 14/12/11 17:57:49 WARN hdfs.DFSClient: Could not get block locations. Source file "/tmp/tvbox/behavior_20141210.log" - Aborting...  
  31. put: java.io.IOException: File /tmp/tvbox/behavior_20141210.log could only be replicated to 0 nodes, instead of 1  
  32. 14/12/11 17:57:49 ERROR hdfs.DFSClient: Exception closing file /tmp/tvbox/behavior_20141210.log : org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /tmp/tvbox/behavior_20141210.log could only be replicated to 0 nodes, instead of 1  
  33.         at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271)  
  34.         at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422)  
  35.         at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)  
  36.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  37.         at java.lang.reflect.Method.invoke(Method.java:606)  
  38.         at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508)  
  39.         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)  
  40.         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)  
  41.         at java.security.AccessController.doPrivileged(Native Method)  
  42.         at javax.security.auth.Subject.doAs(Subject.java:415)  
  43.         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)  
  44.   
  45. org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /tmp/tvbox/behavior_20141210.log could only be replicated to 0 nodes, instead of 1  
  46.         at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271)  
  47.         at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422)  
  48.         at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)  
  49.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  50.         at java.lang.reflect.Method.invoke(Method.java:606)  
  51.         at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508)  
  52.         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)  
  53.         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)  
  54.         at java.security.AccessController.doPrivileged(Native Method)  
  55.         at javax.security.auth.Subject.doAs(Subject.java:415)  
  56.         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)  
  57.   
  58.         at org.apache.hadoop.ipc.Client.call(Client.java:740)  
  59.         at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)  
  60.         at com.sun.proxy.$Proxy0.addBlock(Unknown Source)  
  61.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  62.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  63.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  64.         at java.lang.reflect.Method.invoke(Method.java:606)  
  65.         at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)  
  66.         at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)  
  67.         at com.sun.proxy.$Proxy0.addBlock(Unknown Source)  
  68.         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:2937)  
  69.         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2819)  
  70.         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2102)  
  71.         at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2288)  

 

网上找了一圈,大概由以下原因造成:

1、  防火墙问题(排除

查看iptables状态:

serviceiptables status

iptables开机自动启动:

开启: chkconfigiptables on 

关闭: chkconfigiptables off

iptables关闭服务:

开启: service iptablesstart 

关闭: service iptables stop

 

2、  添加节点的原因,也就是说需要先启动namenode,再启动datanode,然后启动jobtracker和tasktracker(排除)

1.   重新启动namenode

# hadoop-daemon.sh start namenode

starting namenode, logging to/usr/hadoop-0.21.0/bin/../logs/hadoop-root-namenode-www.keli.com.out

2.   重新启动datanode

# hadoop-daemon.sh start datanode

starting datanode, logging to/usr/hadoop-0.21.0/bin/../logs/hadoop-root-datanode-www.keli.com.out

         start-all.sh中的启动顺序是对的。

 

3、  磁盘空间问题(命中!!!)

解决步骤:

1.      通过命令df –ah查看空间使用情况,


 
  1. [root@localhost hadoop]# df -ah  
  2. Filesystem            Size  Used Avail Use% Mounted on  
  3. /dev/sda2              18G   15G  12M  100% /  
  4. proc                     0     0     0   -  /proc  
  5. sysfs                    0     0     0   -  /sys  
  6. devpts                   0     0     0   -  /dev/pts  
  7. tmpfs                 937M  224K  937M   1% /dev/shm  
  8. /dev/sda1             291M   37M  240M  14% /boot  
  9. none                     0     0     0   -  /proc/sys/fs/binfmt_misc  
  10. .host:/               196G  209M  196G   1% /mnt/hgfs  
  11. vmware-vmblock           0     0     0   -  /var/run/vmblock-fuse  
  12. gvfs-fuse-daemon         0     0     0   -  /root/.gvfs  

 

2.      备份清空hadoop/logs中的日志

再次查看空间使用情况,再次上传文件,ok,成功!

 

关于清空空间大小,清空logs后,还是使用了15G,应该还有其他地方可以继续清空,欢迎指教!

 


 
  1. [root@localhost hadoop]# df -ah  
  2. Filesystem            Size  Used Avail Use% Mounted on  
  3. /dev/sda2              18G   15G  2.1G  88% /  
  4. proc                     0     0     0   -  /proc  
  5. sysfs                    0     0     0   -  /sys  
  6. devpts                   0     0     0   -  /dev/pts  
  7. tmpfs                 937M  224K  937M   1% /dev/shm  
  8. /dev/sda1             291M   37M  240M  14% /boot  
  9. none                     0     0     0   -  /proc/sys/fs/binfmt_misc  
  10. .host:/               196G  209M  196G   1% /mnt/hgfs  
  11. vmware-vmblock           0     0     0   -  /var/run/vmblock-fuse  
  12. gvfs-fuse-daemon         0     0     0   -  /root/.gvfs  
  13.  

(责任编辑:IT)
------分隔线----------------------------