I've been able to reproduce this on multiple clusters. I'm basically doing a rolling restart of data nodes with 1 every 5-10+ minutes. However the region servers will just die. "hadoop fsck /" shows it is healthy, the web interface says all the data nodes are up, and region servers logs seem quiet. With this last cluster the region servers went down (so I restarted them) but the master could never reassign the root region and was simply stuck until I restarted the master. It is a little frustrating as it seems like it should be able to do this.

So here is the region server log. There is large gaps between the recovery and then it failing which may be due to my slow data node restarts.

12/02/06 18:33:35 WARN hdfs.DFSClient: Error Recovery for block blk_5522208212139439103_25405 in pipeline 10.130.163.92:50010, 10.131.67.12:50010, 10.130.145.236:50010: bad datanode 10.130.145.236:50010
**6 minute gap here**
12/02/06 18:39:20 WARN hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_5522208212139439103_25412java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:180)
    at java.io.DataInputStream.readLong(DataInputStream.java:399)
at org.apache.hadoop.hdfs.protocol.DataTransferProtocol$PipelineAck.readFields(DataTransferProtocol.java:120)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2634)

12/02/06 18:39:20 WARN hdfs.DFSClient: Error Recovery for block blk_5522208212139439103_25412 bad datanode[0] 10.130.163.92:50010 12/02/06 18:39:20 WARN hdfs.DFSClient: Error Recovery for block blk_5522208212139439103_25412 in pipeline 10.130.163.92:50010, 10.131.67.12:50010: bad datanode 10.130.163.92:50010 12/02/06 18:39:20 INFO ipc.Client: Retrying connect to server: /10.131.67.12:50020. Already tried 0 time(s).
**18 minute gap here**
12/02/06 18:57:11 WARN hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_5522208212139439103_25413java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:180)
    at java.io.DataInputStream.readLong(DataInputStream.java:399)
at org.apache.hadoop.hdfs.protocol.DataTransferProtocol$PipelineAck.readFields(DataTransferProtocol.java:120)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2634)
12/02/06 18:57:11 WARN hdfs.DFSClient: Error Recovery for block blk_5522208212139439103_25413 bad datanode[0] 10.131.67.12:50010
12/02/06 18:57:11 WARN hdfs.DFSClient: Error while syncing
java.io.IOException: All datanodes 10.131.67.12:50010 are bad. Aborting...
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2766)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$1600(DFSClient.java:2305)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2477)
12/02/06 18:57:11 FATAL wal.HLog: Could not append. Requesting close of hlog
java.io.IOException: Reflection
at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:147)
    at org.apache.hadoop.hbase.regionserver.wal.HLog.sync(HLog.java:981)
    at 
org.apache.hadoop.hbase.regionserver.wal.HLog$LogSyncer.run(HLog.java:958)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:145)
    ... 2 more
Caused by: java.io.IOException: All datanodes 10.131.67.12:50010 are bad. 
Aborting...
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2766)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$1600(DFSClient.java:2305)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2477)
12/02/06 18:57:11 ERROR wal.HLog: Error while syncing, requesting close of hlog

Any ideas as to why this is happening? It seems like the region servers are fine until I restart the last data node--I've tested this several times now since starting the email and the problems with the RS start after the last data node is restarted. Is it somehow remembering that a data node was bad and even though it has been restarted and successfully serving data for 15+ minutes? So when I restart the last node it just gives up? fsck says that everything is healthy and fully replicated.

~Jeff

On 2/6/2012 11:28 AM, Jeff Whiting wrote:
I was increasing the storage on some of my data nodes and thus had to do a restart of the data node. I use cdh3u2 and ran "/etc/init.d/hadoop-0.20-datanode restart" (I don't think this is a cdh problem). Unfortunately doing the restart caused region servers to go offline. Is this expected behavior? It seems like should recover for those just fine without giving up and dying since there were other data nodes available. Here are the logs on the region server from when I restarted the data node to when it decided to give up. To give you a little background I'm running a small cluster with 4 region servers and 4 data nodes.

Thanks,
~Jeff

12/02/06 18:06:03 WARN hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_-4249058562504578427_18197java.io.IOException: Bad response 1 for block blk_-4249058562504578427_18197 from datanode 10.49.129.134:50010
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2664)

12/02/06 18:06:03 INFO hdfs.DFSClient: Error Recovery for block blk_-4249058562504578427_18197 waiting for responder to exit. 12/02/06 18:06:03 WARN hdfs.DFSClient: Error Recovery for block blk_-4249058562504578427_18197 bad datanode[2] 10.49.129.134:50010 12/02/06 18:06:03 WARN hdfs.DFSClient: Error Recovery for block blk_-4249058562504578427_18197 in pipeline 10.59.39.142:50010, 10.234.50.225:50010, 10.49.129.134:50010, 10.49.29.92:50010: bad datanode 10.49.129.134:50010 12/02/06 18:06:03 WARN wal.HLog: HDFS pipeline error detected. Found 3 replicas but expecting 4 replicas. Requesting close of hlog.
12/02/06 18:06:03 INFO wal.SequenceFileLogWriter: Using syncFs -- HDFS-200
12/02/06 18:06:03 WARN regionserver.ReplicationSourceManager: Replication 
stopped, won't add new log
12/02/06 18:06:03 INFO wal.HLog: Roll /hbase/.logs/ip-10-59-39-142.eu-west-1.compute.internal,60020,1328142685179/ip-10-59-39-142.eu-west-1.compute.internal%3A60020.1328549504988, entries=3644, filesize=12276680. New hlog /hbase/.logs/ip-10-59-39-142.eu-west-1.compute.internal,60020,1328142685179/ip-10-59-39-142.eu-west-1.compute.internal%3A60020.1328551563518

