火花调优

回到术语表

什么是Spark性能调优?

Spark Performance Tuning是指调整设置以记录系统使用的内存、内核和实例的过程。这一过程保证了Spark的完美性能,也避免了Spark中的资源瓶颈。Spark性能调优

什么是数据序列化?

为了减少内存使用,您可能必须以序列化的形式存储spark rdd。数据序列化也决定了良好的网络性能。您可以通过以下方法获得良好的Spark性能:
  • 终止那些长时间运行的作业。
  • 确保作业在精确的执行引擎上运行。
  • 有效地利用所有资源。
  • 提高系统性能时间
Spark支持两种序列化库,如下:
  • Java序列化
  • Kryo序列化

什么是内存调优?

在调优内存使用时,有三个方面非常突出:
  • 整个数据集必须适合内存,考虑对象使用的内存是必须的。
  • 通过增加对象的高周转率,垃圾收集的开销变得必要。
  • 您必须考虑访问这些对象的成本。

什么是数据结构调优?

减少内存消耗的一种方法是远离可能造成开销的java特性。这里有一些方法:
  • 如果RAM大小小于32 GB, JVM标志应该设置为-xx:+ UseCompressedOops。该操作将构建一个4字节而不是8字节的指针。
  • 嵌套结构可以通过使用几个小对象和指针来避免。
  • 可以使用数字id和枚举对象代替字符串作为键

什么是垃圾回收调优?

为了避免与之前由程序存储的rdd相关的大量“流失”,java将丢弃旧对象,以便为新对象创建空间。然而,通过使用具有更少对象的数据结构,成本大大降低。一个这样的例子就是使用int数组而不是链表。或者,您也可以使用序列化形式的对象,这样每个RDD分区就只有一个对象。

什么是内存管理?

高效的内存使用对于良好的性能至关重要。Spark使用内存主要用于存储和执行。存储内存用于缓存以后将被重用的数据。另一方面,执行内存用于洗牌、排序、连接和聚合中的计算。内存争用给Apache Spark带来了三个挑战:
  • 如何在执行和存储之间仲裁内存?
  • 如何跨同时运行的任务仲裁内存?
  • 如何跨运行在同一任务中的操作符仲裁内存?
您可以通过强制成员溢出来处理内存争用,而不是避免预先静态地保留内存。

额外的资源


回到术语表