【发布时间】:2012-01-08 06:37:59
【问题描述】:
在我们的 hadoop 设置中,当数据节点崩溃(或)hadoop 在数据节点上没有响应时,reduce 任务失败,无法从失败的节点读取(以下例外)。我认为 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)
【问题讨论】:
-
“NameNode 将没有最近 Heartbeat 的 DataNode 标记为已死,并且不会向它们转发任何新的 IO 请求。注册到死 DataNode 的任何数据不再可用于 HDFS。” HDFS Architecture
-
这些日志来自哪里?数据节点还是名称节点?
-
来自reduce任务,查看stacktrace。
-
你的复制因子是多少?你有多少个减速器?有多少个Datanode?span>
标签: hadoop mapreduce hadoop-streaming