Doris安装有非常多的方法,这里主要介绍Docker中使用dev容器用来学习和测试的方法,避免在其他教程中踩坑(生产环境不建议使用Docker安装)

这里介绍一个不踩坑的docker本地单机版,笔者安装环境为Windows下的Docker,若为Linux系统安装基本一样,Linux只会更好装

1.安装Docker

参考Windows下安装ClickHouse图文教程中步骤1~2安装WSL以及Docker,若已安装则自行忽略

2.修改内核参数

在安装doris时,需要将 Linux 操作系统的内核参数设置为2000000,这里是Doris官方要求的

在这里插入图片描述

我这里是Windows,所以我在WSL虚拟机中设置,cmd进入到wsl

wsl

进入虚拟机

sudo sysctl -w vm.max_map_count=2000000

查看是否设置成功

sysctl vm.max_map_count

如果为Linux系统,则直接在Docker宿主机中设置即可

3.下载Docker 开发环境镜像

根据需求选取版本,使用现成的镜像

我这里选择主干用的最新镜像,3.22GB,根据网速不同,下载时间不同,这个镜像主要是用来集成FE(Doris的前端UI)和BE(Doris的后台进程)的,里面包含一些常用的开发环境,例如JDK等

docker pull apache/doris:build-env-ldb-toolchain-latest

在这里插入图片描述

4.下载安装包

值得一提的是,官网于2023 年 7 月 3 日也就是4天前,发布了,Apache Doris 2.0-beta,因为是测试版,也是最新版,不免会存在这样那样的坑,笔者已经踩过一些了,为了稳定和便于安装,这里还是采用目前官网的稳定最新版 快速下载,这个版本的FE和BE已经整合到一个xz tar中了。Windows用户直接下载到本地即可,Linux用户可以使用wget复制连接下载到宿主机上,例如

wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.4.1-bin-x86_64.tar.xz

然后需要下载MySQL,这里提供MySQL的免安装版MySQL 客户端,这里需要引入MySQL是因为了支持 Doris 的元数据存储和管理

wget https://doris-build-hk.oss-cn-hongkong.aliyuncs.com/mysql-client/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

若下载实在缓慢,这里提供网盘下载

提取码: t4v4

5.启动镜像环境

docker run -d -it --name=doris \
-p 9030:9030 -p 8030:8030 \
apache/doris:build-env-ldb-toolchain-latest \
/bin/bash

复制安装包

docker cp D:/Dev/doris/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz doris:/opt
docker cp D:/Dev/doris/apache-doris-1.2.4.1-bin-x86_64.tar.xz doris:/opt

进入到容器中

docker exec -it doris bash
cd /opt/
tar -xvf apache-doris-1.2.4.1-bin-x86_64.tar.xz
tar -xzvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
hostname -i

记住内网ip

在这里插入图片描述

6.配置fe

cd /opt/apache-doris-1.2.4.1-bin-x86_64/fe
vi conf/fe.conf

打开 priority_networks注释 将刚刚hostname -i打印出来的内网ip替换到

priority_networks = 172.17.0.2/24

在这里插入图片描述

接着启动fe

./bin/start_fe.sh --daemon
jps
curl http://127.0.0.1:8030/api/bootstrap

在这里插入图片描述

如图所示表示启动成功

因为在启动docker容器的时候,我们做了8030端口映射,我们可以直接在本机上访问

Windows,直接浏览器地址访问 http://localhost:8030/login,账号root,密码为空

在这里插入图片描述

登录成功后的Home页

在这里插入图片描述

接着在mysql中连接fe,默认无密码

/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
show frontends\G;

注意:

  1. 这里使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户,具体的用户权限查看 权限管理
  2. -P :这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是fe.conf里的 query_port
  3. -h : 这里是我们连接的 FE IP地址,如果你的客户端和 FE 安装在同一个节点可以使用127.0.0.1。

看到像我这样IsMaster、Join 和 Alive 三列均为true,则表示节点正常

在这里插入图片描述

7.配置be

exit;
cd /opt/apache-doris-1.2.4.1-bin-x86_64/be
vi conf/be.conf

和上面一样

替换内网ip到

priority_networks = 172.17.0.2/24

在这里插入图片描述

然后在启动脚本中设置jdk的路径,我们这里下载的镜像的jdk的默认路径为 /usr/lib/jvm/java-1.8.0

可以先ehco确认一下,因为使用的是最新镜像,路径可能随时版本的变更而改变

echo $JAVA_HOME

在这里插入图片描述

vi bin/start_be.sh

export JAVA_HOME=/usr/lib/jvm/java-1.8.0

在这里插入图片描述

然后启动be,并在mysql中连接be,即在Doris中添加已经后端节点

./bin/start_be.sh --daemon 
/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
ALTER SYSTEM ADD BACKEND "172.17.0.2:9050";
SHOW BACKENDS\G

