hadoop真的能处理datanode故障吗?

时间:2011-11-28 20:40:30

标签: hadoop mapreduce hadoop-streaming

在我们的hadoop设置中,当datanode崩溃(或)hadoop对datanode没有响应时,reduce task无法从失败的节点读取(下面的例外)。我认为hadoop处理数据节点故障,这是创建hadoop的主要目的。是否有人遇到与他们的集群类似的问题?如果您有解决方案,请告诉我。

java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getInputStream(ReduceTask.java:1547)
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.setupSecureConnection(ReduceTask.java:1483)
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getMapOutput(ReduceTask.java:1391)
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.copyOutput(ReduceTask.java:1302)
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.run(ReduceTask.java:1234)

2 个答案:

答案 0 :(得分:2)

当mapreduce作业的任务失败时,Hadoop将在另一个节点上重试它 您可以查看jobtracker(:50030 / jobtracker.jsp)并查看列入黑名单的节点(其保持活动存在问题的节点)或钻取到正在运行/已完成的作业,并查看已杀死的任务/重试次数为以及死区,解除节点等。

答案 1 :(得分:1)

我在群集上遇到类似的问题,由于“内存不足”问题,某些节点上的执行任务失败。它们肯定在其他节点上重新启动。计算最终失败,因为它设计糟糕,导致所有节点内存不足,最终达到取消作业的阈值。