我目前在 Spark 1.3 和 Python 2.7 上具有 50 个节点的集群上运行实时 Spark Streaming 作业。Spark 流上下文从 HDFS 中的目录读取,批处理间隔为 180 秒。以下是 Spark 作业的配置:
spark-submit --master yarn-client --executor-cores 5 --num-executors 10 --driver-memory 10g --conf spark.yarn.executor.memoryOverhead=2048 --conf spark.yarn.driver.memoryOverhead= 2048 --conf spark.network.timeout=300 --executor-memory 10g
这项工作在大多数情况下运行良好。但是,它在大约 15 小时后抛出 Py4j 异常,理由是它无法获得通信通道。
我尝试减小 Batch Interval 大小,但随后会产生处理时间大于 Batch Interval 的问题。
下面是错误的截图
我做了一些研究,发现这可能是来自此处SPARK-12617的 Socket 描述符泄漏的问题
但是,我无法解决该错误并解决它。有没有办法手动关闭可能阻止提供端口的打开连接。或者我是否必须对代码进行任何特定更改才能解决此问题。
TIA