You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nutch.apache.org by "Sebastian Nagel (JIRA)" <ji...@apache.org> on 2017/12/08 09:41:00 UTC

[jira] [Commented] (NUTCH-2474) CrawlDbReader -stats fails with ClassCastException

    [ https://issues.apache.org/jira/browse/NUTCH-2474?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16283266#comment-16283266 ] 

Sebastian Nagel commented on NUTCH-2474:
----------------------------------------

The problem is that the CrawlDbStatCombiner is written under the assumption that is called exactly once between mapper and reducer. However, this assumption is wrong: "The Combiner may be called 0, 1, or many times on each key between the mapper and reducer." ([discussion on Hadoop user mailing list|http://mail-archives.apache.org/mod_mbox/hadoop-common-user/200901.mbox/%3c45C47273-8402-4EC8-8215-E2F2BBA05132@yahoo-inc.com%3e])

The combiner emits for multiple values of score, fetch time, fetch interval the minimum, maximum, sum (and with NUTCH-2470 also a T-Digest structure to estimate quantiles). In distributed mode with a large CrawlDb it may be called many times and receives min/max/sum as input which is just summed up in the else-clause. Summing up min/max could be the reason for NUTCH-2297.

> CrawlDbReader -stats fails with ClassCastException
> --------------------------------------------------
>
>                 Key: NUTCH-2474
>                 URL: https://issues.apache.org/jira/browse/NUTCH-2474
>             Project: Nutch
>          Issue Type: Bug
>          Components: crawldb
>    Affects Versions: 1.14
>         Environment: Java 8, distributed mode: Hadoop CDH 5.13.0
>            Reporter: Sebastian Nagel
>            Priority: Critical
>             Fix For: 1.14
>
>
> In distributed mode CrawlDbReader / readdb -stats fails with a ClassCastException in the combiner:
> {noformat}
> 17/12/08 04:57:13 INFO mapreduce.Job: Task Id : attempt_1512553291624_0022_m_000039_0, Status : FAILED
> Error: java.lang.ClassCastException: org.apache.hadoop.io.FloatWritable cannot be cast to org.apache.hadoop.io.LongWritable
>         at org.apache.nutch.crawl.CrawlDbReader$CrawlDbStatCombiner.reduce(CrawlDbReader.java:296)
>         at org.apache.nutch.crawl.CrawlDbReader$CrawlDbStatCombiner.reduce(CrawlDbReader.java:222)
>         at org.apache.hadoop.mapred.Task$OldCombinerRunner.combine(Task.java:1639)
>         at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.mergeParts(MapTask.java:1946)
>         at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1514)
>         at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:466)
>         at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
> {noformat}
> FloatWritables are used since NUTCH-2470, so that's when this bug was introduced.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)