apache doris数据库集群搭建(二)

news2025/2/24 18:10:41

1. 概述

该文档主要介绍了主要基于apache doris数据库搭建(一)的基础上进行集群搭建、升级、扩容操作讲解编写。

2.软硬件需求

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

Linux 操作系统版本需求

Linux 系统版本
CentOS7.1 及以上
Ubuntu16.04 及以上

软件需求

软件版本
Java1.8 及以上
GCC4.8.2 及以上

操作系统安装要求

设置系统最大打开文件句柄数,命令如下:

vi /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536

时钟同步

Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。

关闭交换分区(swap)

Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区

Linux文件系统

ext4和xfs文件系统均支持。

开发测试环境

模块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 *

注1:

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

注2:FE 节点的数量

  1. FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称
    Follower)。
  2. FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer
    时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
  3. Follower 的数量必须为奇数,Observer 数量随意。
  4. 根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 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 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。

Broker 部署

Broker 是用于访问外部数据源(如 hdfs)的进程。通常,在每台机器上部署一个 broker 实例即可。

网络需求

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

实例名称端口名称默认端口通讯方向说明
BEbe_port9060FE --> BEBE 上 thrift server 的端口,用于接收来自 FE 的请求
BEwebserver_port8040BE <–> BEBE 上的 http server 的端口
BEheartbeat_service_port9050FE --> BEBE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
BEbrpc_port8060FE <–> BE, BE <–> BEBE 上的 brpc 端口,用于 BE 之间通讯
FEhttp_port8030FE <–> FE,用户 <–> FEFE 上的 http server 端口
FErpc_port9020BE --> FE, FE <–> FEFE 上的 thrift server 端口,每个fe的配置需要保持一致
FEquery_port9030用户 <–> FEFE 上的 mysql server 端口
FEedit_log_port9010FE <–> FEFE 上的 bdbje 之间通信用的端口
Brokerbroker_ipc_port8000FE --> Broker, BE --> BrokerBroker 上的 thrift server,用于接收请求

注:
当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。
部署前请确保各个端口在应有方向上的访问权限。

IP 绑定

因为有多网卡的存在,或因为安装过 docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 ip。当前 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP。
priority_networks 是 FE 和 BE 都有的一个配置,配置项需写在 fe.conf 和 be.conf 中。该配置项用于在 FE 或 BE 启动时,告诉进程应该绑定哪个IP。示例如下:

priority_networks=192.168.50.190/24

这是一种 CIDR 的表示方法。FE 或 BE 会根据这个配置项来寻找匹配的IP,作为自己的 localIP。

注意:当配置完 priority_networks 并启动 FE 或 BE 后,只是保证了 FE 或 BE 自身的 IP 进行了正确的绑定。而在使用 ADD BACKEND 或 ADD FRONTEND 语句中,也需要指定和 priority_networks 配置匹配的 IP,否则集群无法建立。举例:

BE 的配置为:priority_networks=192.168.50.190/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默认为表名大小写敏感,如有表名大小写不敏感的需求需在集群初始化时进行设置。表名大小写敏感性在集群初始化完成后不可再修改。

3.集群部署

环境规划

服务器名服务器IP角色
node0192.168.50.190FE、BE、Master
node1192.168.50.189FE、BE
node2192.168.50.188FE、BE

首先我们通scp -r 目标文件 root@ip:/data命令将文件分发到其余两台服务器,并且修改对应的ip地址,操作命令如下:

vim be.conf #进入其余两台服务器的doris/be文件下,笔者这里的ip是192.168.50.189
mkdir -p /data/data_dir/ /data/doris-meta/ #在其余分别两个台服务器执行创建

BE添加扩展

在这里插入图片描述

注意:另一台服务器同理,笔者这里不做演示了(另外一台ip是192.168.50.188)

修改完成,使用如下命令进行添加 BE 节点到集群:

mysql -uroot -h 192.168.50.190 -P 9030 -p
#密码为root
#或者通过客户端登录
#通过MySQL 客户端连接到 FE 之后执行下面的 SQL,将 BE 添加到集群中
ALTER SYSTEM ADD BACKEND "192.168.50.188:9050";
ALTER SYSTEM ADD BACKEND "192.168.50.189:9050";

分别到node0和node1的be文件目录下启动对应的be服务,具体命令如下图所示:

./bin/start_be.sh --daemon

注意:如果提示Please set vm.max_map_count to be 2000000 under root using ‘sysctl -w vm.max_map_count=2000000’.就按照提示执行对应的sysctl -w vm.max_map_count=2000000命令

Alive字段为true,说明BE状态正常,已加入集群。

在这里插入图片描述

FE添加扩展

首先进入doris的fe/conf目录下使用如下命令进行编辑fe.conf文件,修改ip:

vim fe.conf #进入其余两台服务器的doris/fe文件下,笔者这里的ip是192.168.50.189

在这里插入图片描述在这里插入图片描述

