[
https://issues.apache.org/jira/browse/SLIDER-1222?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jaeboo Jeong updated SLIDER-1222:
---------------------------------
Attachment: SLIDER-1222.01.patch
> During decreasing the number of components, we need to release the components
> of specific nodes.
> ------------------------------------------------------------------------------------------------
>
> Key: SLIDER-1222
> URL: https://issues.apache.org/jira/browse/SLIDER-1222
> Project: Slider
> Issue Type: Improvement
> Components: agent, core
> Affects Versions: Slider 0.81
> Reporter: Jaeboo Jeong
> Attachments: SLIDER-1222.01.patch
>
>
> If we want to create a shard cluster, we need index numbers to split shards.
> Currently we can use app_container_tag for shard index number.
> And I also can add replication nodes to increases data availability.
> For example, If we want to 5 shards and 2 replication cluster, shard index
> numbers are like this.
> total desired components = 10
> shard_index = app_container_tag % 5
> replication = 0 if app_container_tag < 5 else 1
> However using app_container_tag is a problem during decreasing the number of
> components.
> Because we don’t know that allocated components are for shard or not.
> So shard component can be released even if we want to decrease replication
> component.
> For a shard cluster, I added the following functionality.
> - write allocated component’s shard and replication informations in zookeeper
> - during releasing component, replication component is released first
> - add command to change shard and replication configuration
> And we need to add the following configurations and script functions.
> - Application Configuration
> {code}
> "global": {
> "create.default.zookeeper.node": "true",
> "site.global.zookeeper.quorum": "${ZK_HOST}",
> "site.global.zookeeper.port": "2181",
> "site.global.zookeeper.znode.parent": "${DEFAULT_ZK_PATH}",
> "site.global.COMPONENT_NAME.shard": "10",
> "site.global.COMPONENT_NAME.replication": "2"
> }
> {code}
> - Resource Specification
> {code}
> "components": {
> "COMPONENT_NAME": {
> "yarn.role.priority": "1",
> "yarn.component.instances": "10",
> "yarn.vcores": "2",
> "yarn.memory": "8192",
> "yarn.component.placement.policy": "32",
> "yarn.placement.escalate.seconds": "60"
> }
> {code}
> - Placement Policy
> {code}
> DEFAULT_SHARD_REPLICATION = 32
> ANTI_AFFINITY_SHARD_REPLICATION = 64
> {code}
> - add allocation function in start() function of App Package
> {code}
> import container_tag
> ...
> def start(self, env):
> import params
> env.set_params(params)
> shard, replication =
> container_tag.allocate_container_tag(params.zk_server, params.zk_parent,
> 'COMPONENT_NAME', params.container_id)
> ...
> {code}
> - make argument data for container_tag.allocate_container_tag() in params.py
> {code}
> config = Script.get_config()
> global_conf = config['configurations']['global']
> zk_quorum = global_conf['zookeeper.quorum']
> zk_port = global_conf['zookeeper.port']
> zk_server = ','.join([h + ':' + str(nopq_zk_port) for h in
> nopq_zk_quorum.split(',')])
> zk_parent = global_conf['zookeeper.znode.parent']
> container_id = global_conf['app_container_id']
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)