Linux 系统 |
版本 |
CentOS |
7.1 及以上 |
Ubuntu |
16.04 及以上 |
一、Doris概述
Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求:
Linux 操作系统版本需求:
软件需求:
软件 |
版本 |
Java |
1.8 |
GCC |
4.8.2 及以上 |
时钟同步
Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。
关闭交换分区(swap)
Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区
Linux文件系统
ext4和xfs文件系统均支持。
Doris整体架构如下图所示,Doris架构非常简单,只有两类进程
Frontend(FE):主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
Backend(BE):主要负责数据存储、查询计划的执行。
注1:
- FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
- BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。
- 一台机器上虽然可以部署多个 BE,但只建议部署一个实例,同时只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)
- 测试环境也可以仅适用一个 BE 进行测试。
- 实际生产环境,BE 实例数量直接决定了整体查询延迟。
- 所有部署节点关闭 Swap。
注2:
- FE 节点的数量FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower)。
- FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
- Follower 的数量必须为奇数,Observer 数量随意。
- 根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。
- 通常我们建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)
- 当然,Doris的性能与节点数量及配置正相关。在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。
- 如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。
二、安装部署
1、环境需要准备mysql、JDK以及Doris安装包。
JDK官网下载地址Java Downloads | Oracle
[root@node1 tmp]# wget https://download.oracle.com/otn/java/jdk/11.0.22+9/8662aac2120442c2a89b1ee9c67d7069/jdk-11.0.22_linux-x64_bin.tar.gz?AuthParam=1708332186_1be3fdf931328e94bc691cbf6fe71eb1
[root@node1 tmp]# tar xf jdk-11.0.22_linux-x64_bin.tar.gz?AuthParam=1708332186_1be3fdf931328e94bc691cbf6fe71eb1 -C /usr/java/
export JAVA_HOME=/usr/java/jdk-11.0.22/
export PATH=$PATH:$JAVA_HOME/bin
[root@node1 tmp]# source /etc/profile ---使配置生效
[root@node1 tmp]# java --version ---查看Java版本,验证配置是否生效
2、下载安装包
官网下载地址Download - Apache Doris
[root@node1 tmp]# wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.0-bin-x64.tar.gz
3、修改limits文件
[root@node1 ~]# vi /etc/security/limits.conf
- soft nofile 65536
- hard nofile 65536
- soft nproc 65536
- hard nproc 65536
添加
fs.file-max = 6553560
vm.max_map_count = 2000000
[root@node1 ~]# sysctl -p ---执行生效
[root@node1 ~]# swapoff -a --关闭交换分区
4、解压安装包
[root@node1 tmp]# mkdir -p /data/doris
[root@node1 tmp]# tar xf apache-doris-2.0.0-bin-x64.tar.gz -C /data/doris/
5、配置启动FE
[root@node1 tmp]# vi /data/doris/apache-doris-2.0.0-bin-x64/fe/conf/fe.conf
priority_networks = 192.168.12.0/24
meta_dir = /data/doris/doris-meta
priority_networks 是 FE 和 BE 都有的一个配置,配置项需写在 fe.conf 和 be.conf 中。该配置项用于在 FE 或 BE 启动时,告诉进程应该绑定哪个IP。
注意:
这里你可以不配置,默认是在你的Doris FE 安装目录下的 doris-meta,单独配置元数据目录,需要你提前创建好你指定的目录。
生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置。
[root@node1 ~]# mkdir /data/doris/doris-meta ---创建元数据目录
[root@node1 tmp]# sh /data/doris/apache-doris-2.0.0-bin-x64/fe/bin/start_fe.sh --daemon ---后台启动FE
前台启动(建议首次启动使用前台,便于查看运行信息,检测是否正常启动)
[root@node1 tmp]# sh /data/doris/apache-doris-2.0.0-bin-x64/fe/bin/start_fe.sh
[root@node1 tmp]# sh /data/doris/apache-doris-2.0.0-bin-x64/fe/bin/stop_fe.sh ---停止FE节点
检查 Doris 是否启动成功
[root@node1 ~]# curl http://127.0.0.1:8030/api/bootstrap
如果返回结果中带有
"msg":"success" 字样,则说明启动成功。
6、配置启动BE
[root@node1 tmp]# vi /data/doris/apache-doris-2.0.0-bin-x64/be/conf/be.conf
export JAVA_HOM=/usr/local/jdk/ ---配置 JAVA_HOME 环境变量
priority_networks = 192.168.12.0/24
storage_root_path = /data/doris/doris-storage/
由于从 1.2 版本开始支持 Java UDF 函数,BE 依赖于 Java 环境。所以要预先配置 `JAVA_HOME` 环境变量,也可以在 `start_be.sh` 启动脚本第一行添加 `export JAVA_HOME=your_java_home_path` 来添加环境变量。
[root@node1 tmp]# mkdir /data/doris/doris-storage/ ---创建BE 数据存储目录
注意:
- 默认目录在 BE安装目录的 storage 目录下。
- BE 配置的存储目录必须先创建好
[root@node1 tmp]# sh /data/doris/apache-doris-2.0.0-bin-x64/be/bin/start_be.sh --daemon ----后台启动BE
前台启动(建议首次启动使用前台,便于查看运行信息,检测是否正常启动)
[root@node1 tmp]# sh /data/doris/apache-doris-2.0.0-bin-x64/be/bin/start_be.sh
[root@node1 tmp]# sh /data/doris/apache-doris-2.0.0-bin-x64/be/bin/stop_be.sh --停止BE节点
问题1:在启动BE时报下面错误
[root@node1 tmp]# sh /data/doris/apache-doris-2.0.0-bin-x64/be/bin/start_be.sh --daemon
Please set the maximum number of open file descriptors larger than 60000, eg: 'ulimit -n 60000'.
解决方法:
[root@node1 tmp]# ulimit -n 60000
问题2:在启动BE时报下面错误
[root@node1 tmp]# sh /data/doris/apache-doris-2.0.0-bin-x64/be/bin/start_be.sh --daemon
Please disable swap memory before installation, eg: 'swapoff -a'.
解决方法:
[root@node1 tmp]# swapoff -a
7、检查FE和BE是否启动成功
[root@node1 tmp]# jps
8、web测试
http:// fe_ip:8030 (账号 root 密码默认为空)
http://192.168.12.100:8030/login
注意:
- 这里我们使用 Doris 内置的默认用户 root 进行登录,密码是空
- 这是一个 Doris 的管理界面,只能拥有管理权限的用户才能登录,普通用户不能登录。
[root@node1 tmp]# mysql -uroot -P9030 -h 192.168.12.100
mysql> show frontends\G;
如果 IsMaster、Join 和 Alive 三列均为true,则表示节点正常
注意:
- 这里使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户,具体的用户权限查看 权限管理
- -P :这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是fe.conf里的 query_port
- -h : 这里是我们连接的 FE IP地址,如果你的客户端和 FE 安装在同一个节点可以使用192.168.12.100。