Very naively looking at the code, the exception you see is happening in the
write path, on the way to sending a copy of your data to a second data
node.  One data node is pipelining the data to another, and that connection
is failing.  The fact that "DatanodeRegistration" is mentioned in the
exception is a red herring: that's merely the text that the datanode prints
for every exception that's thrown during a server response.  It's
frustrating that the exception message doesn't actually mention what host
it's trying to connect to.

Some quick avenues for debugging:

It sounds like you've identified a specific data node that isn't behaving.
Is the exception that you've pasted in coming from that DataNode or from
another?

Can you tell if the DataNode is listening on the right ports?  You might try
"sudo netstat -pl | grep java" and check to see that the DataNode is
listening on 50010 (I believe that's the default).

You might also try strace on the process that's showing the "no route to
host" error, to catch the system call fail.

You could, of course, instrument the code to do a try/catch around the
relevant block in DataNode.java, to find out what host/port the connection
is failing on.

Reply via email to