Doris集群环境搭建

Doris集群机器规划以下是Doris集群的服务器规划配置信息,目前采用3节点混部模式。FE3个实例,BE3个实例,构成最低配集群。

服务器名 服务器IP 角色
Doris-node01 10.19.162.103 FE、BE
Doris-node02 10.19.162.104 FE、BE
Doris-node03 10.19.162.106 FE、BE

Doris简介

官网:首页 - Apache Doris

核心组件简介

  • Frontend(FE)

Java语言开发,存储和维护集群的元数据,负责接收和解析用户的查询请求,规划查询计化,调度查询结果 。

  •  Backend(BE)

C++语言开发,Doris 系统的计算和存储节点,根据FE生成的物理执行计划,然后进行查询(分布式,多节点并行执行查询,统一汇总),同时BE还会将数据存储为多副本。

  •  Broker

Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力,包括HDFS,S3,BOS等。

Doris端口列表

Doris集群环境搭建_第1张图片

 Doris镜像版本与编译环境对应关系

Doris集群环境搭建_第2张图片

Doris编译

这里doris镜像使用的是0.15.0,doris的版本为apache-doris-0.15.0-incubating-src.tar.gz

# 1.拉取镜像 在10.19.162.103宿主机上执行
docker pull apache/doris:build-env-for-0.15.0

# 2. 将容器中的 maven 下载的包保存到宿主机本地指定的文件中,避免重复下载,同时会将编译的 Doris 文件保存到宿主机本地指定的文件,方便部署  
docker run -it -v /root/dorisenv/.m2:/root/.m2 -v /root/dorisenv/incubator-doris-DORIS-0.13-release/:/root/incubator-doris-DORIS-0.13-release/ apache/doris:build-env-for-0.15.0

#  /root/dorisenv/.m2和/root/dorisenv/incubator-doris-DORIS-0.13-release/是宿主机挂载的目录,如下图所示

说明:以下步骤3、4、5均在docker实例内部执行

# 3. 在镜像中下载doris安装包,下载路径可以点击如下图位置查看
wget https://mirrors.tuna.tsinghua.edu.cn/apache/doris/0.15.0-incubating/apache-d

Doris集群环境搭建_第3张图片

上述源码大小15M,下载完毕,执行第4步

# 4.解压
tar -zxvf apache-doris-0.15.0-incubating-src.tar.gz 

#5.切换JDK8(由于本demo是JDK8环境,需切换到 JDK8,如果你用JDK11 16也可以切换到对应版本)
$ 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

# 6. 进入src目录,然后编译
 sh build.sh

构建过程部分截图1:

 Doris集群环境搭建_第4张图片

 构建过程部分截图2:

Doris集群环境搭建_第5张图片

 构建20分钟后:

Doris集群环境搭建_第6张图片

 编译后生成的文件在如下目录:

 

 其中be是后端,fe是前端,udf是用户自定义函数目录。

如果出现如下错误:

