CREATE STORAGE VOLUME
功能
为远程存储系统创建存储卷。该功能自 v3.1 起支持。
存储卷由远程存储系统的属性和认证信息组成。您可以在 StarRocks 存算分离集群中创建数据库和云原生表时引用存储卷。
注意
- 仅拥有 SYSTEM 级 CREATE STORAGE VOLUME 权限的用户可以执行该操作。
- 如果您需要基于 HDFS 创建存储卷,建议您不要随意修改 HADOOP_CONF 和 core-site.xml/hdfs-site.xml。如果以上文件中的参数与创建 Storage Volume 的参数存在差异,可能导致系统发生未知行为。
语法
CREATE STORAGE VOLUME [IF NOT EXISTS] <storage_volume_name>
TYPE = { S3 | HDFS | AZBLOB }
LOCATIONS = ('<remote_storage_path>')
[ COMMENT '<comment_string>' ]
PROPERTIES
("key" = "value",...)
参数说明
参数 | 说明 |
---|---|
storage_volume_name | 存储卷的名称。请注意,您无法创建名为 builtin_storage_volume 的存储卷,因为该名称被用于创建内置存储卷。有关 storage volume 的命名要求,参见系统限制。 |
TYPE | 远程存储系统的类型。有效值:S3 、AZBLOB 和 HDFS 。S3 代表AWS S3 或与 S3 协议兼容的存储系统。AZBLOB 代表 Azure Blob Storage(自 v3.1.1 起支持)。HDFS 代表 HDFS 集群。 |
LOCATIONS | 远程存储系统的位置。格式如下:
|
COMMENT | 存储卷的注释。 |
PROPERTIES | "key" = "value" 形式的参数对,用以指定访问远程存储系统的属性和认证信息。有关详细信息,请参阅 PROPERTIES。 |
PROPERTIES
下表列出了存储卷所有可用的属性。这些属性的使用说明在列表后提供,从 认证信息 和 特性 两个方面,基于不同场景进行分类。
属性 | 描述 |
---|---|
enabled | 是否启用当前存储卷。默认值:false 。已禁用的存储卷无法被引用。 |
aws.s3.region | 需访问的 S3 存储空间的地区,如 us-west-2 。 |
aws.s3.endpoint | 访问 S3 存储空间的连接地址,如 https://s3.us-west-2.amazonaws.com 。[Preview] 自 v3.3.0 起,支持 Amazon S3 Express One Zone Storage,如 https://s3express.us-west-2.amazonaws.com 。 |
aws.s3.use_aws_sdk_default_behavior | 是否使用 AWS SDK 默认的认证凭证。有效值:true 和 false (默认)。 |
aws.s3.use_instance_profile | 是否使用 Instance Profile 或 Assumed Role 作为安全凭证访问 S3。有效值:true 和 false (默认)。
|
aws.s3.access_key | 访问 S3 存储空间的 Access Key。 |
aws.s3.secret_key | 访问 S3 存储空间的 Secret Key。 |
aws.s3.iam_role_arn | 有访问 S3 存储空间权限 IAM Role 的 ARN。 |
aws.s3.external_id | 用于跨 AWS 账户访问 S3 存储空间的外部 ID。 |
azure.blob.endpoint | Azure Blob Storage 的链接地址,如 https://test.blob.core.windows.net 。 |
azure.blob.shared_key | 访问 Azure Blob Storage 的共享密钥(Shared Key)。 |
azure.blob.sas_token | 访问 Azure Blob Storage 的共享访问签名(SAS)。 |
hadoop.security.authentication | 指定认证方式。有效值:simple (默认) 和 kerberos 。simple 表示简单认证,即 Username。kerberos 表示 Kerberos 认证。 |
username | 用于访问 HDFS 集群中 NameNode 节点的用户名。 |
hadoop.security.kerberos.ticket.cache.path | 用于指定 kinit 生成的 Ticket Cache 文件的路径。 |
dfs.nameservices | 自定义 HDFS 集群的名称。 |
dfs.ha.namenodes.<ha_cluster_name> | 自定义 NameNode 的名称,多个名称以逗号 (,) 分隔,双引号内不允许出现空格。其中 <ha_cluster_name> 为 dfs.nameservices 中自定义的 HDFS 服务的名称。 |
dfs.namenode.rpc-address.<ha_cluster_name> .<NameNode> | 指定 NameNode 的 RPC 地址信息。 其中 <NameNode> 表示 dfs.ha.namenodes.<ha_cluster_name> 中自定义 NameNode 的名称。 |
dfs.client.failover.proxy.provider | 指定客户端连接的 NameNode 的提供者,默认为 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider 。 |
fs.viewfs.mounttable.<ViewFS_cluster> .link./<viewfs_path> | 需要挂载的 ViewFS 集群路径,多个路径以逗号 (,) 分隔。其中 <ViewFS_cluster> 为 LOCATIONS 中自定义的 ViewFS 集群名。 |
aws.s3.enable_partitioned_prefix | 是否启用存储卷的分区前 缀功能。默认值:false 。有关此功能的更多信息,请参阅 分区前缀。 |
aws.s3.num_partitioned_prefix | 要为该存储卷创建的前缀数量。默认值:256 。有效范围:[4, 1024]。 |
认证信息
AWS S3
-
如果您使用 AWS SDK 默认的认证凭证,请设置以下属性:
"enabled" = "{ true | false }",
"aws.s3.region" = "<region>",
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.use_aws_sdk_default_behavior" = "true" -
如果您使用 IAM user-based 认证,请设置以下属性:
"enabled" = "{ true | false }",
"aws.s3.region" = "<region>",
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.use_aws_sdk_default_behavior" = "false",
"aws.s3.use_instance_profile" = "false",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>" -
如果您使用 Instance Profile 认证,请设置以下属性:
"enabled" = "{ true | false }",
"aws.s3.region" = "<region>",
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.use_aws_sdk_default_behavior" = "false",
"aws.s3.use_instance_profile" = "true" -
如果您使用 Assumed Role 认证,请设置以下属性:
"enabled" = "{ true | false }",
"aws.s3.region" = "<region>",
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.use_aws_sdk_default_behavior" = "false",
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "<role_arn>" -
如果您使用外部 AWS 账户通过 Assumed Role 认证,请设置以下属性:
"enabled" = "{ true | false }",
"aws.s3.region" = "<region>",
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.use_aws_sdk_default_behavior" = "false",
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "<role_arn>",
"aws.s3.external_id" = "<external_id>"
GCS
如果您使用 GCP Cloud Storage,请设置以下属性:
"enabled" = "{ true | false }",
-- 例如:us-east-1
"aws.s3.region" = "<region>",
-- 例如:https://storage.googleapis.com
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>"
阿里云 OSS
如果您使用阿里云 OSS,请设置以下属性:
"enabled" = "{ true | false }",
-- 例如:cn-zhangjiakou
"aws.s3.region" = "<region>",
-- 例如:https://oss-cn-zhangjiakou-internal.aliyuncs.com
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>"
华为云 OBS
如果您使用华为云 OBS,请设置以下属性:
"enabled" = "{ true | false }",
-- 例如:cn-north-4
"aws.s3.region" = "<region>",
-- 例如:https://obs.cn-north-4.myhuaweicloud.com
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>"
腾讯云 COS
如果您使用腾讯云 COS,请设置以下属性:
"enabled" = "{ true | false }",
-- 例如:ap-beijing
"aws.s3.region" = "<region>",
-- 例如:https://cos.ap-beijing.myqcloud.com
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>"
火山引擎 TOS
如果您使用火山引擎 TOS,请设置以下属性:
"enabled" = "{ true | false }",
-- 例如:cn-beijing
"aws.s3.region" = "<region>",
-- 例如:https://tos-s3-cn-beijing.ivolces.com
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>"
金山云
如果您使用金山云,请设置以下属性:
"enabled" = "{ true | false }",
-- 例如:BEIJING
"aws.s3.region" = "<region>",
-- 注意请使用三级 域名, 金山云不支持二级域名
-- 例如:jeff-test.ks3-cn-beijing.ksyuncs.com
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>"
MinIO
如果您使用 MinIO,请设置以下属性:
"enabled" = "{ true | false }",
-- 例如:us-east-1
"aws.s3.region" = "<region>",
-- 例如:http://172.26.xx.xxx:39000
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>"
Ceph S3
如果您使用 Ceph S3,请设置以下属性:
"enabled" = "{ true | false }",
-- 例如:http://172.26.xx.xxx:7480
"aws.s3.endpoint" = "<endpoint_url>",
"aws.s3.access_key" = "<access_key>",
"aws.s3.secret_key" = "<secrete_key>"
Azure Blob Storage
StarRocks 自 v3.1.1 起支持基于 Azure Blob Storage 创建存储卷。
-
如果您使用共享密钥(Shared Key)认证,请设置以下 PROPERTIES:
"enabled" = "{ true | false }",
"azure.blob.endpoint" = "<endpoint_url>",
"azure.blob.shared_key" = "<shared_key>" -
如果您使用共享访问签名(SAS)认证,请设置以下 PROPERTIES:
"enabled" = "{ true | false }",
"azure.blob.endpoint" = "<endpoint_url>",
"azure.blob.sas_token" = "<sas_token>"
注意
创建 Azure Blob Storage Account 时必须禁用分层命名空间。
HDFS
-
如果您不使用认证接入 HDFS,请设置以下属性:
"enabled" = "{ true | false }"