-
Notifications
You must be signed in to change notification settings - Fork 3.4k
HBASE-29427 Merge all commits related to custom tiering into the feature branch #7124
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR merges all custom cell‐based tiering functionality into the feature branch, introducing new compaction policies, writers, store engines, data‐tiering abstractions, and accompanying tests.
- Introduces a pluggable
TieringValueProviderandCustomTieredCompactorto drive compactions by per‐cell cut‐off values - Refactors existing date‐tiered compaction into reusable components and adds hooks for custom tiering
- Updates HFile, block cache, and DataTieringManager to track and honor custom time ranges
Reviewed Changes
Copilot reviewed 32 out of 32 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/compactions/TestCustomCellTieredCompactor.java | Adds integration test for custom cell tiered compaction. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDataTieringManager.java | Updates tests for exception expectations and env initialization. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCustomCellTieredCompactionPolicy.java | Adds unit tests for custom compaction policy boundaries. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCustomCellDataTieringManager.java | Adds extensive tests for custom cell data‐tiering manager. |
| hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileInlineToRootChunkConversion.java | Fixes type usage in HFile inline‐to‐root chunk conversion test. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/DateTieredCompactor.java | Exposes needEmptyFile and adds createMultiWriter hook. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/DateTieredCompactionPolicy.java | Refactors shouldPerformMajorCompaction into helper methods. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CustomTieredCompactor.java | Implements custom tiered compactor and cell decoration hook. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CustomTieredCompactionPolicy.java | Implements custom-tier compaction policy based on metadata. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CustomCellTieringValueProvider.java | Provides cell‐qualifier based tiering‐value provider. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CustomCellTieredUtils.java | Validates required qualifier config when altering tables. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/Compactor.java | Adds decorateCells override for pre‐append processing. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java | Adds appendCustomCellTimestampsToMetadata support. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.java | Introduces createCompactionPolicy via reflection. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DateTieredMultiFileWriter.java | Injects a tiering‐function for boundary decisions. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DataTieringType.java | Extends enum to hold DataTiering instances. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DataTieringManager.java | Refactors isHotData logic to use generic timestamp providers. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DataTiering.java | Introduces DataTiering interface. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomTieringMultiFileWriter.java | Tracks per‐tier time ranges and writes custom metadata. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomTiering.java | Implements DataTiering for custom cell timestamps. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomTieredStoreEngine.java | Wires up custom compaction policy, compactor, and flusher. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CellTSTiering.java | Provides cell-timestamp tiering for date‐only tiering. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java | Enforces custom-cell config on table modification. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java | Enforces custom-cell config on table creation. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java | Updates eviction logic to honor custom cold file lists. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileWriterImpl.java | Integrates custom timestamp tracking and cache decisions. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java | Adjusts read caching to use cacheOnRead flag. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFile.java | Adds new metadata append API for custom timestamps. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java | Harmonizes block-cache signatures. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java | Skips double‐caching for data blocks when bucket cache present. |
| hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCache.java | Updates default shouldCacheBlock signature. |
| hbase-common/src/main/java/org/apache/hadoop/hbase/TagType.java | Adds CELL_VALUE_TIERING_TAG_TYPE tag constant. |
Comments suppressed due to low confidence (3)
hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java:318
- [nitpick] Using
checkForModifyTablein a create‐table context can be confusing. Consider renaming to a more genericvalidateCustomCellTieringConfigto reflect both create and modify scenarios.
CustomCellTieredUtils.checkForModifyTable(tableDescriptor);
hbase-server/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileInlineToRootChunkConversion.java:89
- The builder’s
setTypeexpects a byte code, not an enum. UseCell.Type.Put.getCode()or the appropriate type code to avoid a compilation or runtime mismatch.
.setValue(v).setType(Cell.Type.Put).build());
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DataTieringManager.java:257
- Comparing path strings may miss scheme or authority differences. Prefer using
file.getPath().equals(hFilePath)orPath#equalsfor accurate Path comparison.
if (file.getPath().toUri().getPath().toString().equals(hFilePath.toString())) {
| /* | ||
| * Licensed to the Apache Software Foundation (ASF) under one | ||
| * or more contributor license agreements. See the NOTICE file | ||
| * distributed with this work for additional information | ||
| * regarding copyright ownership. The ASF licenses this file | ||
| * to you under the Apache License, Version 2.0 (the | ||
| * "License"); you may not use this file except in compliance | ||
| * with the License. You may obtain a copy of the License at | ||
| * | ||
| * http://www.apache.org/licenses/LICENSE-2.0 | ||
| * | ||
| * Unless required by applicable law or agreed to in writing, software | ||
| * distributed under the License is distributed on an "AS IS" BASIS, | ||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| * See the License for the specific language governing permissions and | ||
| * limitations under the License. | ||
| */ |
Copilot
AI
Jul 8, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] There’s a duplicated license header; remove the second block to keep the file clean and avoid confusion.
| /* | |
| * Licensed to the Apache Software Foundation (ASF) under one | |
| * or more contributor license agreements. See the NOTICE file | |
| * distributed with this work for additional information | |
| * regarding copyright ownership. The ASF licenses this file | |
| * to you under the Apache License, Version 2.0 (the | |
| * "License"); you may not use this file except in compliance | |
| * with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks like we need to fix the redundant
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ack
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I need another round of review....but here is the first set of comments
| || (prefetchOnOpen && (category != BlockCategory.META && category != BlockCategory.UNKNOWN)); | ||
| } | ||
|
|
||
| public boolean shouldCacheBlockOnRead(BlockCategory category, HFileInfo hFileInfo, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this branch based on master? I didn't find this function on the master branch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, this is based out of the HBASE-28463 branch, which was last rebased with master around 23/06/2025. The reason this method is not in master branch is because it was added on this HBASE-28463 branch by HBASE-28467.
| /** | ||
| * Add Custom cell timestamp to Metadata | ||
| */ | ||
| public void appendCustomCellTimestampsToMetadata(TimeRangeTracker timeRangeTracker) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: why do we need TimeRangeTracker instead of max timestamp here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need min and max to calculate compaction boundaries properly, as we can have files where the max TS is higher than the threshold, but the min is lower. In such cases, the tiered compaction should know it has to split the file.
| // Cache the block if necessary | ||
| cacheConf.getBlockCache().ifPresent(cache -> { | ||
| if (cacheBlock && cacheConf.shouldCacheBlockOnRead(category)) { | ||
| if (cacheBlock && cacheOnRead) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: we change from cacheConf.shouldCacheBlockOnRead(category) to cacheOnRead = cacheConf.shouldCacheBlockOnRead(category, getHFileInfo(), conf); , is it right about only caching DATA block?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is it right about only caching DATA block?
We are not caching only DATA blocks here. We are actually applying the DataTieringManager for DATA blocks only. If the block type isn't DATA, we just apply the shouldCacheBlockOnRead(BlockCategory category) logic (as we call it at line #292).
| this.path = path; | ||
| this.name = path != null ? path.getName() : outputStream.toString(); | ||
| this.hFileContext = fileContext; | ||
| // TODO: Move this back to upper layer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit : should we delete this TODO ? or should we have new JIRA for it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, added this back then because I wasn't happy with adding time range tracking logic into HFileWriterImpl (originally, it was in StoreFileWriter). This was introduced here by HBASE-28469, IIRC, as a mean to track dates also when flushing, rather than at compaction only.
I think we should keep the TODO and revisit this code later on a separate JIRA. We still have to work on how to track custom tiering value on flushes, maybe that would be a good time to solve this TODO as well.
| // TODO: The StoreFileReader always converts the byte[] to TimeRange | ||
| // via TimeRangeTracker, so we should write the serialization data of TimeRange directly. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: new JIRA need?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This whole code (TODO comments included) came together from StoreFileWriter with the changes of HBASE-28469.
I think this TODO refers to a nice to have that would easy debugging. I guess a separate, minor priority JIRA.
| HStore hStore = getHStore(hFilePath); | ||
| for (HStoreFile file : hStore.getStorefiles()) { | ||
| if (file.getPath().equals(hFilePath)) { | ||
| if (file.getPath().toUri().getPath().toString().equals(hFilePath.toString())) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: doesn't getPath.toString would first check this.uri.getPath() != null and append URI before compare?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jhungund would you remember on the context of this change here? I guess this was added at some point to address UT failures, let me see if I can recover any discussion around this change.
| /* | ||
| * Licensed to the Apache Software Foundation (ASF) under one | ||
| * or more contributor license agreements. See the NOTICE file | ||
| * distributed with this work for additional information | ||
| * regarding copyright ownership. The ASF licenses this file | ||
| * to you under the Apache License, Version 2.0 (the | ||
| * "License"); you may not use this file except in compliance | ||
| * with the License. You may obtain a copy of the License at | ||
| * | ||
| * http://www.apache.org/licenses/LICENSE-2.0 | ||
| * | ||
| * Unless required by applicable law or agreed to in writing, software | ||
| * distributed under the License is distributed on an "AS IS" BASIS, | ||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| * See the License for the specific language governing permissions and | ||
| * limitations under the License. | ||
| */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks like we need to fix the redundant
...main/java/org/apache/hadoop/hbase/regionserver/compactions/CustomTieredCompactionPolicy.java
Outdated
Show resolved
Hide resolved
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
few more minor comments, otherwise LGTM
...in/java/org/apache/hadoop/hbase/regionserver/compactions/CustomCellTieringValueProvider.java
Outdated
Show resolved
Hide resolved
...in/java/org/apache/hadoop/hbase/regionserver/compactions/CustomCellTieringValueProvider.java
Outdated
Show resolved
Hide resolved
...in/java/org/apache/hadoop/hbase/regionserver/compactions/CustomCellTieringValueProvider.java
Outdated
Show resolved
Hide resolved
| @Override | ||
| public List<ExtendedCell> decorateCells(List<ExtendedCell> cells) { | ||
| // if no tiering qualifier properly set, skips the whole flow | ||
| if (tieringQualifier != null) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: doesn't it tieringQualifier is always non-null this is class such that we don't need the first if-condition check ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be null in case of miss configuration, when the TIERING_CELL_QUALIFIER property is missed in the configuration.
| needEmptyFile(request), CustomTieredCompactor.this.tieringValueProvider::getTieringValue); | ||
| } | ||
|
|
||
| public interface TieringValueProvider { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: why do we want to have interface within this class?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought put it there since it's a simple three method interface with a tight coupling to the custom tiered compactor. Can move to it's own file, if you feel it's needed.
| (lowerWindowIndex < 0) ? Math.abs(lowerWindowIndex + 2) : lowerWindowIndex; | ||
| upperWindowIndex = | ||
| (upperWindowIndex < 0) ? Math.abs(upperWindowIndex + 2) : upperWindowIndex; | ||
| if (lowerWindowIndex != upperWindowIndex) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: do we also need check if lowerWindowIndex < upperWindowIndex ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This specific logic was not introduced within this commit, it was already like that since HBASE-15400, it just appears in this PR because we split shouldPerformMajorCompaction into some extra granular methods for code reuse (i.e isMajorCompactionTime, checkForTtl, isMajorOrBulkloadResult and checkBlockLocality), as we may leverage those in overrides for shouldPerformMajorCompaction (as we do in CustomDateTieredCompactionPolicy).
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
nit: please check javadoc and checkstyle , and maybe tell if those unit tests should fail.
…ues other than cell timestamp Change-Id: I9574d01c5cb88d1ba35db3b0970d2d710207fdf4
Change-Id: I6eff2199afbc8c02426b07b696c18af258bcb36c
Co-authored-by: Wellington Ramos Chevreuil <[email protected]>
Change-Id: I85b7529da3ba5d0d734f98d2db224740f4ced26f
…d compaction related classes
…st master (and fix conflicts) Change-Id: I0704c8f060d06c9dc7b43d8d7c81a3274d8fd333
Change-Id: I434e61aafd31a0c47f656e23eee5239aef7910f1
Change-Id: I992f3eebe00943c4f073d1c7ea96010db21d07e6
Change-Id: I49d287cddf81170514474b27a642c249a7bc79d7
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
💔 -1 overall
This message was automatically generated. |
|
🎊 +1 overall
This message was automatically generated. |
…ure branch (#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
…ure branch (#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
…ure branch (#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
…ure branch (#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
…ure branch (#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
…ure branch (apache#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]> Change-Id: Ib10409b23a8cb735af5210e5ae4fc843b04b2d10
…ure branch (#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
…ure branch (apache#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]> Change-Id: Ib10409b23a8cb735af5210e5ae4fc843b04b2d10
…ure branch (apache#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
…ure branch (#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]>
…ure branch (apache#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]> Change-Id: I5dc170e31e47b297e1d81f07d625f680c5e0d848
…ure branch (apache#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]> Change-Id: I5dc170e31e47b297e1d81f07d625f680c5e0d848
…ure branch (#7124) This is the whole custom tiering implementation and involves the following individual works: * HBASE-29412 Extend date tiered compaction to allow for tiering by values other than cell timestamp * HBASE-29413 Implement a custom qualifier tiered compaction * HBASE-29414 Refactor DataTieringManager to make priority logic pluggable * HBASE-29422 Implement selectMinorCompation in CustomCellDateTieredCompactionPolicy * HBASE-29424 Implement configuration validation for custom tiering compactions * HBASE-29425 Refine and polish code * HBASE-29426 Define a tiering value provider and refactor custom tiered compaction related classes * HBASE-28463 Rebase time based priority branch (HBASE-28463) with latest master (and fix conflicts) Co-authored-by: Janardhan Hungund <[email protected]> Signed-off-by: Tak Lon (Stephen) Wu <[email protected]> Change-Id: I5dc170e31e47b297e1d81f07d625f680c5e0d848
No description provided.