Spark vs Flink内存不足

Pa *_* Rö 14 memory apache-spark apache-flink

我已经构建了Spark和Flink k-means应用程序.我的测试用例是在3节点集群上对100万个点进行聚类.

当内存中的瓶颈开始时,Flink开始外包到磁盘并且工作缓慢但工作正常.但是,如果内存已满并且再次启动(无限循环?),Spark会丢失执行程序.

我试着在邮件列表的帮助下自定义内存设置,谢谢.但Spark仍然无效.

是否有必要设置任何配置?我的意思是Flink工作的内存很低,Spark也必须能够; 或不?

Mat*_*Sax 19

我不是Spark专家(我是Flink的贡献者).据我所知,如果没有足够的主内存,Spark无法溢出到磁盘.这是Flink over Spark的一个优势.然而,Spark宣布了一个新项目称为"Tungsten",以启用类似于Flink的托管内存.我不知道这个功能是否已经可用:https://databricks.com/blog/2015/04/28/project-tungsten-bringing-spark-closer-to-bare-metal.html

有一些关于Spark内存问题的问题(带有"火花内存不足"的互联网搜索也会产生很多结果):

spark java.lang.OutOfMemoryError:Java堆空间 当按键分组 Spark内存不足Spark会耗尽内存

也许其中一个有帮助.

  • Spark可以将数据序列化到磁盘,但是需要将部分数据放在JVM的堆上以进行某些操作.如果堆的大小不足,则作业将以OutOfMemoryError消失.相比之下,Flink的引擎不会在堆上累积大量对象,而是将它们存储在专用的内存区域中.所有操作符都以这样的方式实现,即它们可以处理非常少的内存并且可以溢出到磁盘.这篇[博客文章](http://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html)讨论了Flink的内存管理及其如何对二进制数据进行操作. (4认同)