我是发现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的修饰,会有什么问题?
>> 
>> 

Reply via email to