public class

CustomRebalancer

extends Object
implements HelixRebalancer
java.lang.Object
   ↳ org.apache.helix.controller.rebalancer.CustomRebalancer

Summary

Public Constructors
CustomRebalancer()
Public Methods
ResourceAssignment computeResourceMapping(RebalancerConfig rebalancerConfig, ResourceAssignment prevAssignment, Cluster cluster, ResourceCurrentState currentState)
Given an ideal state for a resource and liveness of participants, compute a assignment of instances and states to each partition of a resource.
void init(HelixManager helixManager, ControllerContextProvider contextProvider)
Initialize the rebalancer with a HelixManager and ControllerContextProvider if necessary
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.apache.helix.controller.rebalancer.HelixRebalancer

Public Constructors

public CustomRebalancer ()

Public Methods

public ResourceAssignment computeResourceMapping (RebalancerConfig rebalancerConfig, ResourceAssignment prevAssignment, Cluster cluster, ResourceCurrentState currentState)

Given an ideal state for a resource and liveness of participants, compute a assignment of instances and states to each partition of a resource. This method provides all the relevant information needed to rebalance a resource. If you need additional information use manager.getAccessor to read and write the cluster data. This allows one to compute the ResourceAssignment according to app-specific requirements.

Say that you have:

 class MyRebalancerConfig implements RebalancerConfig
 
as your rebalancer config. To get a typed version, you can do the following:
 MyRebalancerConfig config = BasicRebalancerConfig.convert(rebalancerConfig,
     MyRebalancerConfig.class);
 

Parameters
rebalancerConfig the properties of the resource for which a mapping will be computed
prevAssignment the previous ResourceAssignment of this cluster, or null if none
cluster complete snapshot of the cluster
currentState the current states of all partitions

public void init (HelixManager helixManager, ControllerContextProvider contextProvider)

Initialize the rebalancer with a HelixManager and ControllerContextProvider if necessary

Parameters
contextProvider An object that supports getting and setting context across pipeline runs