Spark Performance Tuning是指调整设置以记录系统使用的内存、内核和实例的过程。这一过程保证了Spark的完美性能,也避免了Spark中的资源瓶颈。
为了减少内存使用,您可能必须以序列化的形式存储spark rdd。数据序列化也决定了良好的网络性能。您可以通过以下方法获得良好的Spark性能:
Spark支持两种序列化库,如下:
在调优内存使用时,有三个方面非常突出:
减少内存消耗的一种方法是远离可能造成开销的java特性。这里有一些方法:
为了避免与之前由程序存储的rdd相关的大量“流失”,java将丢弃旧对象,以便为新对象创建空间。然而,通过使用具有更少对象的数据结构,成本大大降低。一个这样的例子就是使用int数组而不是链表。或者,您也可以使用序列化形式的对象,这样每个RDD分区就只有一个对象。
高效的内存使用对于良好的性能至关重要。Spark使用内存主要用于存储和执行。存储内存用于缓存以后将被重用的数据。另一方面,执行内存用于洗牌、排序、连接和聚合中的计算。内存争用给Apache Spark带来了三个挑战:
您可以通过强制成员溢出来处理内存争用,而不是避免预先静态地保留内存。