更新时间:2024-11-29 GMT+08:00

配置Doris冷热分离

该章节主要介绍如何配置和使用Doris冷热分离功能。

前提条件

Doris集群与OBS网络互通。

创建OBS并行文件系统并获取AK/SK和DomainID

创建OBS并行文件系统

  1. 登录OBS管理控制台。
  2. 选择“并行文件系统 > 创建并行文件系统”。
  3. 填写文件系统名称,例如“doris-obs”。

    企业项目需要与MRS集群保持一致,其他参数请根据需要填写。

  4. 单击“立即创建”。
  5. 在并行文件系统列表中单击新建的并行文件系统名称,单击“概览”,查看并记录“Endpoint”信息。

    用户删除服务或者卸载集群后,可能导致2~4创建的并行文件系统下残留脏数据,请用户手动删除。

获取AK/SK信息

  1. 单击页面右上角的用户名,在下拉列表中选择“我的凭证”。
  2. 在“API凭证”中,记录并保存“账号ID”的值,作为DomainID。
  3. 单击“访问密钥”页签,单击“新增访问密钥”,输入验证码或密码。单击“确定”,生成并下载访问密钥,在.csv文件中获取AK/SK信息。

创建云服务委托并绑定集群

  1. 登录MRS云服务管理控制台。
  2. 在服务列表中选择“管理与监管 > 统一身份认证服务 IAM”。
  3. 选择“委托 > 创建委托”,在创建委托页面设置如下参数,并单击“下一步”:

    • 委托名称:填写委托名称,例如:mrs_ecs_obs。
    • 委托类型:选择“云服务”。
    • 云服务:选择“弹性云服务器 ECS 裸金属服务器 BMS”。
    • 持续时间:选择“永久”。

  4. 在弹出授权页面的搜索框内,搜索“OBS OperateAccess”策略,并勾选“OBS OperateAccess”策略。
  5. 单击“下一步”,在“选择权限范围方案”中选择“全局服务资源”,单击“确定”。
  6. 在弹出提示框中单击“知道了”,开始授权。界面提示“授权成功”,单击“完成”,委托创建成功。
  7. 在MRS控制台,选择“现有集群”,单击Doris集群名称,进入集群详情页面。
  8. 在集群详情的“概览”页签,单击“IAM用户同步”右侧的“同步”,进行IAM用户同步。
  9. 单击委托右侧的“管理委托”选择创建的委托名称,例如:mrs_ecs_obs,单击“确定”进行绑定。

创建普通账号委托并绑定集群

  1. 登录MRS云服务管理控制台。
  2. 在服务列表中选择“管理与监管 > 统一身份认证服务 IAM”。
  3. 选择“权限管理 > 权限”,单击“创建自定义策略”,配置如下参数,并单击“确定”:

    • 策略名称:填写策略名称,例如:doris-policy。
    • 策略配置方式:选择“JSON视图”。
    • 策略内容:
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect":"Allow",
                  "Action":[
                      "OBS:*:*"
                      ]
              }
              ]
      }

  4. 选择“委托 > 创建委托”,在创建委托页面配置以下参数并单击“确定”:

    • 委托名称:填写委托名称,例如:agency-MRS-to-OBS。
    • 委托类型:选择“普通账号”。
    • 委托的账号:填写本用户的云账号,即使用手机号开通的账号,不能是联邦用户或者IAM用户。
    • 持续时间:选择“永久”。

  5. 在弹出授权页面的搜索框内,搜索3新建的自定义策略,并勾选该策略,例如“doris-policy”。
  6. 单击“下一步”,在“选择授权范围”中勾选“全局服务资源”,单击“确定”。
  7. 创建完成后,将鼠标放在新建的委托上,记录下委托ID。
  8. 在“统一身份认证服务”选择“委托”。
  9. 单击3中创建的云服务委托名称,例如:“mrs_ecs_obs”。
  10. 选择“授权记录 > 授权”,单击“新建策略”,参数配置如下:

    • 策略名称:自定义策略名,例如“doris-assume-policy”。
    • 策略配置方式:选择“JSON视图”。
    • 策略内容:配置如下(其中“{委托id}”为7记录的ID)
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Action": [
                      "iam:agencies:assume"
                  ],
                  "Resource": {
                      "uri": [
                          "/iam/agencies/{委托ID}"
                      ]
                  },
                  "Effect": "Allow"
              }
          ]
      }

  11. 单击“下一步”,在“选择策略”页面勾选10创建的策略名称。
  12. 单击“下一步”,在“选择权限范围方案”中选择“全局服务资源”,单击“确定”。

开启Doris冷热分离功能

默认情况下,Doris冷热分离功能是关闭的,如果需要使用该功能,请执行以下操作开启。

  1. 登录FusionInsight Manager界面,选择“集群 > 服务 > Doris > 配置”。
  2. 在搜索框中搜索“obs_cooldown_enable”参数,修改该参数值为“true”。
  3. (可选)如果本地磁盘的数据冷却并被存储到OBS上后,在某个时间段又需要将相关数据存储到本地磁盘上,可选择“全部配置 > BE(角色) > 自定义”,在自定义参数“be.conf.customized.configs”中新增“moveback_enable”参数,值为“true”。
  4. 单击“保存”,单击“确定”,保存配置。
  5. 单击“实例”,勾选受影响的FE和BE实例,选择“更多 > 重启实例”,输入当前用户密码,重启FE和BE实例。

Doris冷热分离使用实践

  1. 登录安装了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界面连接数据库。

  2. 创建Resource。

    • 使用配置委托方式创建Resource
      1. 登录FusionInsight Manager界面,选择“集群 > 服务 > Doris > 配置 > 全部配置 > FE(角色) > OBS”,配置以下参数:
        • obs_authentication_method:值修改为“agency”。
        • obs_endpoint:5查看的Endpoint信息,例如:obs.XXX
        • obs_iam_endpoint:值为:https://iam.5查看的Endpoint值。
        • obs_iam_domain_id:7查看的DomainID值。
        • obs_agency_name:创建普通账号委托并绑定集群创建的普通账号委托,例如:agency-MRS-to-OBS。
      2. 在安装了MySQL客户端的节点上连接Doris,详细操作请参考从零开始使用Doris
      3. 执行以下命令创建Resource:

        CREATE RESOURCE IF NOT EXISTS resource_obs_hot_cold PROPERTIES (

        "type" = "obs",

        "obs.bucket" = "3创建的OBS并行文件系统名称",

        "obs.root.path" = "数据存储的根目录"

        );

    • 使用AK/SK创建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",

      'obs_validity_check' = 'false'

      );

      • type:数据存储类型,值为:obs。
      • obs.endpoint:5查看的Endpoint信息。
      • obs.region:Doris服务所在集群所属区域。
      • obs.bucket:3创建的OBS并行文件系统名称。
      • obs.root.path:数据存储的根目录
      • obs.access_key:8获取的AK信息。
      • obs.secret_key:8获取SK的信息。

  3. 执行以下命令通过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");

  4. 设置表或者分区的Storage Policy:

    • 创建表时设置Storage Policy:

      CREATE TABLE ORDERS (

      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");

    • 创建表时设置某个分区的冷热分离策略:

      CREATE TABLE ORDERS (

      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。

  5. 执行以下命令查看数据:

    show tablets from ORDERS;

    以上命令可以查看表的tablet信息,tablet信息中区分了LocalDataSize和RemoteDataSize,LocalDataSize表示存储在本地的数据,RemoteDataSize表示已经冷却并存储到OBS上的数据。

    数据冷却前,查看到的表的tablet信息为:

    数据冷却后,查看到的表的tablet信息为: