面试题答案
一键面试Minor Compaction
- 操作特点:
- 只合并部分小的、相邻的StoreFile。这些StoreFile通常是在写入数据过程中,由MemStore刷写生成的较小文件。
- 不会处理已经标记为删除的数据,所以它的操作相对快速、轻量级。
- 对线程池选择的影响:
- 线程数量:由于操作相对轻量级,可以使用较少数量的线程。比如,根据集群规模和负载,设置较小数量的线程,一般在低负载集群中可以设置为2 - 5个线程,这样既可以保证Minor Compaction的处理速度,又不会过多占用系统资源。
- 线程优先级:线程优先级可以设置为中等。因为它虽然对系统性能影响较小,但也需要保证及时处理,避免小文件过多影响读性能。
Major Compaction
- 操作特点:
- 会合并一个Store下的所有StoreFile,这包括了所有不同大小的文件。
- 会处理标记为删除的数据,将其彻底从文件中移除,同时还会对数据进行版本合并等操作,所以是一个非常重的操作,耗时较长。
- 对线程池选择的影响:
- 线程数量:鉴于其操作的复杂性和耗时性,需要相对较多的线程来提高处理效率。在高负载的大数据集群中,可能需要设置10 - 20个线程来并行处理Major Compaction任务。但要注意线程过多可能导致系统资源竞争加剧,所以要根据实际情况调整。
- 线程优先级:线程优先级应设置为较低。因为Major Compaction操作很重,如果优先级过高,可能会严重影响其他正常的读写操作,导致整个集群性能下降。