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

发布时间:2023年12月20日

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内存磁盘网络实例数量
Frontend8核+8GB+SSD 或 SATA,10GB+千兆网卡1
Backend8核+16GB+SSD 或 SATA,50GB+千兆网卡1 - 3

生产环境

模块CPU内存磁盘网络实例数量(最低要求)
Frontend16核+64GB+SSD 或 RAID 卡,100GB+万兆网卡1 - 3
Backend16核+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.10doris-fe-01Leader、Broker
192.168.1.11doris-fe-02Follower、Broker
192.168.1.12doris-fe-03Follower、Broker
192.168.1.13doris-be-01BE
192.168.1.14doris-be-02BE
192.168.1.15doris-be-03BE
192.168.1.16doris-be-04BE
192.168.1.17doris-be-05BE

1.4 通信端口

Doris 各个实例直接通过网络进行通讯。以下表格展示了所有需要的端口。

实例名称端口名称默认端口通讯方向说明
BEbe_port 9060 9060 9060FE → BEBE 上 Thrift Server 的端口,用于接收来自 FE 的请求
BEwebserver_port 8040 8040 8040BE ? BEBE 上的 HTTP Server 的端口
BEheartbeat_service_port 9050 9050 9050FE → BEBE 上心跳服务端口(Thrift),用于接收来自 FE 的心跳
BEbrpc_port 8060 8060 8060FE ? BE,BE ? BEBE 上的 bRPC 端口,用于 BE 之间通讯
FEhttp_port 8030 8030 8030FE ? FE,用户 ? FEFE 上的 HTTP Server 端口
FErpc_port 9020 9020 9020BE → FE,FE ? FEFE 上的 Thrift Server 端口,每个 FE 的配置需要保持一致
FEquery_port 9030 9030 9030用户 ? FEFE 上的 MySQL Server 端口
FEarrow_flight_sql_port 9040 9040 9040用户 ? FEFE 上的 Arrow Flight SQL Server 端口
FEedit_log_port 9010 9010 9010FE ? FEFE 上的 BDB JE 之间通信用的端口
Brokerbroker_ipc_port 8000 8000 8000FE → Broker,BE → BrokerBroker 上的 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 即可。

文章来源:https://blog.csdn.net/be_racle/article/details/135032891
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。