Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库。这里我们搭建一个开发环境用的doris数据库。
1. 下载二进制文件
https://doris.apache.org/zh-CN/download
有以下3个文件
- apache-doris-fe-1.2.2-bin-x86_64.tar.xz
- apache-doris-be-1.2.2-bin-x86_64.tar.xz
- apache-doris-dependencies-1.2.2-bin-x86_64.tar.xz
2. 解压文件
安装xz 解压工具
apt-get install xz-utils
xz -d xxx.tar.xz
tar -vxf xxx.tar
将apache-doris-dependencies-1.2.2-bin-x86_64.tar.xz中的 java-udf-jar-with-dependencies.jar 放到 be/lib 目录下
3. 环境变量
如果没有java环境,需要安装。配置JAVA_HOME,否则BE启动不了,在/etc/profile.d 下创建 cus.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
4. 配置Fe
priority_networks = 192.168.0.0/24
5. 启动Fe
./bin/start_fe.sh --daemon
启动之后,需要通过mysqlclient 去操作,我这个windows本地无法安装mysqlclient,所以直接起了个mysql docker容器。
sh-4.4# mysql -uroot -P 9030 -h127.0.0.1
mysql> show frontends\G;
*************************** 1. row ***************************
Name: 192.168.0.82_9010_1676970986009
IP: 192.168.0.82
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 940981989
Join: true
Alive: true
ReplayedJournalId: 17790
LastHeartbeat: 2023-02-22 09:44:50
IsHelper: true
ErrMsg:
Version: doris-1.2.2-rc01-Unknown
CurrentConnected: Yes
1 row in set (0.04 sec)
ERROR:
No query specified
6.配置Be
修改be 下 conf/be.conf 文件
priority_networks = 192.168.0.0/24
7.启动Be
./bin/start_be.sh --daemon
8.讲Be添加到集群中
通过MySQL 客户端连接到 FE 之后执行下面的 SQL,将 BE 添加到集群中
ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
be_host_ip:这里是你 BE 的 IP 地址,和你在 be.conf 里的 priority_networks 匹配
heartbeat_service_port:这里是你 BE 的心跳上报端口,和你在 be.conf 里的 heartbeat_service_port 匹配,默认是 9050。
我这边执行的是
ALTER SYSTEM ADD BACKEND "192.168.0.82:9050";
mysql> show BACKENDS\G;
*************************** 1. row ***************************
BackendId: 10003
Cluster: default_cluster
IP: 192.168.0.82
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-02-22 10:04:23
LastHeartbeat: 2023-02-22 10:04:51
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 0
DataUsedCapacity: 0.000
AvailCapacity: 59.535 GB
TotalCapacity: 78.439 GB
UsedPct: 24.10 %
MaxDiskUsedPct: 24.10 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-1.2.2-rc01-Unknown
Status: {"lastSuccessReportTabletsTime":"2023-02-22 10:04:30","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
1 row in set (0.09 sec)
ERROR:
No query specified
10.测试操作
mysql> create database doris_demo;
Query OK, 0 rows affected (0.04 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| doris_demo |
| information_schema |
+--------------------+
2 rows in set (0.11 sec)
mysql> CREATE TABLE IF NOT EXISTS doris_demo.example_tbl
-> (
-> `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"
-> );
Query OK, 0 rows affected (0.13 sec)
mysql> show tables;
+----------------------+
| Tables_in_doris_demo |
+----------------------+
| example_tbl |
+----------------------+
1 row in set (0.02 sec)
至此,doris 部署完成。