-
Notifications
You must be signed in to change notification settings - Fork 535
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
Run compactor in single binary (-target=all) and change compactor default config to split-and-merge compaction strategy #814
Comments
Afaik this is now possible because we have the horizontally scalable compactor, previously it would have been problematic if |
Yes, that should be correct (I haven't done a deep design of this work yet). |
Agree, then we should probably rename the strategy named What would happen if a users starts multiple compactor instances with sharding disabled? Will they just perform the same work multiple times, or is there potential that this leads to corrupt data? Usually I would be concerned about users who are already running clusters of single binaries and who then update to this version without reading the CHANGELOG, they might not realize that now the single binary is also loading the compactor. However, since Mimir is currently not open yet this is not a concern. |
Agreed on needing to rename Just went through a quick look at our compactor docs to try to sanity check things: A few questions:
|
What is the consequence if this warning log is ignored and it is configured with sharding disabled with multiple compactor replicas? (Trying to ascertain whether more than a warning would be helpful) |
I am in favor of removing old compaction, and only keeping split&merge compaction. When configured with no splitting, it works in the same way, but is also horizontally scalable.
I don't see "split count" stage explained in that documentation. It is a way to divide input blocks into smaller groups that are then split at the same time. I think
|
I agree with @09jvilla that we should remove
What if we made sharding mandatory? It's a bit of extra setup, but we can provide default config files for single-binary using memberlist, so when people run more instances, they get horizontal scalability for free? (For ingesters we already make sharding mandatory)
👍 for all |
We don't expect corrupted blocks, but compactors doing extra work. If you have sharding disabled and N single binary replicas, you may end up doing the compaction work N extra times. Side note: in my opinion running compactor in single binary is not a great idea (well the whole single binary thing) for any production cluster because you're going to have 1 replica with higher load due to compaction and this could impact write and read path, but I understand we want the compactor in single binary to have a good "getting started" story.
I think we've still seen it useful for the case a compactor owns multiple jobs. With Changes to planAccording to the discussion about, I propose the following changes to the initial plan:
In-discussionItems still in discussion for which I would like others opinion too:
|
Going to work on this: |
I think requiring the ring config would be preferable over accepting that the single-binary instances might do duplicate compaction work.
We could maybe make this a bit easier by switching the default ring store from consul to memberlist for all rings, that would result in one less flag that needs to be configured when scaling the single binary, assuming that the super basic use-case users won't use Consul. It looks like we're moving in that direction anyway (in our cloud as well). |
I'm up to it, but memberlist still requires some config. |
Yes, it does, but not much, and it's also reduced by the fact that there is only one global memberlist client to configure. |
FYI, @pstibrany is working on the whole task. |
Created issue to discuss this: #856 |
Current tasks:
|
The compactor currently doesn't run in single binary mode (
-target=all
). We should do it to provide a fully working cluster when using the single binary.This will also unblock #94.
Switch to split-and-merge compaction strategy by default
The
split-and-merge
compaction strategy do NOT require sharding/ring to enabled but it's required if you run more than 1 single binary replicas (likewise, compactor sharding/ring is required to be enabled when you run in microservices mode and have multiple compactor replicas).I propose the following changes:
-compactor.compaction-strategy
default config fromdefault
tosplit-and-merge
-target=all
(used by single binary mode) (issue)I also propose the following config changes:
-compactor.split-groups
default value from4
to1
(a value of 1 is fine for up to 10M active series which is way beyond what we target in the default config)-compactor.sharding-enabled
: need to fix the CLI flag description (see: "Shard tenants across multiple compactor instances" but now we shard "workload" not just "tenants")The text was updated successfully, but these errors were encountered: