Create a Cluster on Microsoft Azure

POST /api/v2/clusters/

Use this API to create a new cluster when you are using Qubole on the Azure cloud. You create a cluster for a workload that has to run in parallel with your pre-existing workloads.

You might want to run workloads across different geographical locations or there could be other reasons for creating a new cluster.

Required Role

The following users can make this API call:

  • Users who belong to the system-user or system-admin group.
  • Users who belong to a group associated with a role that allows creating a cluster. See Managing Groups and Managing Roles for more information.

Parameters

Note

Parameters marked in bold below are mandatory. Others are optional and have default values.

Parameter Description
cloud_config A list of labels that identify the cluster. At least one label must be provided when creating a cluster.
cluster_info It contains the configurations of a cluster.
engine_config It contains the configurations of the type of clusters
monitoring It contains the cluster monitoring configuration.
security_settings It contains the security settings for the cluster.

cloud_config

Parameter Description
provider It defines the cloud provider. Set azure when the cluster is created on QDS-on-Azure.
compute_config It defines the Azure account compute credentials for the cluster.
location It is used to set the geographical Azure location. eastus is the default location. The other locations are centralus, southcentralus, southeastasia, and westus.
network_config It defines the network configuration for the cluster.
storage_config It defines the Azure account storage credentials for the cluster.

compute_config

Parameter Description
compute_validated It denotes if the credentials are validated or not.
use_account_compute_creds It is to use account compute credentials. By default, it is set to false. Set it to true to use account compute credentials. Setting it to ``true`` implies that the following four settings are not required to be set.
compute_client_id The client ID of the Azure active directory application which has the permissions over the subscription. It is required when use_account_compute_creds is set to false.
compute_client_secret The client secret of the Azure active directory application. It is required when use_account_compute_creds is set to false.
compute_tenant_id The tenant_id of the Azure Active Directory. It is required when use_account_compute_creds is set to false.
compute_subscription_id The subscription id of the azure account where you want to create the compute resources. It is required when use_account_compute_creds is set to false.

network_config

Parameter Description
vnet_name Set the virtual network.
subnet_name Set the subnet
vnet_resource_group_name Set the resource group of your virtual network.
bastion_node It is the public IP address of bastion node to access private subnets if required.
persistent_security_group_name It is the network security group name on the Azure account.
persistent_security_group_resource_group_name It is the resource group of the network security group of the Azure account.

storage_config

Parameter Description
disk_storage_account_name Set your Azure storage account. You must only configure this parameter or managed_disk_account_type.
disk_storage_account_resource_group_name Set your Azure disk storage account resource group name.
managed_disk_account_type You can set it if you do not want to configure disk storage account details. Its accepted values are standard_lrs and premium_lrs. You must only configure this parameter or disk_account_storage_name.
data_disk_count It is the number of reserved disks to be attached to each cluster node; so, for example, choosing a Data Disk Count of 2 in a four-node cluster will provision eight disks in all.
data_disk_size It is used to set the Data Disk Size in gigabytes (GB). The default size is 256 GB.

cluster_info

Parameter Description
label A cluster can have one or more labels separated by a commas. You can make a cluster the default cluster by including the label “default”.
master_instance_type To change the coordinator node type from the default (Standard_A5), select a different type from the drop-down list.
slave_instance_type To change the worker node type from the default (Standard_A5), select a different type from the drop-down list.
min_nodes Enter the minimum number of worker nodes if you want to change it (the default is 1).
max_nodes Enter the maximum number of worker nodes if you want to change it (the default is 1).
node_bootstrap You can append the name of a node bootstrap script to the default path.
disallow_cluster_termination Set it to true if you do not want QDS to terminate idle clusters automatically. Qubole recommends that you to set this parameter to false.
custom_tags It is an optional parameter. Its value contains a <tag> and a <value>.
rootdisk Use this parameter to configure the root volume of cluster instances. You must configure its size within this parameter. The supported range for the root volume size is 90 - 2047. An example usage would be "rootdisk" => {"size" => 500}.

engine_config