注意:另一台服务器同理,笔者这里不做演示了(另外一台ip是192.168.50.188);原先历史ip为192.168.50.190【apache doris数据库搭建(一)】

FE 注意事项:
1. Follower FE(包括 Master)的数量必须为奇数,建议最多部署 3 个组成高可用>> (HA)模式即可。
2. 当 FE 处于高可用部署时(1个 Master,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。
3. 通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。
4. helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。

操作

启动node0 node1的FE服务(之前已启动192.168.50.190机器FE作为leader角色)特别说明:–helper 参数仅在 follower 和 observer 第一次启动时才需要。

## ./bin/start_fe.sh --helper leader_fe_host:edit_log_port --daemon
./bin/start_fe.sh --helper 192.168.50.190  --daemon

添加完成之后通过 SHOW PROC ‘/frontends’\G; 可查看FE状态,查看Alive是否为true,为True证明添加成功
在这里插入图片描述
至此3个节点都启动了FE实例,此外还需 使用 mysql-client 连接到已启动的node2机器的FE,执行添加集群的SQL操作。由于我们期望部署2个FE,将node2改成OBSERVER 需要在SQL窗口执行以下三条命令:

#添加FE
ALTER SYSTEM ADD FOLLOWER "192.168.50.189:9010";
ALTER SYSTEM ADD FOLLOWER "192.168.50.189:9010";
#执行前需要删除node2的OBSERVER alter system,drop follower[observer] "ip:port"
ALTER SYSTEM ADD OBSERVER "192.168.50.190:9010";

再次查看FE实例

show proc '/frontends';

在这里插入图片描述

注意: 如果后续要扩充对应的FE节点通过对应的sql命令ALTER SYSTEM ADD FOLLOWER “ip:port”`
进行添加即可,BE节点通过sql命令 :

ALTER SYSTEM ADD BACKEND "ip:port";

至此笔者doris数据库集群搭建讲解完毕,哪里有疑问及时联系笔者 本节版本为1.2.1.4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/755052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java Exception输出错误详细信息

1、直接输出Exception try {//上传代码} catch (Exception e) {throw new RuntimeException("上传训练数据失败&#xff1a;" e);}输出结果&#xff1a;只输出错误原因&#xff0c;不输出错误发生的位置 2、e.getMessage() throw new RuntimeException("上…

Thymeleaf解析

thymeleaf是一个XML/XHTML/HTML5模板引擎&#xff0c;可用于Web与非Web环境中的应用开发 最开始网站开始发展时&#xff0c;使用HTML展示网页&#xff0c;随着技术的发展和需求变化&#xff0c;出现了前后端交互的页面&#xff0c;不需要使用多个页面去展示一个大同小异的页面。…

Android TvSettings Bug: 密码框无法点击唤起输入法

概述 Android 10 的Box方案&#xff0c; 默认使用的是TvSettings作为系统设置&#xff0c;输入操作的习惯上是使用鼠标&#xff0c;键盘&#xff0c;遥控&#xff0c;日常的场景是没有问题&#xff0c;也不会出现本文中提及的问题。当外接的USB触摸屏后&#xff0c;出现无法点击…

华润燃气牵手腾讯云 数字技术助力燃气行业高质量发展

7月13日&#xff0c;华润燃气与腾讯云正式签署战略合作协议。双方将充分发挥各自优势&#xff0c;探索AI大模型在燃气行业的深度应用&#xff0c;并深耕分布式计算、连接和客户运营等领域&#xff0c;不断提升燃气民生服务的效率、质量&#xff0c;共同推动行业数字化转型和高质…

echarts3D地图+3D柱状图+3D飞线图

echarts版本&#xff1a;5.4.0 echarts-gl版本&#xff1a;2.0.8 示例代码&#xff1a; <template><div><div ref"chinaMap" id"chinaMap" style"width: 90vw;height: 90vh;"></div></div> </template>&l…

【ArcGIS Pro二次开发】(49):村规数据入库【福建省】

之前用Arcpy脚本工具做了一个村规数据入库和主要图纸生成工具。 在使用过程中&#xff0c;感觉对电脑环境比较高&#xff0c;换电脑用经常会一些莫名其妙的错误&#xff0c;bug修得很累。近来随着ArcGIS Pro SDK的熟悉&#xff0c;就有了移植的想法。 这里先把村规数据入库工…

【量化课程】02_2.货币金融学基础概念

2.2_货币金融学基础概念 文章目录 2.2_货币金融学基础概念概述金融体系货币利率利率的风险结构与期限结构货币供给过程中国货币政策工具货币政策效果货币数量论、通货膨胀与货币需求总需求与总供给分析货币政策理论货币政策传导机制 概述 金融市场&#xff1a;资金从剩余方转向…

解决git每次提交都需要输入用户密码

一、背景 在github上贴上了服务器ssh的公钥后&#xff0c;在服务器上推送代码仍旧提示需要输入git的账号和密码。 二、原因 这是因为此时的仓库是http协议下载的&#xff0c;此时的链接并不是通过ssh的&#xff0c;因此在推送代码时&#xff0c;会提示输入git的账号和密码。…

基于Python编写一个B站全自动抽奖的小程序

本文将利用Python编写一个B站全自动抽奖的小程序&#xff0c;可以实时监控自己关注的UP主&#xff0c;如果关注的UP主中有人发布了抽奖的动态&#xff0c;就自动参与这个抽奖。这样就能不错过任何一个可以暴富的机会了。需要的可以参考一下 导语 应好友邀请&#xff0c;帮他写…

i.MX6ULL(十五) 根文件系统

Linux“三巨头”已经完成了 2 个了&#xff0c;就剩最后一个 rootfs( 根文件系统 ) 了&#xff0c;本章我们就来学 习一下根文件系统的组成以及如何构建根文件系统。这是 Linux 移植的最后一步&#xff0c;根文件系统 构建好以后就意味着我们已经拥有了一个完整的、可以运…

Python isdigit()函数使用详解

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 isdigit函数使用详解 1、包含负数的情况2、包含小数的情况3、带圈的数字4、数字上…

重封装Ehcache与Redis模板以便于一二级缓存同步数据(二)

参考: 一级缓存二级缓存的获取与更新顺序&#xff08;一) 简单封装Ehcache与RedisTemplate模版 通常使用一二级缓存时,必须保持一二级缓存数据数据与数据库中数据保持一致 &#xff1b;此时可以简单封装下,一二级缓存的相关接口,便于我…

数据结构(王道)——线性表的存储结构之链表存储

线性表的链表存储&#xff1a; 一、单链表定义&#xff1a; 用代码定义一个单链表&#xff1a; 不带头结点的单链表定义&#xff1a; 带头结点的单链表定义&#xff1a; 单链表定义总结&#xff1a; 二、单链表的基本操作&#xff08;插入删除查找&#xff09; 1、插入 如何在…

手机图片怎么转pdf格式?这几个图片转换方式了解一下

手机图片怎么转pdf格式&#xff1f;将图片转换为PDF的应用场景非常广泛。例如&#xff0c;你可以将多张照片转换为PDF&#xff0c;然后将其作为一本电子相册保存。你也可以将多张图片转换为PDF&#xff0c;然后将其作为一份报告或文档的附件发送给他人。此外&#xff0c;许多人…

⌈C++⌋深度剖析构造、拷贝构造与赋值运算符重载——深浅拷贝、explicit、类型转换等

目录 一、认识拷贝构造函数 1、什么是拷贝构造 2、深拷贝与浅拷贝 3、编译器可以绕过拷贝构造函数&#xff08;C Primer P442&#xff09; 4、explicit修饰 二、认识赋值运算符重载 1、赋值运算符重载格式 2、默认赋值运算符重载 3、赋值运算符都必须定义为成员函数 …

内网使用JRebel及踩坑点

目录 前言外网正常使用JRebel下载安装插件授权 内网授权方式搭建本地授权服务器安装JRebel的电脑网络切换为手机热点 设置脱机离线模式设置自动重新部署时间间隔使用JRebel之前需要的配置项勾选compiler -> build project automatically设置代码热部署配置JRebel热部署的项目…

979.在二叉树中分配硬币

979.在二叉树中分配硬币 给定一个有 N 个结点的二叉树的根结点 root&#xff0c;树中的每个结点上都对应有 node.val 枚硬币&#xff0c;并且总共有 N 枚硬币。 在一次移动中&#xff0c;我们可以选择两个相邻的结点&#xff0c;然后将一枚硬币从其中一个结点移动到另一个结点…

Ubuntu新版静态IP设置

cd /etc/netplan直接编辑 sudo vi /etc/netplan/00-installer-config.yaml#network: # ethernets: # ens160: # dhcp4: true # version: 2network:version: 2ethernets:ens160:dhcp4: noaddresses: [172.17.10.23/24]optional: truegateway4: 172.17.10.1nameservers…

【Linux】无法连外网,只能用压缩包,环境搭建流程

【Linux】无法连外网&#xff0c;只能用压缩包&#xff0c;环境搭建流程 【一】JDK&#xff08;1&#xff09;下载jdk安装包&#xff08;2&#xff09;解压安装包&#xff08;3&#xff09;修改环境变量&#xff08;4&#xff09;测试是否安装成功 【二】安装mysql【1】5.7版本…

Prometheus、Grafana使用

文章目录 系统性能监控相关命令lscputopfreehtopdstatglancesiftopiptrafnethogs 监控软件Prometheus安装、使用将promethues做成服务监控其他机器 exportergrafana配置、使用 系统性能监控 相关命令 lscpu lscpu 是一个 Linux 命令&#xff0c;用于显示关于 CPU&#xff08…