【大数据】Doris 的集群规划和环境准备

Doris 的集群规划和环境准备

  • 1.1 环境要求
    • 1.1 Linux 操作系统版本需求
    • 1.2 软件需求
  • 1.2 硬件要求
  • 1.3 节点规划
  • 1.4 通信端口
  • 1.5 IP 地址绑定

Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求。

1.1 环境要求

1.1 Linux 操作系统版本需求

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
  • 时钟同步:Doris 的元数据要求时间精度要小于 5000 ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。
  • 关闭交换分区swap):Linux 交换分区会给 Doris 带来很严重的性能问题,需要在安装之前禁用交换分区。
  • Linux 文件系统ext4xfs 文件系统均支持。

1.2 软件需求

软件 版本
Java 1.8 1.8 1.8
GCC 4.8.2 4.8.2 4.8.2 及以上

1.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
  • FE 的磁盘空间主要用于存储元数据,包括日志和镜像(image)。通常从几百 MB 到几个 GB 不等。
  • BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 × 3(3 副本)计算,然后再预留额外 40 40% 40 的空间用作后台合并数据以及一些中间数据的存放。
  • 一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是 1 台机器部署 3 个 BE 实例)。多个 FE 所在服务器的时钟必须保持一致(允许最多 5 秒的时钟偏差)。
  • 测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。
  • 所有部署节点关闭 Swap。

1.3 节点规划

通常我们建议 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 节点的角色,我们需要注意以下几点:

  • ✅ FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower)。
  • ✅ FE 节点数据至少为 1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
  • ✅ Follower 的数量必须为奇数,Observer 数量随意。
  • ✅ 根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1 1 1 ~ 3 3 3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1 1 1 ~ 3 3 3 个 Observer。

假设使用 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

1.4 通信端口

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 配置相同。部署前请确保各个端口在应有方向上的访问权限。

1.5 IP 地址绑定

因为有多网卡的存在,或因为安装过 Docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 IP。当前 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP。

priority_networks 是 FE 和 BE 都有的一个配置,配置项需写在 fe.confbe.conf 中。该配置项用于在 FE 或 BE 启动时,告诉进程应该绑定哪个IP。示例如下:

priority_networks=10.1.3.0/24

这是一种 CIDRClassless Inter-Domain Routing无类别域间路由)的表示方法。FE 或 BE 会根据这个配置项来寻找匹配的IP,作为自己的 localIP。

注意:当配置完 priority_networks 并启动 FE 或 BE 后,只是保证了 FE 或 BE 自身的 IP 进行了正确的绑定。而在使用 ADD BACKENDADD 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 即可。

你可能感兴趣的:(#,Doris,大数据,Doris,MPP,数据库,数据同步,数据分析)