磁盘损坏导致datanode异常结束

来源:互联网 发布:sql rownum用法 编辑:程序博客网 时间:2024/05/16 23:42
集群datanode节点挂掉一个。错误如下:
[plain] view plaincopy
  1. 2013-11-18 02:01:13,730 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(192.168.1.190:50010, storageID=DS-155659652-192.168.1.190-50010-1383619740465, infoPort=50075, ipcPort=50020):DataXceiver  
  2. java.io.InterruptedIOException: Interruped while waiting for IO on channel java.nio.channels.SocketChannel[closed]. 0 millis timeout left.  
  3.         at org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:349)  
  4.         at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)  
  5.         at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)  
  6.         at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)  
  7.         at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)  
  8.         at java.io.BufferedInputStream.read(BufferedInputStream.java:317)  
  9.         at java.io.DataInputStream.read(DataInputStream.java:132)  
  10.         at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.readToBuf(BlockReceiver.java:292)  
  11.         at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.readNextPacket(BlockReceiver.java:382)  
  12.         at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receivePacket(BlockReceiver.java:403)  
  13.         at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receiveBlock(BlockReceiver.java:581)  
  14.         at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:406)  
  15.         at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:112)  
  16.         at java.lang.Thread.run(Thread.java:619)  
  17. 2013-11-18 02:01:14,731 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Waiting for threadgroup to exit, active threads is 0  
  18. 2013-11-18 02:01:28,233 INFO org.apache.hadoop.hdfs.server.datanode.DataBlockScanner: Verification succeeded for blk_106200183580401997_8995735  
  19. 2013-11-18 02:01:28,233 INFO org.apache.hadoop.hdfs.server.datanode.DataBlockScanner: Exiting DataBlockScanner thread.  
  20. 2013-11-18 02:01:28,234 INFO org.apache.hadoop.hdfs.server.datanode.FSDatasetAsyncDiskService: Shutting down all async disk service threads...  
  21. 2013-11-18 02:01:28,234 INFO org.apache.hadoop.hdfs.server.datanode.FSDatasetAsyncDiskService: All async disk service threads have been shut down.  
  22. 2013-11-18 02:01:28,242 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode  
  23. 2013-11-18 02:01:28,243 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:   
  24. /************************************************************  
  25. SHUTDOWN_MSG: Shutting down DataNode at node-128-190/192.168.1.190  
  26. ************************************************************/  

[plain] view plaincopy
  1. (DataXceiver.java:  
代码,相应代码如下:
[java] view plaincopy
  1. long startTime = DataNode.now();  
  2. switch ( op ) {  
  3. case DataTransferProtocol.OP_READ_BLOCK:  
  4.   readBlock( in );  
  5.   datanode.myMetrics.addReadBlockOp(DataNode.now() - startTime);  
  6.   if (local)  
  7.     datanode.myMetrics.incrReadsFromLocalClient();  
  8.   else  
  9.     datanode.myMetrics.incrReadsFromRemoteClient();  
  10.   break;  
  11. case DataTransferProtocol.OP_WRITE_BLOCK:  
  12.   writeBlock( in );  
  13.   datanode.myMetrics.addWriteBlockOp(DataNode.now() - startTime);  
  14.   if (local)  
  15.     datanode.myMetrics.incrWritesFromLocalClient();  
是网络io问题,但网卡没问题,联想到磁盘IO.把log向上找去,发现如下错误:
[plain] view plaincopy
  1. 2013-11-18 02:01:11,027 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: DataNode.handleDiskError: Keep Running: false  
  2. 2013-11-18 02:01:13,042 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: DataNode is shutting down.  
  3. DataNode failed volumes:/data3/dfs/data/current;  
  4. 2013-11-18 02:01:13,043 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in receiveBlock for block blk_-2665830487288  
  5. 167569_12466770 java.io.IOException: Read-only file system  
  6. 2013-11-18 02:01:13,043 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: PacketResponder blk_-2665830487288167569_12466770 1 :   
  7. Thread is interrupted.  
  8. 2013-11-18 02:01:13,043 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: PacketResponder 1 for block blk_-2665830487288167569_1  
  9. 2466770 terminating  
  10. 2013-11-18 02:01:13,043 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: writeBlock blk_-2665830487288167569_12466770 received   
  11. exception java.io.IOException: Read-only file system  
  12. 2013-11-18 02:01:13,043 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(192.168.1.190:50010, storageID=D  
  13. S-155659652-192.168.1.190-50010-1383619740465, infoPort=50075, ipcPort=50020):DataXceiver  
  14. java.io.IOException: Read-only file system  
  15.         at java.io.FileOutputStream.writeBytes(Native Method)  
  16.         at java.io.FileOutputStream.write(FileOutputStream.java:260)  
  17.         at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receivePacket(BlockReceiver.java:480)  
  18.         at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receiveBlock(BlockReceiver.java:581)  
  19.         at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:406)  
  20.         at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:112)  
  21.         at java.lang.Thread.run(Thread.java:619)  
未作修改,重启datanode,发现如下错误。印证了上面的想法:
[plain] view plaincopy
  1. 2013-11-18 14:58:56,962 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties  
  2. 2013-11-18 14:58:57,005 INFO org.apache.hadoop.metrics2.impl.MetricsSinkAdapter: Sink ganglia started  
  3. 2013-11-18 14:58:57,020 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.  
  4. 2013-11-18 14:58:57,022 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).  
  5. 2013-11-18 14:58:57,022 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started  
  6. 2013-11-18 14:58:57,124 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.  
  7. 2013-11-18 14:58:57,308 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir: can not create directory: /data3/dfs/data  
  8. 2013-11-18 14:58:57,829 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: org.apache.hadoop.util.DiskChecker$DiskErrorException: Invalid value for volsFailed : 1 , Volumes tolerated : 0  
  9.         at org.apache.hadoop.hdfs.server.datanode.FSDataset.<init>(FSDataset.java:974)  
  10.         at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:403)  
  11.         at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:309)  
  12.         at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1651)  
  13.         at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1590)  
  14.         at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1608)  
  15.         at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)  
  16.         at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)  
  17.   
  18. 2013-11-18 14:58:57,831 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:   

在hdfs-site.xml里屏蔽掉坏磁盘。搞定。
0 0
原创粉丝点击