我们有一个spark 1.6.1应用程序,它从两个kafka主题获取输入并将结果写入另一个kafka主题。应用程序在第一个输入主题中接收一些大的(大约1MB)文件,从第二个输入主题接收一些简单的条件。如果条件满足,则将文件写入以状态保存的输出主题(我们使用mapWithState)。
逻辑适用于较少(几百)个输入文件,但是spark.rpc.askTimeout
失败,建议增加"[2016-09-06 17:36:05,491] [WARN] - [org.apache.spark.storage.MemoryStore] - Not enough space to cache rdd_2123_0 in memory! (computed 2.6 GB so far)"
。从默认值(120秒)增加到300秒后,运行时间更长,但在1小时后出现相同的错误。将值更改为500秒后,作业运行时间超过2小时。
注意:我们在本地模式下运行spark作业,kafka也在本地运行。此外,有时我看到警告{{1}}
现在,考虑到所有本地配置,300s似乎足够大。但是,任何想法,如何达到理想的超时值而不是仅使用基于测试的500或更高,因为我看到使用800s的崩溃案例和建议使用60000的案例?
答案 0 :(得分:3)
我遇到了同样的问题,我发现这个page说在繁重的工作负载下,将spark.network.timeout
(控制所有超时,也是RPC控制)设置为800是明智的。它解决了我的问题。