Parameter Description
flavour It denotes the type of cluster. The supported values are: hadoop2, presto, airflow, and spark.
airflow_settings It provides a list of Airflow-specific configurable sub options.
hadoop_settings To change the coordinator node type from the default (Standard_A5), select a different type from the drop-down list.
presto_settings To change the worker node type from the default (Standard_A5), select a different type from the drop-down list.
spark_settings Enter the minimum number of worker nodes if you want to change it (the default is 1).
hive_settings It provides a list of Hiveserver2 specific configurable sub options.

hadoop_settings

Parameter Description
custom_hadoop_config The custom Hadoop configuration overrides. The default value is blank.
fairscheduler_settings The fair scheduler configuration options.

fairscheduler_settings

Parameter Description
fairscheduler_config_xml The XML string, with custom configuration parameters, for the fair scheduler. The default value is blank.
default_pool The default pool for the fair scheduler. The default value is blank.

presto_settings

Parameter Description
presto_version Specify the Presto version to be used on the cluster. The default version is 0.142. The stable version that is supported is 0.157.
custom_presto_config Specifies if the custom Presto configuration overrides. The default value is blank.

spark_settings

Parameter Description
zeppelin_interpreter_mode The default mode is legacy. Set it to user mode if you want the user-level cluster-resource management on notebooks. See Configuring a Spark Notebook for more information.
custom_spark_config Specify the custom Spark configuration overrides. The default value is blank.
spark_version It is the Spark version used on the cluster. The default version is 2.0-latest. The other supported version is 2.1-latest.

monitoring

Parameter Description
enable_ganglia_monitoring Enable Ganglia monitoring for the cluster. The default value is, false.

security_settings

Parameter Description
ssh_public_key SSH key to use to login to the instances. The default value is none. (Note: This parameter is not visible to non-admin users.) The SSH key must be in the OpenSSH format and not in the PEM/PKCS format.

airflow_settings

The following table contains engine_config for an Airflow cluster.

Note

Parameters marked in bold below are mandatory. Others are optional and have default values.

Parameter Description
dbtap_id ID of the data store inside QDS. Set it to -1 if you are using the local MySQL instance as the data store.
fernet_key Encryption key for sensitive information inside airflow database. For example, user passwords and connections. It must be a 32 url-safe base64 encoded bytes.
type Engine type. It is airflow for an Airflow cluster.
version The default version is 1.10.0 (stable version). The other supported stable versions are 1.8.2 and 1.10.2. All the Airflow versions are compatible with MySQL 5.6 or higher.
airflow_python_version Supported versions are 3.5 (supported using package management) and 2.7. To know more, see Configuring an Airflow Cluster.
overrides

Airflow configuration to override the default settings. Use the following syntax for overrides:

<section>.<property>=<value>\n<section>.<property>=<value>...

engine_config to enable an HiveServer2 on a Hadoop 2 (Hive) Cluster

You can enable HiveServer2 on a Hadoop 2 (Hive) cluster. The following table contains engine_config for enabling HiveServer2 on a cluster. Other settings of HiveServer2 are configured under the hive_settings parameter. For more information on HiveServer2 in QDS, see Configuring a HiveServer2 Cluster.

This is an additional setting in the Hadoop 2 request API for enabling HiveServer2. Other settings that are explained in Parameters must be added.

Note

Parameters marked in bold below are mandatory. Others are optional and have default values.

Parameter Description
hive_settings is_hs2 Set it to true to enable HiveServer2.
hive_version It is the Hive version that supports HiveServer2. The values are 1.2.0, 2.1.1, and 2.3. Qubole’s Hive 2.1.1 is a stable version and LLAP from the Hive open source is not verified in Qubole’s Hive 2.1.1. For more information, see Understanding Hive Versions.
hive.qubole.metadata.cache This parameter enables Hive metadata caching that reduces split computation time for ORC files. This feature is not available by default. Create a ticket with Qubole Support for using this feature on the QDS account. Set it to true in old Hadoop 2 (Hive) clusters and it is enabled by default in new clusters. For more information, see Understanding Hive Metadata Caching.
hs2_thrift_port It is used to set HiveServer2 port. The default port is 10003. This parameter is not available on the Hadoop 2 (Hive) cluster UI and Qubole plans to add the UI option in a future release.
overrides Hive configuration to override the default settings.
flavour It denotes the cluster type. It is hadoop2 for an HiveServer2 cluster.

Request API Syntax

