跳到主要内容
跳到主要内容

Storage Vault(存储后端)

概览

Storage Vault 是 doris 存算分离模式使用的远程共享存储。用户可以配置一个或者多个 Storage Vault,不同表允许存储在不同 Storage Vault 上。

名词解释

vault name:每个 Storage Vault 有一个数仓实例内全局唯一的名称,除 built-in vault 外,vault name 由用户创建 Storage Vault 时指定。

built-in vault:存算分离模式用于存储 Doris 系统表的远程共享存储,必须在创建数仓实例时就配置好。built-in vault 有固定 vault name "built_in_storage_vault"。必须配置 built-in vault,数仓 (FE) 才能启动。

default vault:数仓实例级别的默认 Storage Vault,用户可以指定某个 Storage Vault 为 default vault,包括 built-in vault 也可以作为 default vault。由于存算分离模式中,数据必须要存储在某个远程共享存储上,如果用户建表时没有在 table properties 中指定 vault_name,则该表数据会存储在 default vault 上。default vault 可以被重新设置,但是已经创建的表所使用的 Storage Vault 不会因此改变。

使用

Create Storage Vault

创建 Storage Vault。

语法:

CREATE STORAGE VAULT [IF NOT EXISTS] <vault_name>
PROPERTIES
("key" = "value",...)

<vault_name> 是用户定义的 storage vault 的名称,是用户接口用于访问 storage vault 的标识

e.g.

创建 HDFS storage vault

CREATE STORAGE VAULT IF NOT EXISTS ssb_hdfs_vault
PROPERTIES (
"type"="hdfs", -- required
"fs.defaultFS"="hdfs://127.0.0.1:8020", -- required
"path_prefix"="prefix", -- optional
"hadoop.username"="user" -- optional
"hadoop.security.authentication"="kerberos" -- optional
"hadoop.kerberos.principal"="hadoop/127.0.0.1@XXX" -- optional
"hadoop.kerberos.keytab"="/etc/emr.keytab" -- optional
);

创建 s3 storage vault

CREATE STORAGE VAULT IF NOT EXISTS ssb_hdfs_vault
PROPERTIES (
"type"="S3", -- required
"s3.endpoint" = "bj", -- required
"s3.region" = "bj", -- required
"s3.root.path" = "/path/to/root", -- required
"s3.access_key" = "ak", -- required
"s3.secret_key" = "sk", -- required
"provider" = "cos", -- required
);

注意:新创建的 Storage Vault 对 BE 集群不一定能实时可见,短时间(< 1min)内向使用新 Storage Vault 的表导入数据报错是正常现象。

Properties 参数

参数说明示例
type目前支持 s3 和 hdfss3 | hdfs
fs.defaultFSHDFS Vault 参数hdfs://127.0.0.1:8020
hadoop.usernameHDFS Vault 参数hadoop
hadoop.security.authenticationHDFS Vault 参数kerberos
hadoop.kerberos.principalHDFS Vault 参数hadoop/127.0.0.1@XXX
hadoop.kerberos.keytabHDFS Vault 参数/etc/emr.keytab
dfs.client.socket-timeoutHDFS Vault 参数dfs.client.socket-timeout=60000

Show Storage Vault

语法:

SHOW STORAGE VAULT

show 出来 4 列,一列是 name 一列是 id 一列是属性 一列是是否是 default

mysql> show storage vault;
+------------------------+----------------+-------------------------------------------------------------------------------------------------+-----------+
| StorageVaultName | StorageVaultId | Propeties | IsDefault |
+------------------------+----------------+-------------------------------------------------------------------------------------------------+-----------+
| built_in_storage_vault | 1 | build_conf { fs_name: "hdfs://127.0.0.1:8020" } prefix: "_1CF80628-16CF-0A46-54EE-2C4A54AB1519" | false |
| hdfs_vault | 2 | build_conf { fs_name: "hdfs://127.0.0.1:8020" } prefix: "_0717D76E-FF5E-27C8-D9E3-6162BC913D97" | false |
+------------------------+----------------+-------------------------------------------------------------------------------------------------+-----------+

Set Default Storage Vault

语法:

SET <vault_name> AS DEFAULT STORAGE VAULT

指定 vault name 建表

建表时在 properties 中指定 "storage_vault",则数据会存储在指定的 vault name 对应的 Storage Vault 上。建表成功后,该表不允许再修改 storage_vault,即不支持更换 Storage Vault。

e.g.

CREATE TABLE IF NOT EXISTS `supplier` (
`s_suppkey` int(11) NOT NULL COMMENT "",
`s_name` varchar(26) NOT NULL COMMENT "",
`s_address` varchar(26) NOT NULL COMMENT "",
`s_city` varchar(11) NOT NULL COMMENT "",
`s_nation` varchar(16) NOT NULL COMMENT "",
`s_region` varchar(13) NOT NULL COMMENT "",
`s_phone` varchar(16) NOT NULL COMMENT ""
)
UNIQUE KEY (`s_suppkey`)
DISTRIBUTED BY HASH(`s_suppkey`) BUCKETS 1
PROPERTIES (
"replication_num" = "1",
"storage_vault_name" = "ssb_hdfs_vault"
);

Built-in storage vault

用户在创建 create instance 的时候可以选择 vault mode 或者非 vault mode,如果选择的是 vault mode,传递进去的 vault 则会被设置为 built-in storage vault. Built-in storage vault 是用来保存内部表的信息的(比如统计信息表),在 vault 模式下如果没有创建 built-in storage vault 则 FE 是无法正常启动的。

用户也可以选择将自己的新的表的数据存储在 built-in storage vault 之上,可以通过将 built-in storage vault 设置为 default storage vault 或者在建表的时候将表的 storage_vault_name 属性设置为 builtin storage vault 实现。

Alter Storage Vault

TBD

用于更新 Storage Vault 配置的可修改属性。

Drop Storage Vault

TBD

只有不是 default vault 且没有被任何表引用的 Storage Vault 可以被 drop

权限

TBD