在google/so上搜索之后-我还没有找到关于这个的好资源。
我正在运行spark streaming 1.2,kafka消费者使用java。当我进行更大的输入测试时,大约一半的阶段会失败:
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,一个flatmaptopair调用,它将kafka数据转换成javapairdstream,然后是groupbykeyandwindow来获取一些批,然后是foreachrdd调用,它将批写入数据存储。
所有数据流都设置为 .persist(StorageLevel.MEMORY_AND_DISK())
.
失败只存在于flatmaptopair调用中。对于这些,失败的阶段有1-9分钟不等的等待时间,分布非常(可疑?)平坦。
我找不到任何关于如何清除这些数据的信息-我在这里的用例中遗漏了什么吗?我可以盲目地做一些事情来确保所有阶段都快速运行,但我想了解导致这种情况发生的机制,如果这是阶段延迟的结果。
这个问题是同一个问题,但出版商并没有落后,所以受访者留下了答案。这个系统肯定正在备份,所以我认为这个问题占据了一个单独的空间。spark流:无法计算分割,找不到块
暂无答案!
目前还没有任何答案,快来回答吧!