【大数据】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 文件系统:
ext4
和xfs
文件系统均支持。
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.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 即可。
相关文章:
【大数据】Doris 的集群规划和环境准备
Doris 的集群规划和环境准备 1.1 环境要求1.1 Linux 操作系统版本需求1.2 软件需求 1.2 硬件要求1.3 节点规划1.4 通信端口1.5 IP 地址绑定 Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势…...

connect: Network is unreachable问题解决
第一步:查看ifcfg-ens33配置文件 cd /etc/sysconfig/network-scripts/ cat ifcfg-ens33 发现问题:GATEWAY写错成GATWAY 第二步:修改 vim ifcfg-ens33 第三步:检测是否成功 ping baidu.com 成功!...

三层交换与DHCP
目录 一、三层交换 (一)基本概念 (二)转发原理 (三)ensp项目实验 二、DHCP (一)DHCP工作原理 1.DHCP的特点 2.工作原理 (二)DHCP项目实验 一、三层交…...

02markdown-学习笔记
一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 换行符<br>标签 写入一段测试用的正文第二段测试文本,如果要对文本进行换行可以使用<br>标签 文本修饰符 字体为斜体的修饰,一对星号包含 字符为粗体,两对星号包含 字体为…...

UE5 动画 Sequencer-学习笔记
P2. 课程介绍 资料:https://www.bilibili.com/video/BV1Ag411873f?p2&vd_source707ec8983cc32e6e065d5496a7f79ee6 Sequencer不仅可以做互动动画,还可以导出视频与序列帧 P3-4. 界面介绍 https://www.bilibili.com/video/BV1Ag411873f?p3&spm_…...

visual studio code 好用的插件
vscode-icons Better comments 该插件对不同类型的注释会附加了不同的颜色,更加方便区分,帮助我们在代码中创建更人性化的注释。 Error Lens Error Lens插件是一款可以检测你编写的代码的语法错误,并且会显示出对语法错误的诊断信息…...

Redis 过期删除策略、内存回收策略、单线程理解
不知从何开始Redis的内存淘汰策略也开始被人问及,卷!真的是太卷了。难不成要我们去阅读Redis源码吗,其实问题的答案,在Redis中的配置文件中全有,不需要你阅读源码、这个东西就是个老八股,估计问这个东西是想…...
oracle 如何把数据库 date 日期格式 的数据 改成 2021-01-27
如果您要将日期"27-12月-29"更改为"2021-01-27"格式,您可以使用Oracle的日期格式化函数和字符串替换函数来实现。 以下是一个示例SQL语句,将日期"27-12月-29"更改为"2021-01-27"格式: sql UPDATE…...

Git 使用教程(超级详细)
目录 一:Git二:SVN与Git的的区别三、安装Git四:常规操作五:远程仓库六:创建与合并分支七:bug分支八:多人协作九:git可视化工具 Git Git 是一种分布式版本控制系统,用于…...

动态规划习题
动态规划的核心思想是利用子问题的解来构建整个问题的解。为此,我们通常使用一个表格或数组来存储子问题的解,以便在需要时进行查找和使用。 1.最大字段和 #include <iostream> using namespace std; #define M 200000int main() {int n, a[M], d…...
安卓免Root做klipper上位机教程
软件说明:虚拟电脑可以在8.0以上没越狱的安卓系统中安装klipper上位机程序实现对已刷入klipper固件的3D打印控制板的控制欢迎下载安装测试,反馈碰到的问题。安装步骤:1). 在手机上打开浏览器,访问这个网址 http://droidvm.com/cn/…...
网络安全学习之信息泄露
一、背景以及泄露途径 通常我们会对数据进行备份,比如我们在发布网站的时候会对将要替换的版本进行备份。我们在对重要文件进行修改的时候我们也需要进行备份,如果我们对备份或缓存的文件或信息为做好管理,很容易就导致我们的敏感信息泄露。…...

Java智慧工地源码,智慧工地管理平台的技术架构和工作原理
智慧工地管理平台是将互联网的理念和技术引入建筑工地,从施工现场源头抓起,最大程度的收集人员、安全、环境、材料等关键业务数据,依托物联网、互联网,建立云端大数据管理平台,形成“端云大数据”的业务体系和新的管理…...

Nginx配合Vue的history模式
加上一行代码就行: try_files $uri $uri/ /index.html;...

持续集成交付CICD:Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前端应用的蓝绿发布
目录 一、实验 1.蓝绿发布准备 2.Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前端应用的蓝绿发布 二、问题 1.手动构建Jenkins前端项目CI流水线报错 2.如何优化手动构建流水线选项参数 一、实验 1.蓝绿发布准备 (1)环境 表1 蓝绿发布…...
计算机网络中的通信子网主要有哪些功能?
计算机网络中的通信子网主要具有以下功能: 负责全网的数据通信:通信子网通过使用各种通信协议和传输控制功能,能够确保数据从一台主机安全、准确地传输到另一台主机。这包括数据的封装、解封装、传输控制、差错控制等过程。 完成各种网络数据…...

【大数据-Hadoop】从入门到源码编译-概念篇
【大数据-Hadoop】从入门到源码编译-概念篇 Hadoop与大数据生态(一)Hadoop是什么?(二)Hadoop组成1. HDFS1.1 NameNode(nn)1.2 DataNode(dn)1.3 Secondary NameNode&#…...
什么是设计模式
一、概述 1、设计模式是解决某些问题的办法 2、设计模式不是凭空想象出来的,是经验的总结和积累 3、设计模式是不断的发展的 4、各个行业都有自己的设计模式 二、设计模式的基本要素 设计模式一般包括模式的名称、问题、目的、解决方案、效果、实例代码和相关…...

Typescript中Omit数据类型的理解
在 TypeScript 中,Omit 是一个内置的工具类型,它用于从对象类型中排除指定的属性,并返回剩余的属性。 Omit 的语法如下所示: type Omit<T, K> Pick<T, Exclude<keyof T, K>>;其中,T 表示原始类型…...
【ArcGIS Pro微课1000例】0055:Pro中如何处理个人数据库(.mdb)
文章目录 原因分析解决方案使用ArcGIS Pro的用户应该已经发现个人地理数据库(.mdb)不能使用了。随着ESRI的软件技术革新,在ArcGIS Pro中不再支持且将来也不会支持个人地理数据库(.mdb)。这个确实很烦人,很多项目还是在使用mdb数据库的。不过ESRI也给出了一些解决办法,不…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...