更新时间:2024-12-02 GMT+08:00

从零开始使用Doris

Doris是一个基于MPP架构的高性能、实时的分析型数据库,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。

本文主要通过示例介绍如何快速使用MRS Doris集群进行基本的建表和查询操作。

Doris数据库名和表名区分大小写。

前提条件

  • 已创建包含Doris服务的集群,集群内各服务运行正常。
  • 待连接Doris数据库的节点与MRS集群网络互通。
  • 已安装MySQL客户端,相关操作可参考安装MySQL客户端

操作步骤

  1. 创建具有Doris管理权限的用户。

    • 集群已启用Kerberos认证(安全模式)
      1. 登录FusionInsight Manager,选择“系统 > 权限 > 角色 > 添加角色”,填写角色名称,如“dorisrole”,在“配置资源权限”选择“待操作的集群 > Doris”,勾选“Doris管理员权限”,单击“确定”。
      2. 选择“用户 > 添加用户”,填写用户名称,如“dorisuser”,“用户类型”选择“人机”,“密码策略”默认,输入用户密码并确认新密码,关联“dorisrole”角色,单击“确定”。
      3. 使用新建的dorisuser用户重新登录FusionInsight Manager,修改该用户初始密码。
    • 集群未启用Kerberos认证(普通模式)
      1. 登录安装了MySQL客户端的节点,使用admin用户连接Doris服务。

        mysql -uadmin -PFE查询连接端口 -hDoris FE实例IP地址

        • admin用户默认密码为空。
        • Doris FE的查询连接端口,可以通过登录Manager,单击“集群 > 服务 > Doris > 配置”,查询Doris服务的“query_port”参数获取。
        • Doris FE实例IP地址可通过登录MRS集群的Manager界面,单击“集群 > 服务 > Doris > 实例”,查看任一FE实例的IP地址。
        • 用户也可以使用MySQL连接软件或者Doris WebUI界面连接数据库。
      2. 执行以下命令创建角色:

        CREATE ROLE dorisrole;

      3. 执行以下命令给角色授权,具体权限介绍请参见用户权限介绍。例如,授予角色ADMIN_PRIV权限:

        GRANT ADMIN_PRIV ON *.*.* TO ROLE 'dorisrole';

      4. 执行以下命令创建用户并绑定角色:

        CREATE USER 'dorisuser'@'%' IDENTIFIED BY 'password' DEFAULT ROLE 'dorisrole';

        命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。

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

  3. 执行以下命令可查看FE和BE的运行状态。

    SHOW FRONTENDS\G;

    SHOW BACKENDS\G;

  4. 创建一个数据库。

    create database if not exists mrs_demo;

    use mrs_demo;

  5. 数据库创建成功后,继续创建数据表。

    CREATE TABLE IF NOT EXISTS mrs_table

    (

    `user_id` LARGEINT NOT NULL COMMENT "用户id",

    `date` DATE NOT NULL COMMENT "数据灌入日期",

    `city` VARCHAR(20) COMMENT "城市",

    `age` SMALLINT COMMENT "年龄",

    `sex` TINYINT COMMENT "性别",

    `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",

    `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",

    `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",

    `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"

    )

    AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)

    DISTRIBUTED BY HASH(`user_id`) BUCKETS 1

    PROPERTIES (

    "replication_allocation" = "tag.location.default: 1"

    );

  6. 在当前节点的任意目录下创建“test.csv”文件,内容如下:

    10000,2017-10-01,city1,20,0,2017-10-01 06:00:00,20,10,10
    10000,2017-10-01,city2,20,0,2017-10-01 07:00:00,15,2,2
    10001,2017-10-01,city3,30,1,2017-10-01 17:05:45,2,22,22
    10002,2017-10-02,city4,20,1,2017-10-02 12:59:12,200,5,5
    10003,2017-10-02,city5,32,0,2017-10-02 11:20:00,30,11,11
    10004,2017-10-01,city6,35,0,2017-10-01 10:00:15,100,3,3
    10004,2017-10-03,city7,35,0,2017-10-03 10:20:22,11,6,6

  7. 通过Stream load方式将“test.csv”中的数据导入到5创建的表中。

    cd test.csv所在目录

    curl -k --location-trusted -u doris用户:用户密码 -H "label:table1_20230217" -H "column_separator:," -T test.csv http://Doris FE实例IP地址:HTTP端口/api/mrs_demo/mrs_table/_stream_load

    • Doris FE实例IP地址可在Manager界面,选择“集群 > 服务 > Doris > 实例”查看。
    • HTTP端口号可在Manager界面,选择“集群 > 服务 > Doris > 配置”,搜索“http_port”查看。

  8. 查询数据。

    select * from mrs_table where city='city1';