我已经构建了一个 Spark 和 Flink k-means 应用程序。我的测试用例是一个 3 节点集群上 100 万个点的集群。
当内存出现瓶颈时,Flink 开始外包到磁盘,工作缓慢但有效。但是,如果内存已满,Spark 会丢失执行程序并重新启动(无限循环?)。
我尝试在邮件列表的帮助下自定义内存设置,谢谢。但 Spark 仍然无法正常工作。
是否需要设置任何配置?我的意思是 Flink 在低内存的情况下工作,Spark 也必须能够;或不?
我已经构建了一个 Spark 和 Flink k-means 应用程序。我的测试用例是一个 3 节点集群上 100 万个点的集群。
当内存出现瓶颈时,Flink 开始外包到磁盘,工作缓慢但有效。但是,如果内存已满,Spark 会丢失执行程序并重新启动(无限循环?)。
我尝试在邮件列表的帮助下自定义内存设置,谢谢。但 Spark 仍然无法正常工作。
是否需要设置任何配置?我的意思是 Flink 在低内存的情况下工作,Spark 也必须能够;或不?
我不是 Spark 专家(我是 Flink 贡献者)。据我所知,如果没有足够的主内存,Spark 无法溢出到磁盘。这是 Flink 相对于 Spark 的优势之一。然而,Spark 宣布了一个名为“Tungsten”的新项目,以启用类似于 Flink 的托管内存。我不知道这个功能是否已经可用:https ://databricks.com/blog/2015/04/28/project-tungsten-bringing-spark-closer-to-bare-metal.html
有几个关于 Spark 内存不足问题的 SO 问题(互联网搜索“spark out of memory”也会产生很多结果):
spark java.lang.OutOfMemoryError: Java heap space Spark 按 key 分组时内存 不足 Spark out of memory
也许其中的帮助之一。