跳转至

CLUSTER

CREATE CLUSTER

since Air 2.6

创建集群,创建集群需要给出当前集群下的计算引擎和构建引擎。

  • 语法说明
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时指定集群中的资源权限鉴定的配置

异常情况说明

  1. 自Tardis2.6后,可以允许创建相同的名称的cluster,但是需要指定clusterId。 (在Tardis 2.6之前不允许创建相同名称的cluster);
  2. 创建集群必须指定至少一个QUERY WITH 和 一个BUILD WITH的配置,必须提供computeUnitNameengineType,其余的配置需要根据引擎的配置而定。如MAX COMPUTE需要提供serdepropertiesaccessKeyaccessId配置。

关于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。

              Cluster id              
--------------------------------------
 c10645ff-5c34-4720-ab4c-814d055cd592

SHOW CREATE CLUSTER

since Air 2.0

查看集群配置, 返回创建集群的SQL语句。

  • 语法说明
show create [default] cluster;
show create cluster <clusterId>;
  • 参数说明
关键字 类型 说明
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.

  • 语法说明
SHOW DEFAULT CLUSTER ID;
  • 返回结果
|   Cluster ID    |
|-----------------|
|  xxxx-xxxx-xxxx |

ALTER CLUSTER

since AIR 2.6

修改集群配置。

  • 语法说明
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

  • 语法说明
DROP CLUSTER [IF EXISTS] <clusterId>
  • 使用示例
drop cluster if exists "clusterId"