Doris安装有非常多的方法,这里主要介绍Docker中使用dev容器用来学习和测试的方法,避免在其他教程中踩坑(生产环境不建议使用Docker安装)
这里介绍一个不踩坑的docker本地单机版,笔者安装环境为Windows下的Docker,若为Linux系统安装基本一样,Linux只会更好装
文章目录
- 1.安装Docker
- 2.修改内核参数
- 3.下载Docker 开发环境镜像
- 4.下载安装包
- 5.启动镜像环境
- 6.配置fe
- 7.配置be
- 8.建表测试
- 9.远程连接
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;
注意:
- 这里使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户,具体的用户权限查看 权限管理
- -P :这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是fe.conf里的
query_port
- -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