火花调优
回到术语表什么是Spark性能调优?
Spark Performance Tuning是指调整设置以记录系统使用的内存、内核和实例的过程。这一过程保证了Spark的完美性能,也避免了Spark中的资源瓶颈。什么是数据序列化?
为了减少内存使用,您可能必须以序列化的形式存储spark rdd。数据序列化也决定了良好的网络性能。您可以通过以下方法获得良好的Spark性能:- 终止那些长时间运行的作业。
- 确保作业在精确的执行引擎上运行。
- 有效地利用所有资源。
- 提高系统性能时间
- Java序列化
- Kryo序列化
什么是内存调优?
在调优内存使用时,有三个方面非常突出:- 整个数据集必须适合内存,考虑对象使用的内存是必须的。
- 通过增加对象的高周转率,垃圾收集的开销变得必要。
- 您必须考虑访问这些对象的成本。
什么是数据结构调优?
减少内存消耗的一种方法是远离可能造成开销的java特性。这里有一些方法:- 如果RAM大小小于32 GB, JVM标志应该设置为-xx:+ UseCompressedOops。该操作将构建一个4字节而不是8字节的指针。
- 嵌套结构可以通过使用几个小对象和指针来避免。
- 可以使用数字id和枚举对象代替字符串作为键
什么是垃圾回收调优?
为了避免与之前由程序存储的rdd相关的大量“流失”,java将丢弃旧对象,以便为新对象创建空间。然而,通过使用具有更少对象的数据结构,成本大大降低。一个这样的例子就是使用int数组而不是链表。或者,您也可以使用序列化形式的对象,这样每个RDD分区就只有一个对象。什么是内存管理?
高效的内存使用对于良好的性能至关重要。Spark使用内存主要用于存储和执行。存储内存用于缓存以后将被重用的数据。另一方面,执行内存用于洗牌、排序、连接和聚合中的计算。内存争用给Apache Spark带来了三个挑战:- 如何在执行和存储之间仲裁内存?
- 如何跨同时运行的任务仲裁内存?
- 如何跨运行在同一任务中的操作符仲裁内存?
额外的资源
回到术语表