可以的,建 issue 吧,先不着急改具体代码 或者你可以内部先改改测试一下,然后把结果啥的也贴到 issue 上
章啸 <issac.x...@icloud.com.invalid> 于2023年5月4日周四 13:35写道: > 我是发现OffPeak compaction并不能充分利用低峰期的集群资源去合并高峰期生成的hfile,因为同一时间只能有一个 off peak > compact。 > 似乎这样并不是很合理,我想尝试修改这里(去掉static,改成一个store > 内同一时间只有一个),但是不理解这样设计的初衷,以及我这样修改是否有问题。 > 我想我可以创建一个jira,把我的修改思路提上来。 > > > 在 2023年5月4日,11:25,张铎 <palomino...@gmail.com> 写道: > > > > 我 blame 翻了一下 > > > > > https://github.com/apache/hbase/blob/5998a0f349824adf823f79a52530e97dfc624b92/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/OffPeakCompactions.java > > > > 这个 AtomicBoolean 的作用其实就是替代这个文件里的一些逻辑的,在 HBASE-7437 的改动里把这个文件去掉了 > > > > > https://github.com/apache/hbase/commit/c9d33bef3f74cc771be1574db191666c2bc043d2#diff-bb21d9a53c6b006a954b4a981483fae7dae1c635298f24d208c6be80df1153a4 > > > > 你可以看他的注释解释,意思就是说 OffPeak 的 compaction > > 个数统计是全局的,同一时间只能有一个,可以看下面那个 tryStartOffPeakRequest 的实现 > > > > 这个代码已经是十年之前的了,如果觉得不合适的也可以讨论修改。你具体是遇到了啥问题? > > > > <issac.x...@icloud.com.invalid> 于2023年4月23日周日 09:30写道: > > > >> > >> > Hi,各位社区的大佬们。关于offPeakCompaction我有一个疑惑,在HStore中有一个static修饰的成员,这是HBASE-7437优化HBASE-7822中的bug而引入的。 > >> > >> private static final AtomicBoolean offPeakCompactionTracker = new > >> AtomicBoolean(); > >> > >> > 然后在请求compaction时,同一个rs中的不同store需要来抢着这个offPeakCompactionTracker,这样在低峰期,同一个时刻只能有一个store使用offpeak > >> compaction的参数配置来运行compaction。 > >> > >> // Normal case - coprocessor is not overriding file selection. > >> if (!compaction.hasSelection()) { > >> boolean isUserCompaction = priority == Store.PRIORITY_USER; > >> boolean mayUseOffPeak = > >> offPeakHours.isOffPeakHour() && > >> offPeakCompactionTracker.compareAndSet(false, true); > >> try { > >> compaction.select(this.filesCompacting, isUserCompaction, > >> mayUseOffPeak, > >> forceMajor && filesCompacting.isEmpty()); > >> } catch (IOException e) { > >> if (mayUseOffPeak) { > >> offPeakCompactionTracker.set(false); > >> } > >> throw e; > >> } > >> assert compaction.hasSelection(); > >> if (mayUseOffPeak && !compaction.getRequest().isOffPeak()) { > >> // Compaction policy doesn't want to take advantage of off-peak. > >> offPeakCompactionTracker.set(false); > >> } > >> } > >> > >> > >> 对于这里,我有几个疑惑: > >> > >> 1. 为啥offpeak compaction需要做成rs级别不同的store之间互斥?(对此,我没有翻找到任何相关的jira或者设计文档。) > >> 2. 如果去掉static的修饰,会有什么问题? > >> > >> >