从零开始使用Doris
Doris是一个基于MPP架构的高性能、实时的分析型数据库,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。
本文主要通过示例介绍如何快速使用MRS Doris集群进行基本的建表和查询操作。
Doris数据库名和表名区分大小写。
前提条件
- 已创建包含Doris服务的集群,集群内各服务运行正常。
- 待连接Doris数据库的节点与MRS集群网络互通。
- 已安装MySQL客户端,相关操作可参考安装MySQL客户端。
操作步骤
- 创建具有Doris管理权限的用户。
- 集群已启用Kerberos认证(安全模式)
- 登录FusionInsight Manager,选择“系统 > 权限 > 角色 > 添加角色”,填写角色名称,如“dorisrole”,在“配置资源权限”选择“待操作的集群 > Doris”,勾选“Doris管理员权限”,单击“确定”。
- 选择“用户 > 添加用户”,填写用户名称,如“dorisuser”,“用户类型”选择“人机”,“密码策略”默认,输入用户密码并确认新密码,关联“dorisrole”角色,单击“确定”。
- 使用新建的dorisuser用户重新登录FusionInsight Manager,修改该用户初始密码。
- 集群未启用Kerberos认证(普通模式)
- 登录安装了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界面连接数据库。
- 执行以下命令创建角色:
- 执行以下命令给角色授权,具体权限介绍请参见用户权限介绍。例如,授予角色ADMIN_PRIV权限:
GRANT ADMIN_PRIV ON *.*.* TO ROLE 'dorisrole';
- 执行以下命令创建用户并绑定角色:
CREATE USER 'dorisuser'@'%' IDENTIFIED BY 'password' DEFAULT ROLE 'dorisrole';
命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。
- 登录安装了MySQL客户端的节点,使用admin用户连接Doris服务。
- 集群已启用Kerberos认证(安全模式)
- 登录安装了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界面连接数据库。
- 执行以下命令可查看FE和BE的运行状态。
SHOW FRONTENDS\G;
SHOW BACKENDS\G;
- 创建一个数据库。
create database if not exists mrs_demo;
use mrs_demo;
- 数据库创建成功后,继续创建数据表。
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"
);
- 在当前节点的任意目录下创建“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
- 通过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”查看。
- 查询数据。
select * from mrs_table where city='city1';