12/02/06 18:06:04 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink as 10.49.129.134:50010
12/02/06 18:06:04 INFO hdfs.DFSClient: Abandoning block 
blk_6156813298944908969_18211
12/02/06 18:06:04 INFO hdfs.DFSClient: Excluding datanode 10.49.129.134:50010
12/02/06 18:06:04 WARN wal.HLog: HDFS pipeline error detected. Found 3 replicas but expecting 4 replicas. Requesting close of hlog. 12/02/06 18:07:06 WARN hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_-165678744483388406_18211java.io.IOException: Bad response 1 for block blk_-165678744483388406_18211 from datanode 10.234.50.225:50010
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2664)

12/02/06 18:07:06 INFO hdfs.DFSClient: Error Recovery for block blk_-165678744483388406_18211 waiting for responder to exit. 12/02/06 18:07:06 WARN hdfs.DFSClient: Error Recovery for block blk_-165678744483388406_18211 bad datanode[2] 10.234.50.225:50010 12/02/06 18:07:06 WARN hdfs.DFSClient: Error Recovery for block blk_-165678744483388406_18211 in pipeline 10.59.39.142:50010, 10.49.29.92:50010, 10.234.50.225:50010: bad datanode 10.234.50.225:50010 12/02/06 18:09:21 WARN hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_-165678744483388406_18214java.io.IOException: Connection reset by peer
    at sun.nio.ch.FileDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:237)
    at sun.nio.ch.IOUtil.read(IOUtil.java:210)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
    at 
org.apache.hadoop.net.SocketInputStream$Reader.performIO(SocketInputStream.java:55)
    at 
org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:142)
    at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
    at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
    at java.io.DataInputStream.readFully(DataInputStream.java:178)
    at java.io.DataInputStream.readLong(DataInputStream.java:399)
at org.apache.hadoop.hdfs.protocol.DataTransferProtocol$PipelineAck.readFields(DataTransferProtocol.java:120)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2634)

12/02/06 18:09:21 INFO hdfs.DFSClient: Error Recovery for block blk_-165678744483388406_18214 waiting for responder to exit. 12/02/06 18:09:21 WARN hdfs.DFSClient: Error Recovery for block blk_-165678744483388406_18214 bad datanode[0] 10.59.39.142:50010 12/02/06 18:09:21 WARN hdfs.DFSClient: Error Recovery for block blk_-165678744483388406_18214 in pipeline 10.59.39.142:50010, 10.49.29.92:50010: bad datanode 10.59.39.142:50010 12/02/06 18:09:55 WARN hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_-165678744483388406_18221java.io.IOException: Connection reset by peer
    at sun.nio.ch.FileDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:237)
    at sun.nio.ch.IOUtil.read(IOUtil.java:210)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
    at 
org.apache.hadoop.net.SocketInputStream$Reader.performIO(SocketInputStream.java:55)
    at 
org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:142)
    at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
    at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
    at java.io.DataInputStream.readFully(DataInputStream.java:178)
    at java.io.DataInputStream.readLong(DataInputStream.java:399)
at org.apache.hadoop.hdfs.protocol.DataTransferProtocol$PipelineAck.readFields(DataTransferProtocol.java:120)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2634)

12/02/06 18:09:55 INFO hdfs.DFSClient: Error Recovery for block blk_-165678744483388406_18221 waiting for responder to exit. 12/02/06 18:09:56 WARN hdfs.DFSClient: Error Recovery for block blk_-165678744483388406_18221 bad datanode[0] 10.49.29.92:50010
12/02/06 18:09:56 WARN hdfs.DFSClient: Error while syncing
java.io.IOException: All datanodes 10.49.29.92:50010 are bad. Aborting...
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2766)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$1600(DFSClient.java:2305)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2477)
12/02/06 18:09:56 WARN hdfs.DFSClient: Error while syncing
java.io.IOException: All datanodes 10.49.29.92:50010 are bad. Aborting...
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2766)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$1600(DFSClient.java:2305)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2477)
12/02/06 18:09:56 FATAL wal.HLog: Could not append. Requesting close of hlog
java.io.IOException: Reflection
at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:147)
    at org.apache.hadoop.hbase.regionserver.wal.HLog.sync(HLog.java:981)
    at 
org.apache.hadoop.hbase.regionserver.wal.HLog$LogSyncer.run(HLog.java:958)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:145)
    ... 2 more
Caused by: java.io.IOException: All datanodes 10.49.29.92:50010 are bad. 
Aborting...
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2766)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$1600(DFSClient.java:2305)
    at 
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2477)
12/02/06 18:09:56 ERROR wal.HLog: Error while syncing, requesting close of hlog
java.io.IOException: Reflection
at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:147)
    at org.apache.hadoop.hbase.regionserver.wal.HLog.sync(HLog.java:981)
    at 
org.apache.hadoop.hbase.regionserver.wal.HLog$LogSyncer.run(HLog.java:958)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter.sync(SequenceFileLogWriter.java:145)
    ... 2 more
Caused by: java.io.IOException: All datanodes 10.49.29.92:50010 are bad. 
Aborting...


--
Jeff Whiting
Qualtrics Senior Software Engineer
je...@qualtrics.com

Reply via email to