我有几个Spark作业,包括批处理作业和Stream作业,以处理系统日志并分析它们。我们使用Kafka作为连接每个工作的管道。
一旦升级到Spark 2.1.0 + Spark Kafka Streaming 010,我发现一些作业(批处理或流式处理)随机抛出异常(在运行几个小时后或在20分钟内运行)。谁能给我一些关于如何找出真正根本原因的建议? (看起来有很多帖子正在讨论这个,但解决方案对我来说似乎不是很有用......)
这是由于Spark配置问题还是代码错误?我无法粘贴所有工作代码,因为太多了。
00:30:04,510 WARN - 17/07/22 00:30:04 WARN TaskSetManager:阶段1518490.0中失去的任务60.0(TID 338070,10.133.96.21,执行器0):java.io.FileNotFoundException:/ mnt / mesos / WORK_DIR /从站/ 20160924-021501-274760970-5050-7646-S2 /框架/ 40aeb8e5-e82a-4df9-b034-8815a7a7564b-2543 /执行器/ 0 /运行/ fd15c15d-2511-4f37-a106-27431f583153 / blockmgr- a0e0e673-f88b-4d12-a802-c35643e6c6b2 / 33 / shuffle_2090_60_0.index.b66235be-79be-4455-9759-1c7ba70f91f6(没有此类文件或目录) 00:30:04,510 WARN - at java.io.FileOutputStream.open0(Native Method) 00:30:04,510 WARN - 在java.io.FileOutputStream.open(FileOutputStream.java:270) 00:30:04,510 WARN - 在java.io.FileOutputStream。(FileOutputStream.java:213) 00:30:04,510 WARN - 在java.io.FileOutputStream。(FileOutputStream.java:162) 00:30:04,510 WARN - at org.apache.spark.shuffle.IndexShuffleBlockResolver.writeIndexFileAndCommit(IndexShuffleBlockResolver.scala:144) 00:30:04,510 WARN - at org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:128) 00:30:04,510 WARN - at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96) 00:30:04,510 WARN - at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53) 00:30:04,510 WARN - at org.apache.spark.scheduler.Task.run(Task.scala:99) 00:30:04,510 WARN - at org.apache.spark.executor.Executor $ TaskRunner.run(Executor.scala:282) 00:30:04,510 WARN - 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 00:30:04,510 WARN - at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 00:30:04,510 WARN - 在java.lang.Thread.run(Thread.java:748)
答案 0 :(得分:0)
我终于找到了根本原因。 Spark Jobs完全没有问题。 我们有一个crontab错误地清理/ mnt中的临时存储并错误地删除了spark缓存文件。