Spark Streaming + Kafka:无法计算拆分,阻止输入...未找到

时间:2015-03-11 00:51:48

标签: java apache-spark apache-kafka spark-streaming

在Google / SO上挖掘之后 - 我还没有找到关于这个的好资源。

我正在使用Java与Kafka使用者一起运行Spark Streaming 1.2。当我进行更大的输入测试时,大约有一半的阶段失败了:

Job aborted due to stage failure: Task 0 in stage 505.0 failed 4 times, most recent failure: Lost task 0.3 in stage 505.0 (TID 9953, ec2-54-149-87-18.us-west-2.compute.amazonaws.com): java.lang.Exception: Could not compute split, block input-0-1426033579400 not found
    at org.apache.spark.rdd.BlockRDD.compute(BlockRDD.scala:51)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:263)
    at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:61)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:228)
    at org.apache.spark.rdd.FlatMappedRDD.compute(FlatMappedRDD.scala:33)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:263)
    at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:61)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:228)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
    at org.apache.spark.scheduler.Task.run(Task.scala:56)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:196)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

管道看起来像是来自Kafka的JavaPairRecieverInputDStream,一个flatkaToPair调用,它将Kafka数据转换为JavaPairDStream,然后是groupByKeyAndWindow以获取一些批次,然后是foreachRDD调用,将批量写入数据存储区。

所有DStream都设置为.persist(StorageLevel.MEMORY_AND_DISK())

失败完全在flatMapToPair调用中。对于这些,失败的阶段在一个非常(可疑的?)平面分布中等待时间为1-9分钟。

我找不到关于如何清除这些数据的任何内容 - 我在这里的用例中遗漏了什么?我可以盲目地做一些事情,试图确保所有阶段都快速运行,但我想了解导致这种情况发生的机制,如果它是由于延迟阶段的结果。

这个问题是同一个问题,但出版商并没有落后,因此受访者留下了答案。这个系统肯定会备份,所以我认为这个问题占据了一个单独的空间。 Spark Streaming: Could not compute split, block not found

0 个答案:

没有答案