看到像我这样的,Alive : true表示节点运行正常(如果为false,可以尝试等待一会再重新查看,第一次启动会慢一点;或有其他问题在/opt/apache-doris-1.2.4.1-bin-x86_64/be/log/be.out 里面查看日志)

在这里插入图片描述

正常启动的进程是这样的,会有一个空名字的进程,正常,就是be

在这里插入图片描述

8.建表测试

第一次接触doris的同学可能会疑惑,怎么语法与MySQL差不多,其实这里建表语句就提现出来了,下面的DDL,在MySQL是无法运行的

这里使用MySQL仅作为远程连接工具,在实际使用中仅需启动fe与be即可,Doris自动启动和管理内部的 MySQL 实例,用于存储和管理元数据

create database demo;
use demo;
CREATE TABLE IF NOT EXISTS demo.example_tbl
(
    `user_id` LARGEINT NOT NULL COMMENT "user 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"
);
exit;

新建一个数据文件

cd ~
vi test.csv

test.csv

10000,2017-10-01,beijing,20,0,2017-10-01 06:00:00,20,10,10
10006,2017-10-01,beijing,20,0,2017-10-01 07:00:00,15,2,2
10001,2017-10-01,beijing,30,1,2017-10-01 17:05:45,2,22,22
10002,2017-10-02,shanghai,20,1,2017-10-02 12:59:12,200,5,5
10003,2017-10-02,guangzhou,32,0,2017-10-02 11:20:00,30,11,11
10004,2017-10-01,shenzhen,35,0,2017-10-01 10:00:15,100,3,3
10004,2017-10-03,shenzhen,35,0,2017-10-03 10:20:22,11,6,6

导入数据

curl  --location-trusted -u root: -T test.csv -H "column_separator:," http://127.0.0.1:8030/api/demo/example_tbl/_stream_load

在这里插入图片描述

查询数据

/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
mysql> use demo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from example_tbl;
+---------+------------+-----------+------+------+---------------------+------+----------------+----------------+
| user_id | date       | city      | age  | sex  | last_visit_date     | cost | max_dwell_time | min_dwell_time |
+---------+------------+-----------+------+------+---------------------+------+----------------+----------------+
| 10000   | 2017-10-01 | beijing   |   20 |    0 | 2017-10-01 06:00:00 |   20 |             10 |             10 |
| 10001   | 2017-10-01 | beijing   |   30 |    1 | 2017-10-01 17:05:45 |    2 |             22 |             22 |
| 10002   | 2017-10-02 | shanghai  |   20 |    1 | 2017-10-02 12:59:12 |  200 |              5 |              5 |
| 10003   | 2017-10-02 | guangzhou |   32 |    0 | 2017-10-02 11:20:00 |   30 |             11 |             11 |
| 10004   | 2017-10-01 | shenzhen  |   35 |    0 | 2017-10-01 10:00:15 |  100 |              3 |              3 |
| 10004   | 2017-10-03 | shenzhen  |   35 |    0 | 2017-10-03 10:20:22 |   11 |              6 |              6 |
| 10006   | 2017-10-01 | beijing   |   20 |    0 | 2017-10-01 07:00:00 |   15 |              2 |              2 |
+---------+------------+-----------+------+------+---------------------+------+----------------+----------------+
7 rows in set (0.05 sec)

mysql> select * from example_tbl where city='beijing';
+---------+------------+---------+------+------+---------------------+------+----------------+----------------+
| user_id | date       | city    | age  | sex  | last_visit_date     | cost | max_dwell_time | min_dwell_time |
+---------+------------+---------+------+------+---------------------+------+----------------+----------------+
| 10000   | 2017-10-01 | beijing |   20 |    0 | 2017-10-01 06:00:00 |   20 |             10 |             10 |
| 10001   | 2017-10-01 | beijing |   30 |    1 | 2017-10-01 17:05:45 |    2 |             22 |             22 |
| 10006   | 2017-10-01 | beijing |   20 |    0 | 2017-10-01 07:00:00 |   15 |              2 |              2 |
+---------+------------+---------+------+------+---------------------+------+----------------+----------------+
3 rows in set (0.02 sec)

mysql> select city, sum(cost) as total_cost from example_tbl group by city;
+-----------+------------+
| city      | total_cost |
+-----------+------------+
| beijing   |         37 |
| shanghai  |        200 |
| guangzhou |         30 |
| shenzhen  |        111 |
+-----------+------------+
4 rows in set (0.03 sec)

9.远程连接

三方数据库管理工具链接参数,默认root用户无密码

虽然我们要连接到doris,但是这里只需要选择MySQL即可

<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:9030</jdbc-url>
<user-name>root</user-name>

在这里插入图片描述

除了三方工具,还可以访问ui界面 Playground

在这里插入图片描述

至此安装完成,附关闭命令

/opt/apache-doris-1.2.4.1-bin-x86_64/fe/bin/stop_fe.sh
/opt/apache-doris-1.2.4.1-bin-x86_64/be/bin/stop_be.sh
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