If use_account_compute_creds is set to false, then it is not required to set compute credentials.

curl -X POST -H "X-AUTH-TOKEN:$X_AUTH_TOKEN" -H "Content-Type:application/json" -H "Accept: application/json" \
-d '{
     "cloud_config" : {
       "provider" : "azure",
       "compute_config" : {
                     "compute_validated": "<default is ``false``/set it to ``true``>",
                     "use_account_compute_creds": false,
                     "compute_client_id": "<your client ID>",
                     "compute_client_secret": "<your client secret key>",
                     "compute_tenant_id": "<your tenant ID>",
                     "compute_subscription_id": "<your subscription ID>"
               },
               "location": {
                     "location": "centralus"
                  },
               "network_config" : {
                     "vnet_name" : "<vpc name>",
                         "subnet_name": "<subnet name>",
                         "vnet_resource_group_name": "<vnet resource group name>",
                         "bastion_node_public_dns": "<bastion node public dns>",
                        "persistent_security_groups": "<persistent security group>",
                        "master_elastic_ip": ""
               },
               "storage_config" : {
                     "disk_storage_account_name": "<Disk storage account name>",
                     "disk_storage_account_resource_group_name": "<Disk account resource group name>",
         //You can either configure "disk_storage_account_name" or "managed_disk_account_type"
         "managed_disk_account_type":"<standard_lrs/premium_lrs>",
         "data_disk_count":"<Count>",
         "data_disk_size":"<Disk Size>"
         }
         },
     "cluster_info": {
          "master_instance_type": "Standard_A6",
          "slave_instance_type": "Standard_A6",
          "label": ["azure1"],
          "min_nodes": 1,
          "max_nodes": 2,
          "cluster_name": "Azure1",
          "node_bootstrap": "node_bootstrap.sh",
          },
     "engine_config": {
          "flavour": "hadoop2",
          "hadoop_settings": {
             "custom_hadoop_config": <default is null>,
             "fairscheduler_settings": {
                "default_pool": <default is null>
             }
          }
     },
     "monitoring": {
            "ganglia": <default is false/set it to true>,
           }
     }' \ "https://azure.qubole.com/api/v2/clusters"

Sample API Request

curl -X POST -H "X-AUTH-TOKEN:$X_AUTH_TOKEN" -H "Content-Type:application/json" -H "Accept: application/json"
-d '{
     "cloud_config" : {
       "provider" : "azure",
       "compute_config" : {
                     "compute_validated": False,
                     "use_account_compute_creds": False,
                     "compute_client_id": "<your client ID>",
                     "compute_client_secret": "<your client secret key>",
                     "compute_tenant_id": "<your tenant ID>",
                     "compute_subscription_id": "<your subscription ID>"
               },
       "location": {
                     "location": "centralus"
               },
       "network_config" : {
                     "vnet_name" : "<vpc name>",
                         "subnet_name": "<subnet name>",
                         "vnet_resource_group_name": "<vnet resource group name>",
                         "persistent_security_groups": "<persistent security group>"
               },
       "storage_config" : {
                     "storage_access_key": "<your storage access key>",
                     "storage_account_name": "<your storage account name>",
                     "disk_storage_account_name": "<your disk storage account name>",
                     "disk_storage_account_resource_group_name": "<your disk storage account resource group name>"
         "data_disk_count":4,
         "data_disk_size":300 GB
               }
     },
     "cluster_info": {
          "master_instance_type": "Standard_A6",
          "slave_instance_type": "Standard_A6",
          "label": ["azure1"],
          "min_nodes": 1,
          "max_nodes": 2,
          "cluster_name": "Azure1",
          "node_bootstrap": "node_bootstrap.sh"
          },
     "engine_config": {
          "flavour": "hadoop2",
            "hadoop_settings": {
                "custom_hadoop_config": "mapred.tasktracker.map.tasks.maximum=3"
            }
          "hive_settings":{
            "is_hs2":true,
            "hive_version":"2.3",
            "overrides":"hive.server2.a=dummy",
            "is_metadata_cache_enabled":false,
            "execution_engine":"tez",
            "hs2_thrift_port":10003
            }
           },
     "monitoring": {
            "ganglia": true,
           }
     }' "https://azure.qubole.com/api/v2/clusters"