Doris的系统架构组成主要有:
BackEnd(后端节点),简称BE。
FrontEnd(前端节点),简称FE。
bdbje(BerkekeyDB Java Edition),负责元数据操作日志的持久化、FE 高可用等功能。

FE

主要负责查询的编译,分发和元数据管理。
FE 包含的三种角色的理解
leader跟follower,主要是用来达到元数据的高可用,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务。
observer只是用来扩展查询节点,就是说如果在发现集群压力非常大的情况下,需要去扩展整个查询的能力,那么可以加observer的节点。observer不参与任何的写入,只参与读取。

(1)管理元数据(库, 表, 分区, tablet副本等信息), 执行SQL语句命令。
(2)FE高可用部署, 使用复制协议选主和主从同步元数据, 所有的元数据修改操作, 由FE Leader节点完成, FE Follower节点可执行读操作。 元数据的读写满足顺序一致性。  FE的节点数目采用2n+1, 可容忍n个节点故障。当FE Leader故障时, 从现有的Follower节点重新选主, 完成故障切换。
Observer节点仅从 Leader节点进行元数据同步,不参与选举。能够横向扩展以提供元数据的读服务的扩展性。
(3)FE的SQL layer对用户提交的SQL进行解析, 分析, 语义分析和关系代数优化, 生产逻辑执行计划。
(4)FE的Planner负责把逻辑计划转化为可分布式执行的物理计划, 分发给一组BE。
(5)FE监督,管理BE的上下线, 根据BE的健康状态和存活数, 维持tablet副本的数量。
(6)FE协调数据导入, 保证数据导入的一致性。

BE

主要负责数据的存储、以及查询计划的执行
(1)BE管理tablet副本, tablet是table经过分区分桶形成的子表, 采用列式存储。
(2)BE受驱动FE, 创建或删除子表。
(3)BE接收FE分发的物理执行计划并指定BE coordinator节点, 在BE coordinator的调度下, 与其他BE worker共同协作完成执行。
(4)BE读取本地的列存储引擎获取数据,并通过索引和谓词下沉快速过滤数据。
(5)BE后台执行compact任务, 减少查询时的读放大。
(6)数据导入时, 由FE指定BE coordinator,将数据以fanout的形式写入到tablet多副本所在的BE上。

来源:

Apache Doris 为分析而生:Doris 架构_大数据左右手的博客-CSDN博客

Doris架构原理_959y的博客-CSDN博客

安装Docker环境

Docker 要求 CentOS 系统的内核版本高于3.10 ,首先查看系统内核版本是否满足

配置Docker Swarm

节点准备

准备搭建一个跨主机的集群

192.168.10.152 FE

192.168.10.150 BE

注意:

1.docker容器默认情况下,每次内网ip都有变动,但是fe节点如果启动以后ip发生变化,就会启动失败,fe.log中一直滚动 “wait catalog to be ready. FE type UNKNOWN”。BE注册给FE时候也需要固定ip注册,因此FE和BE启动时候回都要用–ip将ip固定住。

#上述解决办法是清理掉/opt/doris/fe/doris-meta中的内容,重启(初始化失败时候这样操作可以,如果是线上,还是应该尽量恢复原来的ip,不能轻易删除

2.doker主机之间默认是无法跨主机通信的,可以选择Docker Swarm使docker可以跨主机通信。

配置Docker Swarm

Docker Swarm是 Docker Overlay 网络的一种简易实现方式,它是 Docker 开发的容器集群管理工具, 与 Docker API 兼容性很好。

并且 Linux 中安装了 Docker,也默认会安装 Swarm。因此,在这里,我们采用 Swarm 实现 集群间的网络通信。

机器配置如下

192.168.10.152 manager

192.168.10.150 worker

1、在 manager 节点创建 Swarm 集群

docker swarm init --advertise-addr=192.168.10.152

效果如下:

docker swarm init --advertise-addr=192.168.10.152

[root@localhost ~]# docker swarm init --advertise-addr=192.168.10.152
Swarm initialized: current node (maw28ll7mlxuwp47z5c5vo2v1) is now a manager.
 
 To add a worker to this swarm, run the following command:
 
docker swarm join --token SWMTKN-1-2bdwwlo8xvdskil05itg66l63dpi931oqnt5gvehlnf1it1auo-2uvypbiu0hpcn1e06hrhctbe8 192.168.10.152:2377
 
To add a manager to this swarm, run ‘docker swarm join-token manager’ and follow the instructions.

