配置Doris冷热分离
该章节主要介绍如何配置和使用Doris冷热分离功能。
前提条件
Doris集群与OBS网络互通,相关操作具体请参考初始化配置。
创建OBS并行文件系统并获取AK/SK和DomainID
创建OBS并行文件系统。
- 登录OBS管理控制台。
- 选择“并行文件系统 > 创建并行文件系统”。
- 填写文件系统名称,例如“doris-obs”。
企业项目需要与MRS集群保持一致,其他参数请根据需要填写。
- 单击“立即创建”。
- 在并行文件系统列表中单击新建的并行文件系统名称,单击“概览”,查看并记录“Endpoint”信息。
获取AK/SK信息。
创建云服务委托并绑定集群
- 登录MRS云服务管理控制台。
- 在服务列表中选择“管理与监管 > 统一身份认证服务 IAM”。
- 选择“委托 > 创建委托”,在创建委托页面设置如下参数,并单击“下一步”:
- 委托名称:填写委托名称,例如:mrs_ecs_obs。
- 委托类型:选择“云服务”。
- 云服务:选择“弹性云服务器 ECS 裸金属服务器 BMS”。
- 持续时间:选择“永久”。
- 在弹出授权页面的搜索框内,搜索“OBS OperateAccess”策略,并勾选“OBS OperateAccess”策略。
- 单击“下一步”,在“选择权限范围方案”中选择“全局服务资源”,单击“确定”。
- 在弹出提示框中单击“知道了”,开始授权。界面提示“授权成功”,单击“完成”,委托创建成功。
- 在MRS控制台,选择“现有集群”,单击Doris集群名称,进入集群详情页面。
- 在集群详情的“概览”页签,单击“IAM用户同步”右侧的“同步”,进行IAM用户同步。
- 单击委托右侧的“管理委托”选择创建的委托名称,例如:mrs_ecs_obs,单击“确定”进行绑定。
创建普通账号委托并绑定集群
- 登录MRS云服务管理控制台。
- 在服务列表中选择“管理与监管 > 统一身份认证服务 IAM”。
- 选择“权限管理 > 权限”,单击“创建自定义策略”,配置如下参数,并单击“确定”:
- 策略名称:填写策略名称,例如:doris-policy。
- 策略配置方式:选择“JSON视图”。
- 策略内容:
{ "Version": "1.1", "Statement": [ { "Effect":"Allow", "Action":[ "OBS:*:*" ] } ] }
- 选择“委托 > 创建委托”,在创建委托页面配置以下参数并单击“确定”:
- 委托名称:填写委托名称,例如:agency-MRS-to-OBS。
- 委托类型:选择“普通账号”。
- 委托的账号:填写本用户的云账号,即使用手机号开通的账号,不能是联邦用户或者IAM用户。
- 持续时间:选择“永久”。
- 在弹出授权页面的搜索框内,搜索3新建的自定义策略,并勾选该策略,例如“doris-policy”。
- 单击“下一步”,在“选择授权范围”中勾选“全局服务资源”,单击“确定”。
- 创建完成后,将鼠标放在新建的委托上,记录下委托ID。
- 在“统一身份认证服务”选择“委托”。
- 单击3中创建的云服务委托名称,例如:“mrs_ecs_obs”。
- 选择“授权记录 > 授权”,单击“新建策略”,参数配置如下:
- 策略名称:自定义策略名,例如“doris-assume-policy”。
- 策略配置方式:选择“JSON视图”。
- 策略内容:配置如下(其中“{委托id}”为7记录的ID)
{ "Version": "1.1", "Statement": [ { "Action": [ "iam:agencies:assume" ], "Resource": { "uri": [ "/iam/agencies/{委托ID}" ] }, "Effect": "Allow" } ] }
- 单击“下一步”,在“选择策略”页面勾选10创建的策略名称。
- 单击“下一步”,在“选择权限范围方案”中选择“全局服务资源”,单击“确定”。
开启Doris冷热分离功能
默认情况下,Doris冷热分离功能是关闭的,如果需要使用该功能,请执行以下操作开启。
- 登录FusionInsight Manager界面,选择“集群 > 服务 > Doris > 配置”。
- 在搜索框中搜索“obs_cooldown_enable”参数,修改该参数值为“true”。
- (可选)如果本地磁盘的数据冷却并被存储到OBS上后,在某个时间段又需要将相关数据存储到本地磁盘上,可选择“全部配置 > BE(角色) > 自定义”,在自定义参数“be.conf.customized.configs”中新增“moveback_enable”参数,值为“true”。
- 单击“保存”,单击“确定”,保存配置。
- 单击“实例”,勾选受影响的FE和BE实例,选择“更多 > 重启实例”,输入当前用户密码,重启FE和BE实例。
Doris冷热分离使用实践
- 登录安装了MySQL的节点,执行以下命令,连接Doris数据库。
若集群已启用Kerberos认证(安全模式),需先执行以下命令再连接Doris数据库:
export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1
mysql -u数据库登录用户 -p -PFE查询连接端口 -hDoris FE实例IP地址
执行命令后输入数据库登录用户密码。
- Doris FE的查询连接端口,可以通过登录Manager,单击“集群 > 服务 > Doris > 配置”,查询Doris服务的“query_port”参数获取。
- Doris FE实例IP地址可通过登录MRS集群的Manager界面,单击“集群 > 服务 > Doris > 实例”,查看任一FE实例的业务IP地址。
- 用户也可以使用MySQL连接软件或者在Doris WebUI界面连接数据库。
- 创建Resource。
- 使用配置委托方式创建Resource
- 登录FusionInsight Manager界面,选择“集群 > 服务 > Doris > 配置 > 全部配置 > FE(角色) > OBS”,配置以下参数并单击“保存”保存配置:
- obs_authentication_method:值修改为“agency”。
- obs_endpoint:5查看的Endpoint信息,例如:obs.XXX。
- object_storage_security_provider:保持默认值“com.huawei.mrs.MrsObsCredentialsProvider”即可。
- 单击“概览”,选择“更多 > 重启服务”,输入当前用户密码并单击“确定”重启Doris服务。
- 在安装了MySQL客户端的节点上连接Doris,详细操作请参考使用MySQL客户端连接Doris。
- 执行以下命令创建Resource:
CREATE RESOURCE IF NOT EXISTS resource_obs_hot_cold PROPERTIES (
"type" = "obs",
"obs.bucket" = "3创建的OBS并行文件系统名称",
"obs.root.path" = "数据存储的根目录",
"obs.region" = "Doris服务所在集群所属区域"
);
- 登录FusionInsight Manager界面,选择“集群 > 服务 > Doris > 配置 > 全部配置 > FE(角色) > OBS”,配置以下参数并单击“保存”保存配置:
- 使用permanent创建Resource
- 登录FusionInsight Manager界面,选择“集群 > 服务 > Doris > 配置 > 全部配置 > FE(角色) > OBS”,配置以下参数并单击“保存”保存配置:
- obs_authentication_method:值修改为“permanent”。
- object_storage_security_provider:保持默认值“com.huawei.mrs.MrsObsCredentialsProvider”即可。
- 单击“概览”,选择“更多 > 重启服务”,输入当前用户密码并单击“确定”重启Doris服务。
- 在安装了MySQL客户端的节点上连接Doris,详细操作请参考使用MySQL客户端连接Doris。
- 执行以下命令创建Resource:
CREATE RESOURCE IF NOT EXISTS resource_obs_hot_cold PROPERTIES (
"type" = "obs",
"obs.endpoint" = "xxx",
"obs.region" = "xxx",
"obs.bucket" = "xxx",
"obs.root.path" = "xxx",
"obs.access_key" = "xxx",
"obs.secret_key" = "xxx"
);
- 登录FusionInsight Manager界面,选择“集群 > 服务 > Doris > 配置 > 全部配置 > FE(角色) > OBS”,配置以下参数并单击“保存”保存配置:
- 使用配置委托方式创建Resource
- 执行以下命令通过Storage Policy设置数据冷却策略:
- 通过TTL(time to live)设置数据冷却策略:
CREATE STORAGE POLICY IF NOT EXISTS policy_doris_hot_cold PROPERTIES("storage_resource" = "resource_obs_hot_cold", "cooldown_ttl" = "1d");
“cooldown_ttl”值为“1d”表示新导入的数据将在一天后开始冷却,并且冷却后的冷数据会存放到2创建Resource时配置的OBS对应的路径下。
- 通过时间节点设置数据冷却策略:
除了设置TTL以外,在Policy中也支持设置冷却的时间点:
CREATE STORAGE POLICY IF NOT EXISTS policy_doris_hot_cold2 PROPERTIES("storage_resource" = "resource_obs_hot_cold", "cooldown_datetime" = "2024-01-01 10:00:00");
- 通过TTL(time to live)设置数据冷却策略:
- 设置表或者分区的Storage Policy:
- 创建表时设置Storage Policy:
ORDER_ID VARCHAR(50),
USER_ID BIGINT,
PRODUCT_ID VARCHAR(10),
PRICE DECIMAL(15,2),
CHANNEL VARCHAR(20),
CREATE_DT DATE
)
DUPLICATE KEY(`ORDER_ID`)
PARTITION BY RANGE(`CREATE_DT`)
(
PARTITION `p202401` VALUES LESS THAN ("2024-02-01"),
PARTITION `p202402` VALUES LESS THAN ("2024-03-01")
)
DISTRIBUTED BY HASH(`ORDER_ID`) BUCKETS 3
PROPERTIES (
"replication_num" = "3",
"storage_policy" = "policy_doris_hot_cold "
);
- 为已存在的表修改属性进行设置:
ALTER TABLE ORDERS SET("storage_policy" = "policy_doris_hot_cold");
- 创建表时设置某个分区的冷热分离策略:
ORDER_ID VARCHAR(50),
USER_ID BIGINT,
PRODUCT_ID VARCHAR(10),
PRICE DECIMAL(15,2),
CHANNEL VARCHAR(20),
CREATE_DT DATE
)
DUPLICATE KEY(`ORDER_ID`)
PARTITION BY RANGE(`CREATE_DT`)
(
PARTITION `p202401` VALUES LESS THAN ("2024-02-01") ("storage_policy" = "policy_doris_hot_cold"),
PARTITION `p202402` VALUES LESS THAN ("2024-03-01")
)
DISTRIBUTED BY HASH(`ORDER_ID`) BUCKETS 3
PROPERTIES (
"replication_num" = "3"
);
- 修改已有表的分区属性进行设置:
ALTER TABLE ORDERS MODIFY PARTITION (`p202401`) SET("storage_policy"="policy_doris_hot_cold");
- 单表或单分区只能关联一个Storage Policy,关联后不能删除Storage Policy,需要先解除二者的关联。
- Storage Policy关联的对象信息不支持修改数据存储path的信息,例如:bucket、endpoint、root_path等信息。
- Storage Policy支持进行创建、修改和删除操作,删除前需要先保证没有表引用此Storage policy。
- Unique模型在开启Merge-on-Write特性时,不支持设置Storage Policy。
- 创建表时设置Storage Policy:
- 执行以下命令查看数据:
show tablets from ORDERS;
以上命令可以查看表的tablet信息,tablet信息中区分了LocalDataSize和RemoteDataSize,LocalDataSize表示存储在本地的数据,RemoteDataSize表示已经冷却并存储到OBS上的数据。
数据冷却前,查看到的表的tablet信息为:
数据冷却后,查看到的表的tablet信息为: