The Cluster REST API uses the PUT /api/cluster/flexup and flexdown HTTP method and URI to expand and shrink the cluster size.

HTTP Method and URI

PUT /api/cluster/flexup      // Expands the size of the YARN cluster.

PUT /api/cluster/flexdown    // Shrinks the size of the YARN cluster.

 

Parameters include:

ParameterDescription
profile

(Required) If a profile value is not specified, the API returns an error. The profile indicates the amount of resources (CPU or memory) a Node Manager should advertise to the Resource Manager. Default profiles: zero, small, medium, large. These default profiles (zero, small, medium, and large) are defined in the myriad-config-default.yml file. The resources associated with these default profiles can be modified; additionally, new profiles can be defined.

instances

(Required) The number of Node Managers instances to launch. Each Node Manager instance advertises the amount of resources specified in the profile. The value is a number in the range of zero (0) to the number of Mesos slave nodes.

constraints(Optional) Array definition for a single constraint using the LIKE operator constraint format: <mesos_slave_attribute|hostname> LIKE <value_regex>. The hostname constraint is used to launch Node Managerss on nodes whose hostname matches the regex passed in as value. See common Mesos slave attributes (http://mesos.apache.org/documentation/attributes-resources) for more information.

 

Syntax

<resource_manager_host>:8192/api/cluster/flexup
	profile=<zero|small|medium|large>
	instances=<integer>
	constraints=<["JSON array of strings"]>
<resource_manager_host>:8192/api/cluster/flexdown
	profile=<zero|small|medium|large>
	instances=<integer>
	constraints=<["JSON array of strings"]>

 

Request Examples

Curl request example to flexup two instances with the profile set to small:

curl -X PUT http://10.10.100.19:8192/api/cluster/flexup 
	-d instances=2 
	-d profile=small

 

Curl request example to flexdown one instance with the profile set to small:

curl -X PUT http://10.10.100.19:8192/api/cluster/flexdown 
	-d instances=1 
	-d profile=small

 

Curl request example to launch two (2) Node Managers with profile set to large only on specific hosts, host-120 through host-129:

curl -X PUT http://10.10.100.19:8192/api/cluster/flexdown 
	-d instances=2 
	-d profile=large 
	-d constraints=["hostname LIKE host-12[0-9].example.com"]
 

Request header to flexup:

PUT /api/cluster/flexup HTTP/1.1
Host: 10.10.100.19:8192
Connection: keep-alive
Content-Length: 36
Origin: http://10.10.100.19:8192
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36
Content-Type: application/json
Accept: */*
Referer: http://10.10.100.19:8192/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

Request header to flexdown:

PUT /api/cluster/flexdown HTTP/1.1
Host: 10.10.100.19:8192
Connection: keep-alive
Content-Length: 17
Origin: http://10.10.100.19:8192
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36
Content-Type: application/json
Accept: */*
Referer: http://10.10.100.19:8192/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

 

Launches a Node Manager with the profile set to medium on any host in the Mesos cluster:

{profile: "medium", instances:1}

 

Launches a Node Manager with the profile set to small on any host in the Mesos cluster:

{
  "instances":1, "profile": "small"
}

Launches a Node Manager with the profile set to zero on any host in the Mesos cluster:

{
  "instances":1
}

Launches four (4) Node Managers with profile set to large only on specific hosts, host-120 through host-129:

{
	"instances":4, 
	"profile": "large", 
	"constraints": ["hostname LIKE host-12[0-9].example.com"]
}

Launches two (2) Node Managers with profile set to zero only on hosts sharing a common Mesos slave attribute (http://mesos.apache.org/documentation/attributes-resources):

{
	"instances":2, 
	"profile": "zero", 
	"constraints": ["hdfs LIKE true"]
}

 

Response Example

202 ACCEPTED
  • No labels