2、在 worker 节点上执行命令,将自己加入集群

docker swarm join --token SWMTKN-1-2bdwwlo8xvdskil05itg66l63dpi931oqnt5gvehlnf1it1auo-2uvypbiu0hpcn1e06hrhctbe8 10

3、在 manager 节点,查看当前网络集群的节点情况

docker node ls

4、在 manager 节点,创建 overlay   网络

docker network create -d overlay  --attachable  demo

说明:

–attachable 声明当前创建的网络为:其他节点可以访问的网络

5、在 worker 节点的网络列表,是否多了这个网络

docker network ls

6、启动容器,指定该 overlay 网络

--net=demo --privileged=true

大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。

来源:Docker篇(七): 如何实现 Docker 容器 的跨主机通讯?

拉取Doris编译镜像(本地)

拉取

docker pull apache/incubator-doris:build-env-ldb-toolchain-latest

探测Swarm集群的ip段

1.启动ip测试镜像

docker run -it --name=ip_test -d --net=demo apache/incubator-doris:build-env-ldb-toolchain-latest

2.查看容器ip

docker inspect ip_test

图示位置就是后续doris启动容器应该使用的ip段(FE和BE都需要固定ip,否则重启以后ip变化会出现故障

在官网获取最新编译好的文件

https://doris.apache.org/zh-CN/download

解压be,fe同理

wget https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.1/1.1.4-rc01/apache-doris-fe-1.1.4-bin.tar.gz

tar -zxvf apache-doris-fe-1.1.4-bin.tar.gz

https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.1/1.1.4-rc01/apache-doris-be-1.1.4-bin-x86_64.tar.gz

tar -zxvf apache-doris-be-1.1.4-bin-x86_64.tar.gz

mv apache-doris-fe-1.1.4-bin.tar.gz Doris-be

mv apache-doris-be-1.1.4-bin-x86_64.tar.gz Doris-fe

创建Doris-Docker的文件,包括元数据文件夹(本地)

mkdir -p /opt/docker/doris

将编译好的FE和BE拷贝至Docker文件群内(本地)

cp -r Doris-fe/ /opt/docker/doris/fe
cp -r Doris-be/ /opt/docker/doris/be-01

将Doris-be scp到10.150的BE节点/opt/docker/doris/位置下

启动FE-Docker(10.152本地)

docker run -it -p 8030:8030 -p 9030:9030 -d --name=doris-fe  --net=demo --ip 10.0.1.99  --privileged=true  -v /opt/docker/doris/fe:/opt/doris/fe -v /opt/docker/doris/doris-meta:/opt/doris/doris-meta apache/incubator-doris:build-env-ldb-toolchain-latest

1.进入FE-Docker(本地)以及安装组件(FE-Docker)

进入fe-docker

docker exec -ti doris-fe /bin/bash

在FE-Docker中安装net-tools用于查看IP,因为已经固定了ip,这一步可以略过

yum install net-tools -y

2.修改FE配置(FE-Docker)

查看fe-docker的IPv4地址

ifconfig

修改配置文件

vim /opt/doris/fe/conf/fe.conf

取消priority_networks的注解,并根据Docker的网段进行配置

priority_networks = 10.0.1.0/16 #这里要根据你Docker的IP确定

“/24”表示这个IP的子网为24位,为子网掩码,指有24个“1”,即“255.255.255.0”。

子网掩码是4个8位2进制数组成的, 换化成10进制是就是现在这样的, 如255.255.255.0, 换成2进制的话就是11111111 11111111 11111111 00000000, 前面有24个1, 也就是ip/24,10.10.1.1/24 就表示ip是10.10.1.1, 子网掩码是255.255.255。

3.换Docker-JDK版本(FE-Docker)

切换Java版本为JDK1.8,该镜像默认为JDK11

alternatives --set java java-1.8.0-openjdk.x86_64
alternatives --set javac java-1.8.0-openjdk.x86_64
export JAVA_HOME=/usr/lib/jvm/java-1.8.0

校验是否切换版本成功

java -version

4.配置FE-Docker的环境变量(FE-Docker)

配置环境变量

vim /etc/profile.d/doris.sh

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

4.配置FE-Docker的环境变量(FE-Docker)

配置环境变量

vim /etc/profile.d/doris.sh

[外链图片转存中…(img-Ue9w36Ch-1714653808280)]
[外链图片转存中…(img-M48OVJO6-1714653808281)]
[外链图片转存中…(img-Mu5giheu-1714653808281)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