如何调整“spark.rpc.askTimeout”?

rak*_*esh 5 apache-spark spark-streaming

我们有一个 spark 1.6.1 应用程序,它从两个 kafka 主题中获取输入并将结果写入另一个 kafka 主题。应用程序在第一个输入主题中接收一些大(大约 1MB)文件,并从第二个输入主题接收一些简单的条件。如果满足条件,则将文件写入输出主题 else 中的状态(我们使用 mapWithState)。

该逻辑适用于较少(几百)数量的输入文件,但失败org.apache.spark.rpc.RpcTimeoutException并建议增加spark.rpc.askTimeout. 从默认值(120 秒)增加到 300 秒后,运行时间更长,但在 1 小时后因相同的错误而崩溃。把值改成500s后,工作正常运行了2个多小时。

注意:我们在本地模式下运行 spark 作业,而 kafka 也在机器本地运行。另外,有一段时间我看到警告"[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)"

现在,考虑到所有本地配置,300 秒似乎足够大了。但是任何想法,如何根据测试得出理想的超时值,而不是仅使用 500 秒或更高,因为我看到使用 800 秒的崩溃案例和建议使用 60000 秒的案例?

phc*_*aze 3

我遇到了同样的问题,我发现这个页面说,在繁重的工作负载下,明智的做法是设置spark.network.timeout(控制所有超时,还有 RPC 超时)为 800。目前它解决了我的问题。