Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求。
Linux 系统 | 版本 |
---|---|
CentOS | 7.1 7.1 7.1 及以上 |
Ubuntu | 16.04 16.04 16.04 及以上 |
操作系统安装要求
# 设置系统最大打开文件句柄数
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
swap
):Linux 交换分区会给 Doris 带来很严重的性能问题,需要在安装之前禁用交换分区。ext4
和 xfs
文件系统均支持。软件 | 版本 |
---|---|
Java | 1.8 1.8 1.8 |
GCC | 4.8.2 4.8.2 4.8.2 及以上 |
开发测试环境
模块 | CPU | 内存 | 磁盘 | 网络 | 实例数量 |
---|---|---|---|---|---|
Frontend | 8核+ | 8GB+ | SSD 或 SATA,10GB+ | 千兆网卡 | 1 |
Backend | 8核+ | 16GB+ | SSD 或 SATA,50GB+ | 千兆网卡 | 1 - 3 |
生产环境
模块 | CPU | 内存 | 磁盘 | 网络 | 实例数量(最低要求) |
---|---|---|---|---|---|
Frontend | 16核+ | 64GB+ | SSD 或 RAID 卡,100GB+ | 万兆网卡 | 1 - 3 |
Backend | 16核+ | 64GB+ | SSD 或 SATA,100G+ | 万兆网卡 | 3 |
image
)。通常从几百 MB 到几个 GB 不等。通常我们建议 10 10 10 ~ 100 100 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)。当然,Doris 的性能与节点数量及配置正相关。在最少 4 台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer 的 FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。
如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。Broker 是用于访问外部数据源(如 HDFS)的进程。通常,在每台机器上部署一个 Broker 实例即可。
关于 FE 节点的角色,我们需要注意以下几点:
假设使用 3 个 FE、5 个 BE 节点来搭建 Doris 集群,部署角色如下表所示:
IP | 节点名称 | 角色 |
---|---|---|
192.168.1.10 | doris-fe-01 | Leader、Broker |
192.168.1.11 | doris-fe-02 | Follower、Broker |
192.168.1.12 | doris-fe-03 | Follower、Broker |
192.168.1.13 | doris-be-01 | BE |
192.168.1.14 | doris-be-02 | BE |
192.168.1.15 | doris-be-03 | BE |
192.168.1.16 | doris-be-04 | BE |
192.168.1.17 | doris-be-05 | BE |
Doris 各个实例直接通过网络进行通讯。以下表格展示了所有需要的端口。
实例名称 | 端口名称 | 默认端口 | 通讯方向 | 说明 |
---|---|---|---|---|
BE | be_port | 9060 9060 9060 | FE → BE | BE 上 Thrift Server 的端口,用于接收来自 FE 的请求 |
BE | webserver_port | 8040 8040 8040 | BE ? BE | BE 上的 HTTP Server 的端口 |
BE | heartbeat_service_port | 9050 9050 9050 | FE → BE | BE 上心跳服务端口(Thrift),用于接收来自 FE 的心跳 |
BE | brpc_port | 8060 8060 8060 | FE ? BE,BE ? BE | BE 上的 bRPC 端口,用于 BE 之间通讯 |
FE | http_port | 8030 8030 8030 | FE ? FE,用户 ? FE | FE 上的 HTTP Server 端口 |
FE | rpc_port | 9020 9020 9020 | BE → FE,FE ? FE | FE 上的 Thrift Server 端口,每个 FE 的配置需要保持一致 |
FE | query_port | 9030 9030 9030 | 用户 ? FE | FE 上的 MySQL Server 端口 |
FE | arrow_flight_sql_port | 9040 9040 9040 | 用户 ? FE | FE 上的 Arrow Flight SQL Server 端口 |
FE | edit_log_port | 9010 9010 9010 | FE ? FE | FE 上的 BDB JE 之间通信用的端口 |
Broker | broker_ipc_port | 8000 8000 8000 | FE → Broker,BE → Broker | Broker 上的 Thrift Server,用于接收请求 |
当部署多个 FE 实例时,要保证 FE 的 http_port
配置相同。部署前请确保各个端口在应有方向上的访问权限。
因为有多网卡的存在,或因为安装过 Docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 IP。当前 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks
配置项来强制指定正确的 IP。
priority_networks
是 FE 和 BE 都有的一个配置,配置项需写在 fe.conf
和 be.conf
中。该配置项用于在 FE 或 BE 启动时,告诉进程应该绑定哪个IP。示例如下:
priority_networks=10.1.3.0/24
这是一种 CIDR
(Classless Inter-Domain Routing
,无类别域间路由)的表示方法。FE 或 BE 会根据这个配置项来寻找匹配的IP,作为自己的 localIP。
注意:当配置完
priority_networks
并启动 FE 或 BE 后,只是保证了 FE 或 BE 自身的 IP 进行了正确的绑定。而在使用ADD BACKEND
或ADD FRONTEND
语句中,也需要指定和priority_networks
配置匹配的 IP,否则集群无法建立。例如 BE 的配置为:priority_networks=10.1.3.0/24
,但是在ADD BACKEND
时使用的是:ALTER SYSTEM ADD BACKEND "192.168.0.1:9050"
,则 FE 和 BE 将无法正常通信。这时,必须DROP
掉这个添加错误的 BE,重新使用正确的 IP 执行ADD BACKEND
。FE 同理。
BROKER 当前没有,也不需要 priority_networks
这个选项。Broker 的服务默认绑定在 0.0.0.0
上。只需在 ADD BROKER
时,执行正确可访问的 BROKER IP 即可。