CLUSTER
CREATE CLUSTER
创建集群,创建集群需要给出当前集群下的计算引擎和构建引擎。
- 语法说明
CREATE [DEFAULT] CLUSTER [IF NOT EXISTS] <clusterName>
-- 指定cluster id
[WITH ID <clusterId> ]
-- 指定 RP 的相关的配置
WITH RP CONFIG (
'key1':'value1'[, 'key': 'value' ...]
)
-- 指定 查询引擎 的相关配置
WITH QUERY (
'key1':'value1'[, 'key': 'value' ...]
) [, (....)]
-- 指定 构建引擎 的相关配置
WITH BUILD (
'key1':'value1'[, 'key': 'value' ...]
) [, (....)]
-- 指定 授权 的相关配置
WITH AUTH (
'key1':'value1'[, 'key': 'value' ...]
);
- 参数说明
| 关键字 | 类型 | 说明 |
|---|---|---|
| DEFAULT | SQL关键字,选填 | 指定当前创建的cluster是否设置为默认的cluster。 |
| clusterId | SQL表示符, 选填 | 指定创建cluster 的id。 若不指定,系统会随机生成16位uuid作为当前的cluster ID。 |
| clusterName | SQL标识符,必填 | 指定创建集群的名称,允许名称重复。 |
| WITH RP CONFIG | SQL 关键字,必填 | 创建cluster 时指定当前集群使用的关系投影的配置 |
| WITH QUERY | SQL关键字,必填 | 创建cluster时绑定在当前集群中的查询引擎,支持绑定多个查询引擎 |
| WITH BUILD | SQL关键字,必填 | 创建cluster时绑定在当前集群中的构建引擎,支持绑定多个构建引擎 |
| WITH AUTH | SQL关键字,必填 | 创建cluster时指定集群中的资源权限鉴定的配置 |
异常情况说明:
- 自Tardis2.6后,可以允许创建相同的名称的cluster,但是需要指定clusterId。 (在Tardis 2.6之前不允许创建相同名称的cluster);
- 创建集群必须指定至少一个QUERY WITH 和 一个BUILD WITH的配置,必须提供
computeUnitName,engineType,其余的配置需要根据引擎的配置而定。如MAX COMPUTE需要提供serdeproperties、accessKey和accessId配置。
关于SQL字符串解析异常说明:
如果创建cluster 中的配置项,'key', 'value'[, ...]包含一些特殊字符,如;, ,,',//等,会在使用单引号的时候解析报错,这是由于解析器解析特殊字符的限制。此时请使用双引号将字符串括起来;例如字符串jbdc://server:port;key=value;在书写SQL时,请使用双引号将字符串括起来"jbdc://server:port;key=value;"若字符串本身包含双引号,请使用双引号的转义符号:", 如字符串json {"a": "b"},在书写SQL时候,请使用双引号将字符串中的双引号进行转义"json {""a"": ""b""}"。
- 引擎配置参数
[
{
"clusterId": "default", --设置clusterID,如果没有设置,引擎内部clusterId会自动生成,用户也可以通过手工指定,但必须确保唯一性。
"clusterName": "cluster_default_name", --设置cluster名字,只用于方便理解。
"defaultCluster": "true", --设置当前cluster是否为默认cluster,注意在tardis中,必须且只能存在一个defaultCluster,否则整个集群的查询功能都会收到影响。
"queryComputeUnits": [ -- 配置当前cluster的查询引擎;
{
"computeUnitName": "doris", --查询引擎的名字,
"engineType": "DORIS", --查询引擎的类型
"database": "default",
"needSyncMetadata": "false", -- 配置是否需要爬取当前查询引擎已有的元数据,默认或者不填是false;
"connectionConfigs": { --查询引擎对应的连接参数和其它配置
"doris.server.address": "10.5.221.x",
"doris.server.port": "9030",
"doris.server.username":"root",
"host": "10.5.221.1",
"port": "9030",
"username": "root"
}
}
],
"buildComputeUnits": [ -- 配置当前cluster对应的构建引擎
{
"computeUnitName": "spark_kyuubi_build",
"computeUnitType": "BUILD", -- 无需填写。
"engineType": "KYUUBI_SPARK",
"connectionConfigs": { -- 配置构建引擎的连接信息,连接参数根据不同的引擎填入。
"url": "jdbc:kyuubi://zk1.dev01.aloudata.work:2181,zk2.dev01.aloudata.work:2181,zk3.dev01.aloudata.work:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi-tardis;",
"username": "devops",
"host":"10.5.30.x",
"port":"9093"
},
"rpConnectionConfigs": { -- 配置当前构建引擎是否需要额外的RP数据源连接,某些引擎例如Spark或者Presto,由于引擎不自带存储,因此需要额外配置存储用于存放构建生成的RP信息。
"host":"10.5.30.3",
"port":"9093",
"username": "devops",
"connectionType": "META_STORE",
"dataSourceType": "HIVE2",
"refreshType": "MANUAL"
}
}
]
}
]
- 使用示例
create cluster clusterXXX
with id 12345
with query (
'computeUnitName':'MAX_COMPUTE',
'engineType':'MAX_COMPUTE',
'database':'dafault',
'accessId':'accessId',
'accessKey':'accessKey',
'defaultProject':'aloudata_project',
'projects':'aloudata_project',
'endpoint':"http://service.cn-hangzhou.maxcompute.aliyun.com/api"
)
with build (
'computeUnitName':'spark',
'engineType':'SPARK',
'database':'default',
'icebergConf':"{""source.name.iceberg"":""spark_catalog"",""hive.metastore.username"":""devops"",""hive.metastore.uri"":""thrift://10.5.30.3:9093"",""iceberg.catalog.type"":""hive""}",
'mysqlConf':"{""source.name.mysql"":""mysql1"",""connection-url"":""jdbc:mysql://10.5.20.26:3306"",""connection-user"":""root"",""connection-password"":""}"
);
- 返回结果
集群创建成功后,返回集群的UUID。
SHOW CREATE CLUSTER
查看集群配置, 返回创建集群的SQL语句。
- 语法说明
- 参数说明
| 关键字 | 类型 | 说明 |
|---|---|---|
| clusterId | SQL标识符,可选 | 指定创建集群的名称,若不指定,则展示默认的集群的创建语句 |
- 使用示列
-- 1. 查看指定ID 的 cluster相关配置
show create cluster "123456789";
-- 2. 查看默认的cluster config
show create cluster ;
- 返回结果
CREATE CLUSTER "clusterXXX"
WITH ID "clusterId"
WITH QUERY (
"computeUnitName":"MAX_COMPUTE",
"computeUnitType":"QUERY",
"engineType":"MAX_COMPUTE",
"database":"dafault",
"accessId":"id",
"accessKey":"xxxxxx",
"defaultProject": "aloudata_project",
"projects": "aloudata_project",
"endpoint":"http://service.cn-hangzhou.maxcompute.aliyun.com/api"
) , (
"computeUnitName":"MAX_COMPUTE",
"computeUnitType":"QUERY",
"engineType":"MAX_COMPUTE",
"database":"dafault",
"accessId":"id",
"accessKey":"xxxxxx",
"defaultProject": "aloudata_project",
"projects": "aloudata_project",
"endpoint":"http://service.cn-hangzhou.maxcompute.aliyun.com/api"
)
WITH BUILD (
"computeUnitName": "spark",
"computeUnitType": "BUILD" ,
"engineType":"SPARK",
"database":"default",
"icebergConf":"{""source.name.iceberg"":""spark_catalog"",""hive.metastore.username"":""devops"",""hive.metastore.uri"":""thrift://10.5.30.3:9093"",""iceberg.catalog.type"":""hive""}",
"mysqlConf":"{""source.name.mysql"":""mysql1"",""connection-url"":""jdbc:mysql://10.5.20.26:3306"",""connection-user"":""root"",""connection-password"":""xxxxx""}"
)
WITH AUTH (
"rangerServiceName" : 'xxxxx'
);
SHOW CLSUTER ID
查询当前集群的cluster id.
- 语法说明
- 返回结果
ALTER CLUSTER
修改集群配置。
- 语法说明
ALTER
(
[DEFAULT] CLUSTER [IF EXISTS]
|
CLUSTER [IF EXISTS] <clusterId>
)
SET
(
|
-- 设置该cluster 为默认的cluster
AS DEFAULT
|
-- 修改集群的名称
NAME <clusterName>
|
([
-- 修改集群的关系投影的配置
RP CONFIG (
'key2':'value2' [, 'key': 'value' ...]
)
]
-- 修改集群绑定的查询引擎
[
QUERY (
'key2':'value2' [, 'key': 'value' ...]
)[, (....)]
]
-- 修改集群绑定的构建引擎
[
BUILD (
'key2':'value2' [, 'key': 'value' ...]
) [, (...)]
]
-- 修改集指定的授权配置
[
AUTH (
'key2':'value2' [, 'key': 'value' ...]
)
])
)
- 使用示例
-- 设置clusterId为 1234567 为默认的cluster.
ALTER CLUSTER "1234567" SET AS DEFAULT;
-- 设置名称
ALTER CLUSTER "1234567" SET NAME "NewClusterName";
-- 设置Cluster的 query engine配置
ALTER CLUSTER "1234567" SET QUERY (
'key1': 'value1',
'key2': 'value2',
'...'
)
-- 设置Cluster的 build engine配置
ALTER CLUSTER "1234567" SET BUILD (
'key1': 'value1',
'key2': 'value2',
'...'
)
-- 设置 Cluster 的Rp config 的配置
alter cluster "1234567" set rp config (
'key1': 'value1',
'key2': 'value2',
'...'
)
-- 设置Cluster 的授权配置
alter cluster "1234567" set auth (
'key1': 'value1',
'key2': 'value2',
'...'
)
说明:
修改Cluster 的相关配置需要关注【新的Cluster配置】和 【旧的Cluster配置】的更新规则。对于修改Cluster中的 AUTH (权限配置) 和 RP CONFIG(关系投影配置) 的配置,更新规则采用增量覆盖式。更新该类配置时候,仅需要设置新增的 和 待覆盖的key即可。如旧的Cluster 的 AUTH 配置 的ky为( A: a, B: b ),更新Cluster时的AUTH 配置的 key 为 (B: b1,C: c), 则更新后的Cluster AUTH 配置为 (A:a , B: b1, C: c);
对于修改 Cluster 中的 BUILD ENGING 和 QUERY ENGINE 的配置,更新规则采用全量覆盖式。更新该类配置时候,需要指定所有的key和配置。如旧的Cluster 的 BUILD ENGINE 配置 的ky为 [(A1: a, B1: b), (A2: a, B2: b)], 更新的 BUILD ENGINE 配置的 key 为[(B: b,C: c)], 则更新后的Cluster BUILD ENGINE 配置为(B: b,C: c);
DROP CLUSTER
删除集群since Air 2.0
- 语法说明
- 使用示例