Doris 2.x 安装及使用
简介
Apache Doris 是一款基于 MPP 架构的高性能、实时的分析型数据库,以高效、简单、统一的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、湖仓一体等使用场景,用户可以在此之上构建大屏看板、用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。
该方案并非官方推荐的自己制作镜像模式,正规模式及方案请查看官网:
https://doris.incubator.apache.org/zh-CN/docs/2.0/install/source-install/compilation-with-docker
准备环境及文件
官方要求修改内核参数
shell
sudo sysctl -w vm.max_map_count=2000000
sysctl vm.max_map_count
下载 doris 及 mysql 连接工具
doris 2.16 地址: :https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.1.6-bin-x64.tar.gz
mysql 客户端地址: https://doris-build-hk.oss-cn-hongkong.aliyuncs.com/mysql-client/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
根据自己的要求下载 doris 对应版本就可。
拉取 doker 环境,使用官方 2.0 的环境皆适配 doris 不同版本
shell
# cf-workers-docker-io1-ai1.pages.dev 是个人地址
docker pull cf-workers-docker-io1-ai1.pages.dev/apache/doris:build-env-for-2.0 /bin/bash
上传至宿主机
shell
# 创建文件目录
mkdir /opt/install
# window 使用工具上传,linux 可以使用 scp 上传
scp /opt/install/xxx.tar root@x.x.x.x:/opt/install/
安装及部署
构建 docker 环境
shell
# 9030 为 doris 数据库地址,8030 为数据库管理页面 web 端口,可修改为其他
docker run -d -it --name=doris -p 9030:9030 -p 8030:8030
cf-workers-docker-io1-ai1.pages.dev/apache/doris:build-env-for-2.0
/bin/bash
复制文件至 docker 中并进入容器解压
shell
docker cp /opt/install/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz doris:/opt
docker cp /opt/install/apache-doris-2.1.6-bin-x64.tar.gz doris:/opt
# 进入容器
docker exec -it doris /bin/bash
# 解压文件
cd /opt
tar -xvf apache-doris-2.1.6-bin-x64.tar.gz
tar -xzvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
# 获取本机容器内网ip地址,需修改到配置文件中。
hostname -i
配置 FE
shell
cd /opt/apache-doris-2.1.6-bin-x64/fe
vi conf/fe.conf
# 在配置文件中找到 priority_networks 后将注释打开,替换为自己的内网 ip
priority_networks = 自己的内网 ip/24
# 启动 FE
./bin/start_fe.sh --daemon
# 测试时候成功
curl http://127.0.0.1:8030/api/bootstrap
配置 BE
shell
cd /opt//apache-doris-2.1.6-bin-x64/be
vi conf/be.conf
# 在配置文件中找到 priority_networks 后将注释打开,替换为自己的内网 ip
priority_networks = 自己的内网 ip/24
# 启动 FE
./bin/start_be.sh --daemon
将 be 添加至 fe ,测试 mysql 连接工具的作用就有了
shell
# 默认配置账号 root 和 admin 都没有密码
/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
# 将BE节点加入到集群中, 9050 不可更改,为内置端口
ALTER SYSTEM ADD BACKEND "内网 ip 地址:9050";
# 显示doris后端详情
SHOW BACKENDS\G
# 修改 admin 密码
SET PASSWORD FOR 'admin'= PASSWORD('你的密码');
将 be 及 fe 启动加入自启动文件中,方便 docker restart 时重启 doris
shell
vim /root/.bashrc
# 在最后一行加入
/opt/apache-doris-2.1.6-bin-x64/fe/bin/start_fe.sh --daemon
/opt/apache-doris-2.1.6-bin-x64/be/bin/start_be.sh --daemon
测试及使用
至此,可使用 mysql 工具进行连接,如: navicat 或 mysql 其他工具。
shell
# 进入客户端
/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
# 创建测试库
create database demo;
use demo;
# 创建测试表,语法与 mysql 高度相似,并不完全一样
CREATE TABLE `demo`.`bs_pat_info` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`base_id` VARCHAR(50) NOT NULL COMMENT 'user id',
`pat_name` VARCHAR(100) NULL DEFAULT NULL,
`record_time` DATETIME NOT NULL,
`identify_number` VARCHAR(2000) NULL DEFAULT NULL,
`address` VARCHAR(2000) NULL DEFAULT NULL,
`delete_flag` VARCHAR(5) NULL DEFAULT NULL
) ENGINE=OLAP
UNIQUE KEY(`id`)
DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);
# 插入数据
INSERT INTO `demo`.`bs_pat_info`(`id`, `base_id`, `pat_name`, `record_time`, `identify_number`, `address`, `delete_flag`) VALUES (27622, '80472151', '俞强', '2024-08-26 08:59:49', '370201196803125600', '聊城市御景王宅3号楼303', '0');
# 附带 Doris 删除重复数据语句,根据 base_id 分组保留最新一条,删除旧数据
DELETE FROM bs_pat_info t1 USING (select id from `bs_pat_info` where id not in(select id from (SELECT id, ROW_NUMBER () OVER ( PARTITION BY base_id ORDER BY record_time, id DESC ) AS rn FROM `bs_pat_info`) t where t.rn = 1)) t2 WHERE t1.id = t2.id or delete_flag = '1';
Doris 账号及密码
用户 | 密码 |
---|---|
admin | 空 |
root | 空 |