查询对应版本元数据
功能介绍
查询对应版本元数据。如果参数里指定集群id,则可查询集群更新过补丁之后的最新元数据。
调用方法
请参见如何调用API。
URI
GET /v1.1/{project_id}/metadata/versions/{version_name}
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID。 |
version_name |
是 |
String |
集群版本。例如“MRS 3.1.0”。如果请求客户端不支持自动转义,则需要将空格转义为%20,例如“MRS%203.1.0”。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
cluster_id |
否 |
String |
集群ID。如果指定集群ID,则获取该集群做过补丁更新的最新版本元数据。 |
请求参数
无
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
other |
Map<String,Object> |
其他 |
name |
String |
镜像版本名称 |
template_type |
String |
模板类型 |
image_id |
String |
镜像ID |
status |
String |
版本状态 |
features |
Array of strings |
特性列表 |
cluster_types |
Array of strings |
集群类型列表 |
version_type |
String |
版本类型 |
components |
Array of VersionComponent objects |
组件列表 |
resource_requirement |
Array of strings |
版本所需的ip等资源说明 |
constraints |
VersionConstraint object |
版本限制说明 |
flavors |
FlavorLists object |
规格列表 |
role_deploy_meta |
Array of RoleDeployMeta objects |
版本组件实例角色部署策略 |
参数 |
参数类型 |
描述 |
---|---|---|
other |
Map<String,Object> |
其他 |
name |
String |
组件名称 |
version |
String |
支持版本 |
depend_on |
Array of strings |
组件依赖项 |
description |
String |
组件描述 |
available_cluster_types |
Array of strings |
支持该组件的集群类型 |
external_datasources |
Array of ComponentExternalDatasource objects |
外部数据源 |
resource_requirement |
Array of strings |
所需的ip等资源说明 |
valid_roles |
Array of strings |
有效角色 |
visible |
Boolean |
是否可见 |
children_components |
Array of strings |
子组件 |
multi_az_support_status |
String |
多az支持状态 |
参数 |
参数类型 |
描述 |
---|---|---|
other |
Map<String,Object> |
其他限制 |
node_constraint |
NodeConstraints object |
节点限制 |
safe_mode_kerberos_exclude_components |
Array of strings |
安全模式kerberos排除组件列表 |
参数 |
参数类型 |
描述 |
---|---|---|
other |
Map<String,Object> |
其他节点限制 |
master |
NodeConstraint object |
master节点限制,包括节点数,磁盘等限制 |
core |
NodeConstraint object |
core节点限制,包括节点数,磁盘等限制 |
task |
NodeConstraint object |
task节点限制,包括节点数,磁盘等限制 |
core_separate |
NodeConstraint object |
core节点管控分离限制,管控分离模版下core节点的限制,包括节点数,磁盘等限制 |
core_combine |
NodeConstraint object |
core节点管控合设限制,管控合设模版下core节点的限制,包括节点数,磁盘等限制 |
task_separate |
NodeConstraint object |
task节点管控分离限制,管控分离模版下task节点的限制,包括节点数,磁盘等限制 |
task_combine |
NodeConstraint object |
task节点管控合设限制,管控合设模版下task节点的限制,包括节点数,磁盘等限制 |
node_group_task |
NodeConstraint object |
task节点组限制,包括节点数,磁盘等限制 |
参数 |
参数类型 |
描述 |
---|---|---|
other |
Map<String,Object> |
其他限制 |
min_node_num |
Integer |
最少节点数 |
max_node_num |
Integer |
最多节点数 |
min_core_num |
Map<String,Integer> |
最少核心数 |
min_mem_size |
Map<String,Integer> |
最小内存容量 |
min_disk_size |
Integer |
最小磁盘容量 |
max_node_group_num |
Integer |
最大节点组数 |
min_data_volume_total_size |
Map<String,Integer> |
最小数据卷容量 |
disk_type_constraint |
Map<String,String> |
磁盘类型限制,包含当前节点组所支持的磁盘类型 |
min_root_disk_size |
Integer |
最小系统磁盘大小 |
参数 |
参数类型 |
描述 |
---|---|---|
master |
Array of strings |
master节点支持的规格列表 |
core |
Array of strings |
core节点支持的规格列表 |
task |
Array of strings |
task节点支持的规格列表 |
参数 |
参数类型 |
描述 |
---|---|---|
other |
Map<String,Object> |
其他扩展属性 |
name |
String |
角色名称 |
code_name |
String |
角色简称 |
component |
String |
角色所属组件 |
node_preference |
String |
部署倾向 |
count |
String |
角色数量限制 |
affinity |
String |
亲和 |
affinity_target |
String |
亲和目标 |
multi_instance |
Integer |
多实例 |
role_kind |
String |
角色类型 |
constraints |
Array of strings |
角色限制,包含当前组件角色的一些功能限制,例如:"no_scale_in" |
multi_az_placement |
String |
多az部署 |
arbitration_deployment |
Boolean |
仲裁部署 |
support_elb |
Boolean |
支持ELB |
multi_affinity_group_enable |
Boolean |
启用多亲和组 |
local_disks_anti_affinity |
Boolean |
本地盘反亲和 |
multi_instance_name_pattern |
String |
多实例名称模式 |
private_ip |
String |
私有IP |
weight |
String |
权重 |
请求示例
获取MRS 3.1.0的版本元数据
GET /v1.1/{project_id}/metadata/versions/MRS%203.1.0
响应示例
状态码: 200
版本元数据详情。(该样例省略了部分内容,详细返回请调用接口查看)
{ "other" : { }, "name" : "MRS 3.1.0", "template_type" : "clusterFusion", "image_id" : "ECS:X86:deda7c89-6069-46d3-af7c-4afc31eec0d9,ECS:ARM:d5f0087b-9fd7-4977-b9c8-d07262f452d6,BMS:ks1ne:bf071a00-d1d6-472f-943b-22f733248f36,BMS:d2:a9a1a279-85c9-4c05-bd0a-4cb786937a09", "status" : "GA", "features" : [ "anti_affinity", "auto_scaling", "bootstrap_scripts", "bootstrap_support_obs", "custom_config", "custom_topology", "datasource_manager", "decouple_install", "elastic_ip", "fi_cluster", "fi_cluster_v2", "iam_user_sync", "log_collect", "log_collect_v2", "master_scale_up", "mrs_ecs_agency", "multi_disks", "multi_login_mode", "obs_integration", "obs_user_policy", "opensource_port_matrix", "ops_channel", "password_policy_v2", "random_passwd_for_install", "register_dns_server", "resize", "resources_plans", "safe_mode", "scale_scripts", "security_job_submit", "smn_alarm", "spark_sql_validation_in_executor", "support_obs_protocol", "task_node", "unified_management_ui", "sql_execution", "multi_az", "weak_multi_az_deployment_constraint", "multi_master_scale_up", "omm_random_pwd", "metric_monitor", "auth_manager", "cluster_patch", "hw_domain_name", "fi_custom_config", "force_scale_up", "skip_fi_evs_expand", "detach_node" ], "cluster_types" : [ "analysis", "streaming", "mixed", "custom" ], "version_type" : "basic", "components" : [ { "other" : { }, "name" : "Hadoop", "version" : "3.1.1", "depend_on" : [ "ZooKeeper", "Ranger" ], "description" : "A framework that allows for the distributed processing of large data sets across clusters.", "available_cluster_types" : [ "analysis", "mixed", "custom" ], "external_datasources" : null, "resource_requirement" : [ "privateIp:1" ], "valid_roles" : [ "NameNode", "Zkfc", "JournalNode", "DataNode", "ResourceManager", "NodeManager", "JobHistoryServer", "TimelineServer", "HttpFS" ], "visible" : true, "children_components" : [ "HDFS", "Mapreduce", "Yarn" ], "multi_az_support_status" : "multi_az_ha" }, { "other" : { }, "name" : "Spark2x", "version" : "2.4.5", "depend_on" : [ "HDFS", "Yarn", "Hive", "KrbClient", "KrbServer", "ZooKeeper" ], "description" : "Apache Spark2x is a fast and general engine based on open source Spark2.x for large-scale data processing.", "available_cluster_types" : [ "analysis", "mixed", "custom" ], "external_datasources" : null, "resource_requirement" : null, "valid_roles" : [ "JobHistory2x", "JDBCServer2x", "SparkResource2x", "IndexServer2x" ], "visible" : true, "children_components" : [ "Spark2x" ], "multi_az_support_status" : "multi_az_ha" }, { "other" : { }, "name" : "HBase", "version" : "2.2.3", "depend_on" : [ "HDFS", "Yarn", "KrbServer", "ZooKeeper" ], "description" : "A scalable, distributed database that supports structured data storage for large tables.", "available_cluster_types" : [ "analysis", "mixed", "custom" ], "external_datasources" : null, "resource_requirement" : null, "valid_roles" : [ "HMaster", "RegionServer", "ThriftServer", "Thrift1Server", "RESTServer", "RegionServer_1" ], "visible" : true, "children_components" : [ "HBase" ], "multi_az_support_status" : "multi_az_ha" }, { "other" : { }, "name" : "Hive", "version" : "3.1.0", "depend_on" : [ "HDFS", "Mapreduce", "Yarn", "DBService", "ZooKeeper" ], "description" : "A data warehouse infrastructure that provides data summarization and ad hoc querying.", "available_cluster_types" : [ "analysis", "mixed", "custom" ], "external_datasources" : [ { "name" : "hive_metastore", "types" : [ "RDS_MYSQL", "DLCATALOG" ] } ], "resource_requirement" : null, "valid_roles" : [ "MetaStore", "WebHCat", "HiveServer" ], "visible" : true, "children_components" : [ "Hive" ], "multi_az_support_status" : "multi_az_ha" }, { "other" : { }, "name" : "ZooKeeper", "version" : null, "depend_on" : [ "KrbClient", "KrbServer" ], "description" : null, "available_cluster_types" : [ "analysis", "streaming", "mixed", "custom" ], "external_datasources" : null, "resource_requirement" : null, "valid_roles" : [ "quorumpeer" ], "visible" : true, "children_components" : [ "ZooKeeper" ], "multi_az_support_status" : "multi_az_ha" } ], "resource_requirement" : [ "privateIp:2" ], "constraints" : { "other" : { }, "node_constraint" : { "other" : { }, "master" : { "other" : { }, "min_node_num" : 2, "max_node_num" : 9, "min_core_num" : null, "min_mem_size" : null, "min_disk_size" : 600, "max_node_group_num" : 1, "min_data_volume_total_size" : null, "disk_type_constraint" : null, "min_root_disk_size" : 480 }, "core" : { "other" : { }, "min_node_num" : 3, "max_node_num" : 500, "min_core_num" : null, "min_mem_size" : null, "min_disk_size" : 600, "max_node_group_num" : null, "min_data_volume_total_size" : null, "disk_type_constraint" : null, "min_root_disk_size" : 480 }, "task" : null, "core_separate" : null, "core_combine" : null, "task_separate" : null, "task_combine" : null, "node_group_task" : { "other" : { }, "min_node_num" : 2, "max_node_num" : 10000, "min_core_num" : null, "min_mem_size" : null, "min_disk_size" : 600, "max_node_group_num" : 9, "min_data_volume_total_size" : null, "disk_type_constraint" : null, "min_root_disk_size" : 480 } }, "safe_mode_kerberos_exclude_components" : [ "Presto", "Pulsar" ] }, "flavors" : { "master" : [ "ac7.4xlarge.4", "ac7.8xlarge.4", "ac7.16xlarge.4", "ac7.32xlarge.4", "ac7.8xlarge.2", "ac7.16xlarge.2", "ac7.32xlarge.2", "am7.2xlarge.8", "am7.4xlarge.8", "am7.8xlarge.8", "c3ne.4xlarge.4", "c3ne.8xlarge.4", "c3ne.15xlarge.4" ], "core" : [ "ac7.4xlarge.4", "ac7.8xlarge.4", "ac7.16xlarge.4", "ac7.32xlarge.4", "ac7.8xlarge.2", "ac7.16xlarge.2", "ac7.32xlarge.2", "am7.2xlarge.8", "am7.4xlarge.8", "am7.8xlarge.8", "c3ne.4xlarge.4", "c3ne.8xlarge.4", "c3ne.15xlarge.4", "c6.4xlarge.4", "c6.8xlarge.2", "c6.8xlarge.4", "c6.16xlarge.2" ], "task" : [ "ac7.4xlarge.4", "ac7.8xlarge.4", "ac7.16xlarge.4", "ac7.32xlarge.4", "ac7.8xlarge.2", "ac7.16xlarge.2", "ac7.32xlarge.2", "am7.2xlarge.8", "am7.4xlarge.8", "am7.8xlarge.8", "c3ne.4xlarge.4", "c3ne.8xlarge.4", "c3ne.15xlarge.4" ] }, "role_deploy_meta" : [ { "other" : { }, "name" : "OMSServer", "code_name" : "OMS", "component" : "OMSServer", "node_preference" : "MASTER", "count" : "2", "affinity" : null, "affinity_target" : null, "multi_instance" : null, "role_kind" : null, "constraints" : null, "multi_az_placement" : "AT_LEAST_2", "arbitration_deployment" : false, "support_elb" : false, "multi_affinity_group_enable" : false, "local_disks_anti_affinity" : false, "multi_instance_name_pattern" : null, "private_ip" : null, "weight" : null }, { "other" : { }, "name" : "NameNode", "code_name" : "NN", "component" : "HDFS", "node_preference" : "MASTER", "count" : "2", "affinity" : null, "affinity_target" : null, "multi_instance" : null, "role_kind" : null, "constraints" : null, "multi_az_placement" : "AT_LEAST_2", "arbitration_deployment" : false, "support_elb" : false, "multi_affinity_group_enable" : false, "local_disks_anti_affinity" : false, "multi_instance_name_pattern" : null, "private_ip" : null, "weight" : null }, { "other" : { }, "name" : "Zkfc", "code_name" : "ZKFC", "component" : "HDFS", "node_preference" : null, "count" : null, "affinity" : "JUST_COLOCATE", "affinity_target" : "NameNode", "multi_instance" : null, "role_kind" : null, "constraints" : null, "multi_az_placement" : "AT_LEAST_2", "arbitration_deployment" : false, "support_elb" : false, "multi_affinity_group_enable" : false, "local_disks_anti_affinity" : false, "multi_instance_name_pattern" : null, "private_ip" : null, "weight" : null }, { "other" : { }, "name" : "HttpFS", "code_name" : "HFS", "component" : "HDFS", "node_preference" : "MASTER", "count" : "[0-10]", "affinity" : null, "affinity_target" : null, "multi_instance" : null, "role_kind" : null, "constraints" : null, "multi_az_placement" : "AT_LEAST_2", "arbitration_deployment" : false, "support_elb" : false, "multi_affinity_group_enable" : false, "local_disks_anti_affinity" : false, "multi_instance_name_pattern" : null, "private_ip" : null, "weight" : null }, { "other" : { }, "name" : "JournalNode", "code_name" : "JN", "component" : "HDFS", "node_preference" : "MASTER", "count" : "[3-60],step=2", "affinity" : null, "affinity_target" : null, "multi_instance" : null, "role_kind" : null, "constraints" : null, "multi_az_placement" : "QUORUM_LIKE", "arbitration_deployment" : true, "support_elb" : false, "multi_affinity_group_enable" : false, "local_disks_anti_affinity" : false, "multi_instance_name_pattern" : null, "private_ip" : null, "weight" : null }, { "other" : { }, "name" : "DataNode", "code_name" : "DN", "component" : "HDFS", "node_preference" : "NO_LIMIT", "count" : "[3-10000]", "affinity" : null, "affinity_target" : null, "multi_instance" : null, "role_kind" : "stateful", "constraints" : null, "multi_az_placement" : "AT_LEAST_2", "arbitration_deployment" : false, "support_elb" : false, "multi_affinity_group_enable" : false, "local_disks_anti_affinity" : false, "multi_instance_name_pattern" : null, "private_ip" : null, "weight" : null }, { "other" : { }, "name" : "ResourceManager", "code_name" : "RM", "component" : "Yarn", "node_preference" : "MASTER", "count" : "2", "affinity" : null, "affinity_target" : null, "multi_instance" : null, "role_kind" : null, "constraints" : null, "multi_az_placement" : "AT_LEAST_2", "arbitration_deployment" : false, "support_elb" : false, "multi_affinity_group_enable" : false, "local_disks_anti_affinity" : false, "multi_instance_name_pattern" : null, "private_ip" : null, "weight" : null }, { "other" : { }, "name" : "NodeManager", "code_name" : "NM", "component" : "Yarn", "node_preference" : "NO_LIMIT", "count" : "[3-10000]", "affinity" : null, "affinity_target" : null, "multi_instance" : null, "role_kind" : "stateless", "constraints" : null, "multi_az_placement" : "AT_LEAST_2", "arbitration_deployment" : false, "support_elb" : false, "multi_affinity_group_enable" : false, "local_disks_anti_affinity" : false, "multi_instance_name_pattern" : null, "private_ip" : null, "weight" : null } ] }
SDK代码示例
SDK代码示例如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.mrs.v1.region.MrsRegion; import com.huaweicloud.sdk.mrs.v1.*; import com.huaweicloud.sdk.mrs.v1.model.*; public class ShowMrsVersionMetadataSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); MrsClient client = MrsClient.newBuilder() .withCredential(auth) .withRegion(MrsRegion.valueOf("<YOUR REGION>")) .build(); ShowMrsVersionMetadataRequest request = new ShowMrsVersionMetadataRequest(); request.withClusterId("<cluster_id>"); try { ShowMrsVersionMetadataResponse response = client.showMrsVersionMetadata(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# coding: utf-8 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkmrs.v1.region.mrs_region import MrsRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkmrs.v1 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.getenv("CLOUD_SDK_AK") sk = os.getenv("CLOUD_SDK_SK") credentials = BasicCredentials(ak, sk) \ client = MrsClient.new_builder() \ .with_credentials(credentials) \ .with_region(MrsRegion.value_of("<YOUR REGION>")) \ .build() try: request = ShowMrsVersionMetadataRequest() request.cluster_id = "<cluster_id>" response = client.show_mrs_version_metadata(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" mrs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/mrs/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/mrs/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/mrs/v1/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := mrs.NewMrsClient( mrs.MrsClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.ShowMrsVersionMetadataRequest{} clusterIdRequest:= "<cluster_id>" request.ClusterId = &clusterIdRequest response, err := client.ShowMrsVersionMetadata(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
200 |
版本元数据详情。(该样例省略了部分内容,详细返回请调用接口查看) |
错误码
请参见错误码。