Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
When the location-aware rebalancer was designed, it was assumed that the tool should always honor the partitioning of the cluster defined by locations whatever the partitioning was. The only options considered were to run the process excluding particular rebalancing phases:
- correction of placement policy violations (--disable_policy_fixer)
- inter-location rebalancing, i.e. rebalancing across different locations (--disable_cross_location_rebalancing)
- intra-location rebalancing, i.e. rebalancing within a location (--disable_intra_location_rebalancing)
As it turns out, there are use cases when people want to run the rebalancer on a location-aware cluster ignoring the location-awareness specifics. Those cases are:
- The locations are defined by some higher-level cluster orchestration software, and people are reluctant to disable the location-awareness for Kudu specifically (i.e. providing an alternative script for --location_mapping_cmd), but want to even out the distribution of replicas.
- Having just two locations defined for some time. Even if it's a transitional phase (e.g., awaiting for a new zone/rack/datacenter to be added 'soon'), it could take some time.
For both cases, there is a workaround if every location has the same number of tablet servers: run the rebalancer tool with the --disable_policy_fixer flag. However, this workaround isn't applicable if there is difference in the number of tablet replicas per location, and no combination of flags could make the location-aware rebalancer run as it there were no locations defined.
Let's add a new flag for the kudu cluster rebalance CLI tool to make it run on a location-aware cluster as if no locations were defined. Of course, the flag should be off by default.