Plugin net.sourceforge.czt.dev:cup-maven-plugin:1.6-cdh or one of its dependencies could not be resolved: Could not find artifact net.sourceforge.czt.dev:cup-maven-plugin:jar:1.6-cdh in spring-plugins (https://repo.spring.io/plugins-release/)

修改 fe/pom.xml,调整前的pom.xml如下:


    
        central
        central maven repo https
        https://repo.maven.apache.org/maven
    
    
    
        cloudera-thirdparty
        https://repository.cloudera.com/content/repositories/third-party/
    
    
    
        oracleReleases
        http://download.oracle.com/maven
    



    
    
        spring-plugins
        https://repository.cloudera.com/artifactory/ext-release-local
    
     
        cloudera-public
        https://repository.cloudera.com/artifactory/public/
    

调整后的pom.xml如下:

 
     
         central
         central maven repo https
         https://repo.maven.apache.org/maven2
     
     
     
         cloudera-public
         https://repository.cloudera.com/artifactory/public/
     
     
     
         oracleReleases
         https://download.oracle.com/maven
     



    
        spring-plugins
        https://repository.cloudera.com/artifactory/ext-release-local
    
    
    
        cloudera-public
        https://repository.cloudera.com/artifactory/public/
    

Doris集群环境搭建_第7张图片

继续构建,在编译环境的当前机器执行命令:

cd /root/apache-doris-0.15.0-incubating-src
sh build.sh

FE安装

# 6 数据导出
#查看所有容器,包括运行与停止的容器
docker ps -a

#启动容器
docker start laughing_haslett

#进入容器 
docker attach laughing_haslett

#将编译好的文件拷出
docker cp laughing_haslett:/root/apache-doris-0.15.0-incubating-src/output/ /root/dorisenv

#为了保持环境一致,这里将容器的jdk导出,并配置环境变量
docker cp laughing_haslett:/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el7_9.x86_64/ /usr/lib/jvm/

#scp到其他机器
scp -r /usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el7_9.x86_64/ [email protected]:/usr/lib/jvm/

# 配置环境变量
vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el7_9.x86_64
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

配置FE

  • 拷贝FE部署文件到指定结点

将源码编译生成的output下的fe文件夹拷贝到FE的结点/root/apache-doris-0.15路径下

cp -r fe /root/apache-doris-0.15
  • 配置环境变量

vi /etc/profile

# 放在JAVA_HOME上方
#Doris hoem
export DORIS_HOME=/root/apache-doris-0.15
export PATH=$PATH:$DORIS_HOME/bin

#重新加载环境变量
source /etc/profile

配置fe.conf

Doris集群环境搭建_第8张图片

 Doris集群环境搭建_第9张图片

修改ip绑定:

Doris集群环境搭建_第10张图片

将安装目录分发到另外两台结点 

scp -r /root/apache-doris-0.15 [email protected]:/root/apache-doris-0.15

分发完之后配置环境变量并修改priority_networks

Doris集群环境搭建_第11张图片

 Doris集群环境搭建_第12张图片

 启动FE,10.19.162.103作为leader角色启动

sh /root/apache-doris-0.15/fe/bin/start_fe.sh --daemon 

#启动失败则配置JAVA_HOME使用 source /etc/profie

日志默认存放在fe/log/目录下

启动完成后,可以通过 http://10.19.162.103:8030/Configuration 访问:

Doris集群环境搭建_第13张图片

 使用datagrip修改密码

  • 删除操作系统自带的mysql库文件
rpm -qa | grep mariadb

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

连接到doris(密码为空):

Doris集群环境搭建_第14张图片

 设置密码:

SET PASSWORD FOR 'root' = PASSWORD('root')

Doris集群环境搭建_第15张图片

BE安装

配置BE

  •  拷贝BE部署文件到指定结点

将源码编译生成的output下的fe文件夹拷贝到FE的节点/root/apache-doris-0.15路径下

cp -r be /root/apache-doris-0.15
  • 创建目录 storage_root_path

mkdir -p /root/apache-doris-0.15/be/storage1
mkdir -p /root/apache-doris-0.15/be/storage2

执行后目录信息如下:

Doris集群环境搭建_第16张图片

  • 修改conf/be.conf,添加ip并设置存储空间
#设置ip
priority_networks = 10.19.162.110/24
#以下的10,表示最大的存储空间为10Gb
storage_root_path = /root/apache-doris-0.15/be/storage1,10;/root/apache-doris-0.15/be/storage2

 Doris集群环境搭建_第17张图片

Doris集群环境搭建_第18张图片

  •  添加BE节点port为BE上的heartbeat_service_port端口,默认为9050

ALTER SYSTEM ADD BACKEND "10.19.162.111:9050";
ALTER SYSTEM ADD BACKEND "10.19.162.110:9050";
  • 修改可打开文件数

vi  /etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

Doris集群环境搭建_第19张图片

 这种方法需要重启机器才能生效(所有BE节点都需要进行配置),否则启动不成功。

  •  配置BE的IP地址

Doris集群环境搭建_第20张图片

  •  将分发给其他节点 10.19.162.104、10.19.162.106,并修改be.conf的priority_networks

scp -r /root/apache-doris-0.15/be/ [email protected]:/root/apache-doris-0.15/

 Doris集群环境搭建_第21张图片

 • 分别登陆103、104、106机器上启动BE(注意,此步的be.conf中 storage_root_path = /root/apache-doris-0.15/be/storage1,10;/root/apache-doris-0.15/be/storage2一定要配好,否则会启动出错,并且storage1和storage2要删除重新建立)

# 可以多启动一次,如果启动报pid冲突,说明启动成功,否则表示启动失败,可以重启机器再次启动试试,如果还是不行,可以查看日志,查看具体原因
sh /root/apache-doris-0.15/be/bin/start_be.sh --daemon

日志默认存放在 be/log/ 目录下

[root@lab-hosta-vm02 log]# pwd
/root/apache-doris-0.15/be/log
[root@lab-hosta-vm02 log]# ls -l
总用量 4808
lrwxrwxrwx 1 root root      27 10月 15 14:40 be.INFO -> be.INFO.log.20221015-144010
-rw-r--r-- 1 root root 4860906 10月 16 23:32 be.INFO.log.20221015-144010
-rw-r--r-- 1 root root     165 10月 16 23:26 be.out
lrwxrwxrwx 1 root root      30 10月 16 09:03 be.WARNING -> be.WARNING.log.20221016-090328
-rw-r--r-- 1 root root   52587 10月 16 23:23 be.WARNING.log.20221016-090328
[root@lab-hosta-vm02 log]# tail -f be.INFO.log.20221015-144010

 • 3台服务器BE启动完毕,再利用Mysql-client或其他客户端工具登录103FE,通过SQL命令添加backends节点

mysql -uroot -h 10.19.162.103 -P 9030 -p
#密码为root
#或者通过客户端登录

#其中host为Broker所在节点ip,port为Broker配置文件(apache_hdfs_broker.conf)中的broker_ipc_port
ALTER SYSTEM ADD BACKEND "10.19.162.103:9050";
ALTER SYSTEM ADD BACKEND "10.19.162.104:9050";
ALTER SYSTEM ADD BACKEND "10.19.162.106:9050";

添加完之后再查询

SHOW PROC '/backends'

Doris集群环境搭建_第22张图片

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

Broker节点部署

BROKER以插件的形式,独立于Doris的部署,建议每个PE和BE节点都部署一个Broker,Broker是用于访问外部数据源的进程,默认是HDFS,上传编译好的hdfs_broker

# 进入容器laughing_haslett
docker start laughing_haslett
docker attach laughing_haslett

cd apache-doris-0.15.0-incubating-src
cd fs_brokers/
cd apache_hdfs_broker/

sh build.sh 

 编译好之后有一个output目录,这里存放了编译好的文件

Doris集群环境搭建_第23张图片

#将编译好的文件导出 pwd可以查看当前所在目录
docker cp laughing_haslett:/root/apache-doris-0.15.0-incubating-src/fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker/   /root/dorisenv/output/


# 将apache_hdfs_broker放入/root/apache-doris-0.15中,并分发给其他机器
cp -r apache_hdfs_broker/ /root/apache-doris-0.15/

scp -r /root/apache-doris-0.15/apache_hdfs_broker/ [email protected]:/root/apache-doris-0.15/

#分别启动Broker
sh /root/apache-doris-0.15/apache_hdfs_broker/bin/start_broker.sh --daemon

 jps查看如下:

Doris集群环境搭建_第24张图片

  • 通过SQL命令添加Broker节点

mysql -uroot -h 10.19.162.103 -P 9030 -p
#密码为root
#或者通过客户端dbeaver之前步骤提到的FE实例

#其中host为Broker所在节点ip,port为Broker配置文件(apache_hdfs_broker.conf)中的broker_ipc_port
alter system add broker broker_030406 "10.19.162.103:8000","10.19.162.104:8000","10.19.162.106:8000";

#查看broker状态
show proc '/brokers';

 Doris集群环境搭建_第25张图片

 注:在生产环境中,所有实例都应使用守护进程启动,以保证进程退出后,会被自动拉起,如 Supervisor (opens new window)。如需使用守护进程启动,在 0.9.0 及之前版本中,需要修改各个 start_xx.sh 脚本,去掉最后的 & 符号。从 0.10.0 版本开始,直接调用 sh start_xx.sh 启动即可。

FE的扩容与缩容

命令介绍

  • • 添加Follower或Oberser

首先连接到已启动的FE,并执行

#oberser只能用来读,follower用来做高可用,leader宕掉follower能重新选举一个leader顶上
alter system add follower "ip:port";
或
alter system add observer "ip:port";
  •  删除FE节点

alter system drop follower[observer] "ip:port"

Doris集群环境搭建_第26张图片

操作

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

# 登录104、106机器分别启动FE,需要指定103为leader
sh /root/apache-doris-0.15/fe/bin/start_fe.sh --helper 10.19.162.103:9010 --daemon 

至此3个节点都启动了FE实例,此外还需 使用 mysql-client 连接到已启动的103机器的FE,执行添加集群的SQL操作。由于我们期望部署3个FE,需要在SQL窗口执行以下两条命令:

#添加FE
ALTER SYSTEM ADD FOLLOWER "10.19.162.104:9010";
ALTER SYSTEM ADD FOLLOWER "10.19.162.106:9010";

再次查看FE实例

show proc '/frontends';

BE的扩容与缩容

BE节点的扩容和缩容过程,不影响当前系统运行以及正在执行的任务,并且不会影响当前系统的性能。数据均衡会自动进行。根据集群现有数据量的大小,集群会在几个小时到1天不等的时间内,恢复到负载均衡的状态。

  • • 使用mysql-client或客户端工具(dbeaver)连接到已启动的FE

  • • 通过执行以下SQL命令来增加BE节点

alter system add backend "ip:node"
#例 alter system add backend "10.19.162.103:9050"
  • • 删除BE节点

# 删除节点有两种方式:drop和decommission
alter system dropp backend “ndoe01:9050”; #硬删除
或者
alter system decommission backend "ndoe01:9050"; #软删除 推荐使用这个

查看所有BE

show proc '/backends'

本案例的BE扩容,已经在上述步骤完成,BE是3节点集群,具体参见上述安装BE步骤:“通过SQL命令添加Broker节点”。

Broker的扩容与缩容

Broker实例的数量没有硬性要求。通常每台物理机部署一个即可,Broker的添加和删除可以通过一下命令完成

alter system add broker broker_030406  "10.19.162.104:8000"
alter system add broker broker_030406  "10.19.162.106:8000"
alter system drop all broker broker_030406

Broker的扩容已经在上述步骤完成,具体操作参见上述安装Broker步骤:“通过SQL命令添加Broker节点”。

常用指令

sh /root/apache-doris-0.15/fe/bin/start_fe.sh --daemon 

sh /root/apache-doris-0.15/be/bin/start_be.sh --daemon

mysql -uroot -h 10.19.162.111 -P 9030 -p

show proc '/frontends';

show proc '/backends';

alter system add backend "10.19.162.111:9050";

alter system dropp backend "10.19.162.111:9050";

alter system decommission backend "10.19.162.110:9050";

SHOW PROC '/backends'\G

你可能感兴趣的:(doris,服务器,运维,云原生,大数据)