Hello, I'm interested in using a topology-aware rebalancing strategy. It's my understanding that the default AutoRebalanceStrategy is not able to be topology-aware (based on "Partition Assignment Strategies" in https://cwiki.apache.org/confluence/display/HELIX/Helix+Topology-aware+Rebalance+Strategy). Based on the "Simple User Guide" at the bottom of http://helix.apache.org/1.0.1-docs/design_crushed.html, I'm attempting to set my resource to use the CrushED REBALANCE_STRATEGY via this command (I'd like to avoid the Java API if I can):
./helix-admin.sh --zkSvr 1.2.3.4:2181 --setConfig RESOURCE MyCluster,MyDB "REBALANCE_STRATEGY=org.apache.helix.controller.rebalancer.strategy.CrushEdRebalanceStrategy" When I pull the data from the idealState or externalView, it doesn't seem to reflect the change (only idealState shown below): ~/helix-binaries/helix-core-1.0.1/bin$ curl http://localhost:8100/admin/v2/clusters/MyCluster/resources/MyDB/idealState { "id" : "MyDB", "mapFields" : { "MyDB_0" : {}, "MyDB_1" : {}, "MyDB_2" : {} }, "simpleFields" : { "IDEAL_STATE_MODE" : "AUTO_REBALANCE", "NUM_PARTITIONS" : "3", "REBALANCE_MODE" : "FULL_AUTO", "REBALANCE_STRATEGY" : "DEFAULT", "REPLICAS" : "1", "STATE_MODEL_DEF_REF" : "MasterSlave", "STATE_MODEL_FACTORY_NAME" : "DEFAULT" }, "listFields" : { "MyDB_0" : [ ], "MyDB_1" : [ ], "MyDB_2" : [ ] } } However, when I pull the config for the resource itself, it seems to show what I'd expect: ~/helix-binaries/helix-core-1.0.1/bin$ curl http://localhost:8100/admin/v2/clusters/MyCluster/resources/MyDB/configs { "id" : "MyDB", "mapFields" : { }, "simpleFields" : { "REBALANCE_STRATEGY" : "org.apache.helix.controller.rebalancer.strategy.CrushEdRebalanceStrategy" }, "listFields" : { } } Am I doing this correctly? Has that setting properly taken effect? I'm a bit confused by why I see it in the resource config, but not in the IdealState or externalView and I want to make sure this is the proper way to actually use an alternate rebalancing strategy. Thank you!
