大规模并行处理架构Doris编译部署篇

news2024/9/25 9:30:05

目录

  • 1 Doris编译
    • 1.1 使用 Docker 开发镜像编译(推荐)
      • 1.1.1 遇到的问题
      • 1.1.1 遇到的问题
    • 1.2 直接编译(CentOS/Ubuntu)
      • 1.2.1 环境准备
      • 1.2.2 系统依赖(一次性安装)
      • 1.2.3 手动安装系统依赖
        • 1.2.3.1 CMake 3.11+
        • 1.2.3.2 GCC 7.3+
        • 1.2.3.3 Bison 3.0+
        • 1.2.3.4 其它
      • 1.2.4 开始编译 Doris
      • 1.2.5 遇到的问题
      • 1.2.6 编译成功
  • 2 安装与部署
    • 2.1 软硬件需求
    • 2.2 资源规划
    • 2.3 启动FE
      • 2.3.1 配置环境变量
      • 2.3.2 创建doris-mate
      • 2.3.3 修改fe.conf中的JAVA_OPTS
      • 2.3.4 修改ip绑定(可选)
      • 2.3.5 将安装目录分发到另外两台节点
      • 2.3.6 启动FE
    • 2.4 配置BE
      • 2.4.1 配置be节点
      • 2.4.2 创建storage_root_path, 并配置be.conf
    • 2.5 添加BE
      • 2.5.1 使用mysql连接
      • 2.5.2 添加be
      • 2.5.3 修改可打开文件数
      • 2.5.4 修改ip绑定
      • 2.5.5 将安装目录分发到另外两台节点
      • 2.5.6 启动BE
      • 2.5.7 查看FE 和 BE
    • 2.6 添加FS_BROKER(可选)
      • 2.6.1 配置broker节点
      • 2.6.2 将安装目录分发到另外两台节点
      • 2.6.3 启动 Broker
      • 2.6.4 添加broker节点
      • 2.6.5 查看 Broker 状态
    • 2.7 扩容缩容
      • 2.7.1 FE 扩容和缩容
      • 2.7.2 BE 扩容和缩容
      • 2.7.3 Broker 扩容缩容


1 Doris编译

在这里插入图片描述

该章节主要介绍了部署 Doris 所需软硬件环境、建议的部署方式、集群扩容缩容,以及集群搭建到运行过程中的常见问题。

Apache Doris提供直接可以部署的版本压缩包:https://cloud.baidu.com/doc/PALO/s/Ikivhcwb5

也可以自行编译压缩包后使用(推荐)

1.1 使用 Docker 开发镜像编译(推荐)

这个是官方文档推荐的,可以非常方便顺利的编译源码,如果需要快速部署的,可以使用这种方式。这种方式的优点就是不用配置环境变量,也不用考虑各种版本问题,进入开发镜像系统后直接下载 doris 源码编译即可。

首先需要安装 Docker,Docker 在 Linux 下安装比较简单,可以参考以下附件:

Docker的基本使用:https://blog.csdn.net/ZGL_cyy/article/details/111612296

如果已经启动了 Docker 服务(systemctl status docker),我们直接拉取镜像,开始编译 Doris。

操作步骤说明
1拉取Doris官方提供的Docker镜像,目前可用版本有:build-env、build-env-1.1、build-env-1.2
docker pull apachedoris/doris-dev:build-env-1.2
2查看 Docker 镜像
在这里插入图片描述
3运行镜像
将容器中的 maven 下载的包保存到宿主机本地指定的文件中,避免重复下载,同时会将编译的 Doris 文件保存到宿主机本地指定的文件,方便部署
docker run -it -v /u01/.m2:/root/.m2 -v /u01/incubator-doris-DORIS-0.13-release/:/root/incubator-doris-DORIS-0.13-release/ \apachedoris/doris-dev:build-env-1.2
开启之后, 就在容器内了
4下载Doris的安装包
cd /optwget https://dist.apache.org/repos/dist/dev/incubator/doris/0.13/0.13.0-rc3/ apache-doris-0.13.0.0-incubating-src.tar.gz
5解压安装
tar -zxvf apache-doris-0.13.0.0-incubating-src.tar.gz
cd apache-doris-0.13.0.0-incubating-src
6开始编译(*此过程需要等待很久,根据网速来定*
sh build.sh
7编译完成
在这里插入图片描述在这里插入图片描述

|

1.1.1 遇到的问题

1.1.1 遇到的问题

l 其中错误重点:

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/)

l 解决方式:

vi fe/pom.xml change
centralcentral maven repo httpshttps://repo.maven.apache.org/maven2 cloudera-publichttps://repository.cloudera.com/artifactory/public/ oracleReleaseshttp://download.oracle.com/maven spring-pluginshttps://repository.cloudera.com/artifactory/ext-release-local cloudera-publichttps://repository.cloudera.com/artifactory/public/
在这里插入图片描述
然后再次重新执行编译

1.2 直接编译(CentOS/Ubuntu)

使用直接编译方式需要注意第三方包的下载一定要下载指定连接的包且务必完整。

1.2.1 环境准备

l Centos Linux release 7.7.1908

l GCC 7.3+

l Oracle JDK 1.8+

l Python 2.7+

l Apache Maven 3.5+

l CMake 3.11+

l Bison 3.0+

1.2.2 系统依赖(一次性安装)

如果一次性安装所需软件,可以直接使用官方的如下命令:

sudo yum groupinstall ‘Development Tools’ && sudo yum install maven cmake byacc flex automake libtool bison binutils-devel zip unzip ncurses-devel curl git wget python2 glibc-static libstdc+±static java-1.8.0-openjdk

1.2.3 手动安装系统依赖

如果单独安装可以参考如下步骤

1.2.3.1 CMake 3.11+

#  0 基本的务必安装yum install -y zip unzip curl git wget python2 
#  1 下载并解压# 访问 https://cmake.org/files,比如以 linux x86_64 系统为例,安装 3.11.4,可以下载如下wget https://cmake.org/files/v3.11/cmake-3.11.4-Linux-x86_64.tar.gztar -zxf cmake-3.11.4-Linux-x86_64.tar.gz 
#  2 编译或创建软连#cd cmake-3.11.4-Linux-x86_64#./bootstrap --prefix=/usr/local/cmakemv cmake-3.11.4-Linux-x86_64 /usr/local/cmakeln -s /usr/local/cmake/bin/cmake /usr/bin/cmake # 3 添加到环境变量export PATH=$PATH:/usr/local/cmake/bin # 查看版本验证cmake --version

1.2.3.2 GCC 7.3+

这一步非常重要,最好下载满足条件的版本,耐心的编译,否则因为 GCC 版本或者包的问题容易在编译 Doris 出现一系列莫名的错误,因为 Doris 中依赖了较多的三方库(可以查看thirdparty/vars.sh),其中有些三方库会一般都需要对应的版本对 GCC 有一些要求。

# 1 查看环境中的 gcc 是否满足条件gcc -v 
# 2 环境(必须)yum groupinstall "Development Tools"yum install -y glibc-static libstdc++-staticyum install -y byacc flex automake libtool binutils-devel ncurses-devel 
# 3 下载 GCC # 例如这里下载 gcc 7.3.0 版本# 官网下载页:https://gcc.gnu.org/releases.html## 
# 3.1 方式一【推荐】:编译方式(以 华中科技大源 为例)wget http://mirror.hust.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.xztar -xf gcc-7.3.0.tar.xzcd gcc-7.3.0
# 下载需要的包# 需方访问 ftp://gcc.gnu.org/pub/gcc/infrastructure/,
#  如果失败可以将 mpc-1.0.3.tar.gz、mpfr-3.1.4.tar.bz2、isl-0.16.1.tar.bz2、gmp-6.1.0.tar.bz2 包下载放到项目根目录下./contrib/download_prerequisites# 编译mkdir buildcd build../configure --prefix=/usr/local/gcc-7.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 若给的资源不够,会导致编译时间较长make -j$[$(nproc)/4+1]make install 
# 3.2 方式二:解压后创建软连直接使用wget 
https://gfortran.meteodat.ch/download/x86_64/releases/gcc-7.5.0.tar.xztar -xf gcc-7.5.0.tar.xzmv gcc-7.5.0 /usr/local/ # 4【可选】卸载或备份rpm -q gccrpm -e gcc-4.8.5-39.el7.x86_64rpm -q libmpcrpm -q mpfr
# 【推荐】备份mv /usr/bin/gcc /usr/bin/gcc_oldmv /usr/bin/g++ /usr/bin/g++_oldmv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6_old 
# 5 创建软连ln -s /usr/local/gcc-7.3.0/bin/gcc /usr/bin/gccln -s /usr/local/gcc-7.3.0/bin/g++ /usr/bin/g++cp /usr/local/gcc-7.3.0/lib64/libstdc++.so.6.0.24 /usr/lib64/ln -s /usr/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6ln -s /usr/local/gcc-7.3.0/lib64/libatomic.so.1 /usr/lib64/libatomic.so.1 
# 5 查看版本以验证gcc -vg++ -vstrings /usr/lib64/libstdc++.so.6 | grep GLIBC

1.2.3.3 Bison 3.0+

# 1 查看当前系统的 Bsion 版本bison -V 
# 2 如果没有,则需要安装wget http://ftp.gnu.org/gnu/bison/bison-3.0.5.tar.xztar -xf bison-3.0.5.tar.xzcd bison-3.0.5mkdir buildcd build../configure --prefix=/usr/local/bison-3.0.5make && make install 
# 3 替换为新版本mv /usr/bin/bison /usr/bin/bison_oldln -s /usr/local/bison-3.0.5/bin/bison /usr/bin/bison

1.2.3.4 其它

Apache Maven 需要 3.5+ 、Oracle JDK 1.8+ 、Python 2.7+ 这些可自行查找相关资料进行安装。

1.2.4 开始编译 Doris

操作步骤说明
1下载Doris的安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/incubator/doris/0.13.0-incubating/ apache-doris-0.13.0.0-incubating-src.tar.gz
2解压缩
3上传“doris编译修改的配置文件\thirdparty\vars.sh”脚本文件覆盖到“/export/softwares/ apache-doris-0.13.0.0-incubating-src/thirdparty”目录
在这里插入图片描述
4【为加速编译可以使用提供的第三方包】
上传“doris直接编译需要下载的第三方包”目录下所有文件上传到“/export/softwares/ apache-doris-0.13.0.0-incubating-src/thirdparty/src”目录
在这里插入图片描述
5开始编译
# 从 0.13 版本开始,因为协议的不兼容,移除了 mysql-5.7.18 和 lzo-2.10 库# 如果需要访问 mysql 外部表,可以编译时手动添加 WITH_MYSQL=1# 如果需要继续使用 LZO 压缩算法(例如访问早期写入数据时),添加 WITH_LZO=1# 如果编译的机器网速很慢,可以后台执行 #WITH_MYSQL=1 sh build.sh >log.txt 2>&1 &# --clean
WITH_MYSQL=1 sh build.sh

1.2.5 遇到的问题

1 js_generator.cc:(.text+0xfc3c): undefined reference to `well_known_types_js’

查找 Doris 源码中的 js_embed,一般在三方库的 protobuf 下,直接移除掉,重新编译即可

find ./ -name js_embed
mv ./thirdparty/src/protobuf-3.5.1/src/js_embed ./

2 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found

问题的原因就是在使用 gcc 编译时,使用本地环境的库 libstdc++.so.6 中的方法时找不到需要的信息,一般是在安装或升级是没有把环境变量的这个库文件升级,解决方法如下:

find / -name "libstdc++.so*"cd /usr/lib64strings /usr/lib64/libstdc++.so.6 | grep GLIBC 
# 查看 /usr/lib64 目录下的 libstdc 开头的文件[root@node1 lib64]# ll libstdc*lrwxrwxrwx 1 root root   19 Nov 19 09:07 libstdc++.so.6 -> libstdc++.so.6.0.19-rwxr-xr-x 1 root root 995840 Sep 30 10:17 libstdc++.so.6.0.19 
# 把高版本的拷贝到 /usr/lib64 下cp /usr/local/gcc-7.3.0/lib64/libstdc++.so.6.0.24 ./
# 创建软连接rm libstdc++.so.6ln -s libstdc++.so.6.0.24 libstdc++.so.6

3 libatomic.so.1: cannot open shared object file: No such file or directory

编译三方包时如果报如下的错误

./comp_err: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
make[3]: * [include/mysqld_error.h] Error 127
make[2]: * [extra/CMakeFiles/GenError.dir/all] Error 2
make[1]: * [libmysql/CMakeFiles/mysqlclient.dir/rule] Error 2
make: * [mysqlclient] Error 2

原因是安装 gcc 或升级之后,其中的 libatomic.so.1 包没有在环境变量中生效,我们直接将新版本 gcc 的安装目录下的 libatomic.so.1 软连到 /usr/lib64 下即可。

ln -s /usr/local/gcc-7.3.0/lib64/libatomic.so.1 /usr/lib64/libatomic.so.1

4 Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)

在编译安装 GCC 7.3 时,其中我们安装了 ncurses-devel,如果忽略了这个,系统环境又没有安装,则在编译 Doris 时就会报这个错误,解决方法就是 yum 安装这个依赖。

yum install ncurses-devel

5 configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

环境中缺少依赖,解决方法如下:

yum install  gmp  gmp-devel  mpfr  mpfr-devel  libmpc  libmpc-devel

6 error while loading shared libraries: libisl.so.15: cannot open shared object file: No such file or directory

这个问题比较隐蔽,通过访问 http://rpm.pbone.net/搜索 libisl.so.15 库。

在这里插入图片描述

在查询出的结果中,我们查找 CentOS7 的条目,可以发下这个库为 libisl15-0.18-9.94.el7.x86_64.rpm,到这里问题就好解决了,我们直接下载这个包安装即可

在这里插入图片描述

wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/aevseev:/devel/CentOS7/x86_64/libisl15-0.18-9.94.el7.x86_64.rpmrpm -ivh libisl15-0.18-9.94.el7.x86_64.rpm

7 Could not resolve dependencies for project org.apache:fe-core:jar:3.4.0: Failure to find com.sleepycat:je:jar:7.3.7

原因就是通过 https://repo.spring.io/libs-milestone/com/sleepycat/je/7.3.7/je-7.3.7.jar 下载包时需要用户认证,所以会下载失败,可以在 Maven 配置文件 setting.xml 中新增如下的仓库镜像,重新编译即可。

<mirror> <id>oracleReleases</id> 
<mirrorOf>oracleReleases</mirrorOf> 
<name>Oracle Released Java Packages</name> 
<url>http://download.oracle.com/maven</url>
</mirror>

8 A required class was missing while executing net.sourceforge.czt.dev:cup-maven-plugin:1.6-cdh:generate: org/sonatype/plexus/build/incremental/BuildContext

清除 Maven 本地仓库的 cup-maven-plugin(Maven 配置的仓库路径下的 net/sourceforge/czt/dev/cup-maven-plugin/1.6-cdh),为了防止其他镜像资源的影响,可以先将本地 Maven 配置文件中添加的其它镜像注释掉,可以只保留下面的一个镜像,用来可以正常下载 je-7.3.7.jar 依赖包。

</mirrors>  <mirror>   <id>oracleReleases</id>   <mirrorOf>oracleReleases</mirrorOf>   <name>Oracle Released Java Packages</name>   <url>http://download.oracle.com/maven</url>  </mirror></mirrors>

Doris 源码下的 fe/pom.xml 中的 标签里的检查下,可以修改为如下链接,然后再次执行编译即可

<!-- for general repository --><profile><id>general-env</id><activation><property><name>!env.CUSTOM_MAVEN_REPO</name></property></activation> <repositories><repository><id>central</id><name>central maven repo https</name><url>https://repo.maven.apache.org/maven2</url></repository><!-- for java-cup --><repository><!---<id>cloudera-thirdparty</id><url>https://repository.cloudera.com/content/repositories/third-party/</url>--><id>cloudera-public</id><url>https://repository.cloudera.com/artifactory/public/</url></repository><!-- for bdb je --><repository><id>oracleReleases</id><url>http://download.oracle.com/maven</url></repository></repositories> <pluginRepositories><pluginRepository><id>spring-plugins</id><!--<url>https://repo.spring.io/plugins-release/</url>--><url>https://repository.cloudera.com/artifactory/ext-release-local</url></pluginRepository><!-- for cup-maven-plugin --><pluginRepository><!--<id>cloudera-plugins</id><url>https://repository.cloudera.com/content/groups/public/</url>--><id>cloudera-public</id><url>https://repository.cloudera.com/artifactory/public/</url></pluginRepository></pluginRepositories></profile>

1.2.6 编译成功

Doris 编译成功后控制台显示如下 Successfully build Doris

在这里插入图片描述

同时编译成功后会在项目根目录下生成 output/,其中为编译之后可以直接部署的二进制包,大概有 1.2GB。

在这里插入图片描述

2 安装与部署

该章节主要介绍了部署 Doris 所需软硬件环境、建议的部署方式、集群扩容缩容,以及集群搭建到运行过程中的常见问题

2.1 软硬件需求

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

l Linux 操作系统版本需求

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

l 软件需求

软件版本
Java1.8及以上
GCC7.3及以上

l 开发测试环境

模块CPU内存磁盘网络实例数量
Frontend8核+8GB+SSD 或 SATA,10GB+ *千兆网卡1
Backend8核+16GB+SSD 或 SATA,50GB+ *千兆网卡1-3 *

l 生产环境

模块CPU内存磁盘网络实例数量
Frontend16核+64GB+SSD 或 RAID,100GB+ *万兆网卡1-5 *
Backend16核+64GB+SSD 或 SATA,100GB+ *万兆网卡10-100 *

注意点一:

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

注意点二:FE 节点的数量

Ø FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower,具体含义见 元数据设计文档)。Ø FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。Ø Follower 的数量必须为奇数,Observer 数量随意。Ø 根据以往经验,当集群可用性要求很高是(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。

n 通常我们建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)

n 当然,Doris的性能与节点数量及配置正相关。在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。

n 如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。

l Broker 部署

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

l 网络需求

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

在这里插入图片描述

注意点:

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

2.2 资源规划

node1node2node3
FE(Leader)FE(Follower)FE(Follower)
BEBEBE
BROKERBROKERBROKER

注意点:

Ø 因测试环境资源有限,FE和BE节点部署在相同服务器,生产环境建议分开

2.3 启动FE

2.3.1 配置环境变量

l 拷贝 FE 部署文件到指定节点(node1)

将源码编译生成的 output 下的 fe 文件夹拷贝到 FE 的节点/export/server/apache-doris-0.13.0路径下
在这里插入图片描述

l 配置环境变量

vim /etc/profile
#DORIS_HOMEexport DORIS_HOME=/export/server/apache-doris-0.13.0export PATH=: D O R I S H O M E / b i n : DORIS_HOME/bin: DORISHOME/bin:PATH
在这里插入图片描述
重新加载环境变量:source /etc/profile

2.3.2 创建doris-mate

l 配置文件为 fe/conf/fe.conf。其中注意:meta_dir:元数据存放位置。默认在 fe/doris-meta/ 下。需手动创建该目录

mkdir -p /export/server/apache-doris-0.13.0/fe/doris-meta
在这里插入图片描述

l 配置fe/conf/fe.conf配置文件

vim conf/fe.conf
meta_dir = /export/server/apache-doris-0.13.0/fe/doris-meta
在这里插入图片描述

|

2.3.3 修改fe.conf中的JAVA_OPTS

l fe.conf 中 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

在这里插入图片描述

2.3.4 修改ip绑定(可选)

如果机器有多个ip, 比如内网外网, 虚拟机docker等, 需要进行ip绑定, 以便在配置集群时可以正确识别

修改fe服务的配置文件(ip地址根据环境实际ip进行修改)
vim /export/server/apache-doris-0.13.0/fe/conf/fe.conf
priority_networks = 192.168.10.0/24
在这里插入图片描述

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

scp -r /export/server/apache-doris-0.13.0/ node2:/export/server/
scp -r /export/server/apache-doris-0.13.0/ node3:/export/server/

2.3.6 启动FE

三台机器分别启动
sh /export/server/apache-doris-0.13.0/fe/bin/start_fe.sh --daemon
日志默认存放在 fe/log/ 目录下

2.4 配置BE

2.4.1 配置be节点

l 拷贝 BE 部署文件到指定节点(node1)

将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点/export/server/apache-doris-0.13.0路径下
在这里插入图片描述

2.4.2 创建storage_root_path, 并配置be.conf

配置文件为 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用 ; 分隔(最后一个目录后不要加 ;)
mkdir -p /export/server/apache-doris-0.13.0/be/storage1 /export/server/apache-doris-0.13.0/be/storage2
在这里插入图片描述
vim conf/be.conf
storage_root_path = /export/server/apache-doris-0.13.0/be/storage1,10;/export/server/apache-doris-0.13.0/be/storage2
在这里插入图片描述

2.5 添加BE

2.5.1 使用mysql连接

操作步骤说明
1删除操作系统自带的mysql库文件(node1)
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
在这里插入图片描述
2安装mysql-client
上传”资料\软件\mysql-client”目录下的rpm到服务器节点/export/server/mysql-client
在这里插入图片描述
3进行安装
在这里插入图片描述
rpm -ivh *
在这里插入图片描述
4连接node1服务器上的mysql实例(默认端口9030,默认没有密码)
mysql -uroot -h node1 -P 9030
在这里插入图片描述
5登陆后,可以通过以下命令修改 root 密码
SET PASSWORD FOR ‘root’ = PASSWORD(‘123456’);
在这里插入图片描述
6使用Navicat客户端登录
在这里插入图片描述

2.5.2 添加be

操作步骤说明
1BE 节点需要先在 FE 中添加,才可加入集群(node1)
mysql -uroot -h node1 -P 9030 -p
输入密码:123456
2登录后添加BE节点port为be上的heartbeat_service_port端口,默认9050
ALTER SYSTEM ADD BACKEND “node1:9050”;ALTER SYSTEM ADD BACKEND “node2:9050”;ALTER SYSTEM ADD BACKEND “node3:9050”;
在这里插入图片描述
3查看BE状态,alive必须为true
SHOW PROC ‘/backends’;
在这里插入图片描述
查看 BE 运行情况。如一切正常,isAlive 列应为 true

2.5.3 修改可打开文件数

ulimit -n 65535

上述方式在重启系统后失效

或者修改配置文件: /etc/security/limits.conf, 添加

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

在这里插入图片描述

这种方法需要重启机器才能生效(所有BE节点都需要进行配置)

否则启动不成功, 日志报错

在这里插入图片描述

2.5.4 修改ip绑定

如果机器有多个ip, 比如内网外网, 虚拟机docker等, 需要进行ip绑定, 以便在配置集群时可以正确识别

修改fe服务的配置文件(ip地址根据环境实际ip进行修改)
vim /export/server/apache-doris-0.13.0/be/conf/be.conf
priority_networks = 192.168.10.0/24
在这里插入图片描述

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

scp -r /export/server/apache-doris-0.13.0/be node2:/export/server/apache-doris-0.13.0
scp -r /export/server/apache-doris-0.13.0/be node3:/export/server/apache-doris-0.13.0

2.5.6 启动BE

三台机器分别启动
sh /export/server/apache-doris-0.13.0/be/bin/start_be.sh --daemon
日志默认存放在 fe/log/ 目录下

2.5.7 查看FE 和 BE

l 在mysql终端中

show proc ‘/frontends’;
在这里插入图片描述
show proc ‘/backends’;
在这里插入图片描述
查看 BE 运行情况。如一切正常,isAlive 列应为 true

l 通过前端界面访问FE:

http://192.168.52.150:8030/frontend

http://192.168.52.150:8030/system?path=//frontends

在这里插入图片描述

l 通过前端界面访问BE:

http://192.168.52.150:8030/backend

http://192.168.52.150:8030/system?path=//backends

在这里插入图片描述

用户名为root, 密码为空

2.6 添加FS_BROKER(可选)

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

2.6.1 配置broker节点

拷贝源码 fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点上。建议和 BE 或者 FE 目录保持同级。
编译fs_broker
在这里插入图片描述
在这里插入图片描述
拷贝output目录的部署到node1节点
docker cp b1e2fa82ab35:/ apache-doris-0.13.0-incubating-src/fs_brokers/apache_hdfs_broker/output /export/server/apache-doris-0.13.0/
在这里插入图片描述

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

进入/export/server/apache-doris-0.13.0目录
scp -r apache_hdfs_broker/ node2:/export/server/apache-doris-0.13.0/
scp -r apache_hdfs_broker/ node3:/export/server/apache-doris-0.13.0/

2.6.3 启动 Broker

三台机器分别启动
sh /export/server/apache-doris-0.13.0/apache_hdfs_broker/bin/start_broker.sh --daemon
在这里插入图片描述

2.6.4 添加broker节点

使用mysql客户端访问pe,添加broker节点
mysql -uroot -h node1 -P 9030 -p
输入密码:123456
要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表
ALTER SYSTEM ADD BROKER broker_name “node1:8000”,“node2:8000”,“node3:8000”;
其中 host 为 Broker 所在节点 ip;port 为 Broker 配置文件中的 broker_ipc_port。

2.6.5 查看 Broker 状态

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

2.7 扩容缩容

Doris 可以很方便的扩容和缩容 FE、BE、Broker 实例。

2.7.1 FE 扩容和缩容

可以通过将 FE 扩容至 3 个以上节点来实现 FE 的高可用。

FE 节点的扩容和缩容过程,不影响当前系统运行

l 增加 FE 节点

FE 分为 Leader,Follower 和 Observer 三种角色。 默认一个集群,只能有一个 Leader,可以有多个 Follower 和 Observer。其中 Leader 和 Follower 组成一个 Paxos 选择组,如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。Observer 同步 Leader 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Leader。

第一个启动的 FE 自动成为 Leader。在此基础上,可以添加若干 Follower 和 Observer。

添加 Follower 或 Observer。使用 mysql-client 连接到已启动的 FE,并执行:

ALTER SYSTEM ADD FOLLOWER “ip:port”;
ALTER SYSTEM ADD OBSERVER “ip:port”;

其中host为Follower或Observer所在节点 ip,port 为其配置文件 fe.conf 中的 edit_log_port。

配置及启动 Follower或Observer。Follower 和 Observer 的配置同 Leader 的配置。

第一次启动时,需执行以下命令:

./bin/start_fe.sh --helper host:port --daemon

其中 host 为 Leader 所在节点 ip, port 为 Leader 的配置文件 fe.conf 中的 edit_log_port。–helper 参数仅在 follower 和 observer 第一次启动时才需要。

查看 Follower 或 Observer 运行状态。使用 mysql-client 连接到任一已启动的 FE,并执行:SHOW PROC ‘/frontends’; 可以查看当前已加入集群的 FE 及其对应角色。

FE 扩容注意事项:

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

l 删除 FE 节点

使用以下命令删除对应的 FE 节点:

ALTER SYSTEM DROP FOLLOWER[OBSERVER] “fe_host:edit_log_port”;

FE 缩容注意事项:

Ø 删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数

l 操作演示

操作步骤说明
1使用mysql客户端访问pe,添加broker节点
mysql -uroot -h node1 -P 9030 -p
输入密码:123456
2将node2节点添加为FOLLOWER
ALTER SYSTEM ADD FOLLOWER “node2:9010”;
在这里插入图片描述
3将node3节点添加为OBSERVER
ALTER SYSTEM ADD OBSERVER “node3:9010”;
在这里插入图片描述
4分别停止三台节点的fe服务(三台节点依次停止)
/export/server/apache-doris-0.13.0/fe/bin/stop_fe.sh
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5启动node1节点
sh /export/server/apache-doris-0.13.0/fe/bin/start_fe.sh --daemon
6启动node2节点(指定leader节点的位置)
sh /export/server/apache-doris-0.13.0/fe/bin/start_fe.sh --helper node1:9010 --daemon
7启动node3节点(指定leader节点的位置)
sh /export/server/apache-doris-0.13.0/fe/bin/start_fe.sh --helper node1:9010 --daemon
8查看fe节点列表
SHOW PROC ‘/frontends’;
在这里插入图片描述

2.7.2 BE 扩容和缩容

用户可以通过 mysql 客户端登陆 Master FE。

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

l 增加 BE 节点

BE 节点的增加方式同 BE 部署 一节中的方式,通过 ALTER SYSTEM ADD BACKEND 命令增加 BE 节点。

BE 扩容注意事项:

Ø BE 扩容后,Doris 会自动根据负载情况,进行数据均衡,期间不影响使用

l 删除 BE 节点

删除 BE 节点有两种方式:DROP 和 DECOMMISSION

DROP 语句如下:

ALTER SYSTEM DROP BACKEND “be_host:be_heartbeat_service_port”;

注意事项:

Ø DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!所以我们强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当你使用这个语句时,会有对应的防误操作提示。

DECOMMISSION 语句如下:

ALTER SYSTEM DECOMMISSION BACKEND “be_host:be_heartbeat_service_port”;

DECOMMISSION 命令说明:

Ø 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。Ø 该命令是一个异步操作。执行后,可以通过 SHOW PROC ‘/backends’; 看到该 BE 节点的 isDecommission 状态为 true。表示该节点正在进行下线。Ø 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。Ø DECOMMISSION 的进度,可以通过 SHOW PROC ‘/backends’; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。Ø 该操作可以通过:Ø CANCEL DECOMMISSION BACKEND “be_host:be_heartbeat_service_port”;Ø 命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡

2.7.3 Broker 扩容缩容

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

ALTER SYSTEM ADD BROKER broker_name “broker_host:broker_ipc_port”; ALTER SYSTEM DROP BROKER broker_name “broker_host:broker_ipc_port”; ALTER SYSTEM DROP ALL BROKER broker_name;

Broker 是无状态的进程,可以随意启停。当然,停止后,正在其上运行的作业会失败,重试即可。

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

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

相关文章

Linux驱动开发:SPI子系统

1、SPI简介 1.1 四根线 MISO&#xff1a;主设备数据输入&#xff0c;从设备数据输出。 MOSI&#xff1a;主设备数据输出&#xff0c;从设备数据输入。 SCLK&#xff1a;时钟信号&#xff0c;由主设备产生。 CS&#xff1a; 从设备片选信号&#xff0c;由主设备控制。 1.2…

《string类的使用介绍》

本文主要介绍string的常见的接口的使用 文章目录 一、什么是string类二、string类的使用1、string类对象的常见构造2、string类对象的容量操作3、string类对象的访问及遍历操作①operator[ ]的用法②迭代器③范围for 4、string类对象的修改操作①push_back②append③operator&a…

刷题笔记8| 344.反转字符串, 541. 反转字符串II, 剑指Offer 05.替换空格

344.反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 输入&#xff1a;s ["h","e",…

索引—MySQL

文章目录 1.定义以及相关知识1.1定义1.2数据库保存数据的基本单位 2.MySQL中索引分类2.1B树和B树2.2主键索引&#xff08;聚簇索引&#xff09;2.3非聚簇索引2.4覆盖索引2.5复合索引&#xff08;联合索引&#xff09;2.6基于B树的索引2.7hash索引 1.定义以及相关知识 1.1定义 …

okio篇--总览

看源码第一步&#xff0c;先去看看官网对okio的介绍&#xff1a; Okio 首先第一段&#xff1a; okio对bytes&#xff0c;做了两种形式的封装&#xff1a;ByteString和Buffer。 其中ByteString&#xff0c;是针对字符类的数据&#xff0c;内部封装一个byte数组&#xff0c;封…

网络协议与攻击模拟-06-ICMP重定向

■0网络不可达 ■2协议不可达 类型4源抑制 类型5重定向 2、 ICMP 常见的报文 响应请求 使用 ping 请求&#xff08; type 0)响应&#xff08; type 8) 目标不可达 type 3 源抑制 源抑制则充当一个控制流量的角色&#xff0c;它通知主机减少数据报流量&#xff0c;由于 I…

Django初识

1、简介 Django&#xff0c;是用python语言写的开源web开发框架&#xff0c;并遵循MVC设计。劳伦斯出版集团为了开发以新闻内容为主的网站&#xff0c;而开发出来了这个框架&#xff0c;于2005年7月在BSD许可证下发布。这个名称来源于比利时的爵士音乐家DjangoReinhardt&#…

操作系统第二章——进程与线程(中)

和光同尘&#xff0c;与时舒卷 文章目录 2.2.1 调度的概念&#xff0c;层次知识总览调度的基本概念高级调度低级调度中级调度三层调度的联系&#xff0c;对比进程的挂起态和七状态模型知识回顾 2.2.2 进程调度的时机&#xff0c;切换与过程&#xff0c;方式知识总览进程调度的时…

【C++】第二站:类和对象(中)拷贝构造函数

文章目录 一、拷贝构造函数的概念二、拷贝构造函数的特性三、深度剖析拷贝构造函数不采用引用会无限递归的原因1.C对于传参的两个规定2.如何解开这个无穷递归 四、拷贝构造函数的其他特性五、拷贝构造的一些使用场景 一、拷贝构造函数的概念 拷贝构造函数&#xff1a;只有单个形…

2.2 Linux控制台访问CLI

系列文章目录 第1章 Linux Shell简介 第2章 Shell基础 <本章所在位置> 第3章 Bash Shell基础命令 第4章 Bash Shell命令进阶 第5章 Linux Shell深度理解 第6章 Linux环境变量 第7章 Linux文件权限 第8章 Linux文件系统的管理 第9章 Linux软件安装 第10章 Linux文本编辑器…

【MySQL】搭建出高可用性、高性能的MySQL集群要考虑的事是蛮多的,你看看会不会?

MySQL 架构设计数据同步负载均衡安全性监控和维护注意的点1. 确定节点数量和配置2. 选择合适的硬件和网络设备3. 避免单点故障4. 定期备份和恢复测试5. 定期更新和升级 Java工程师使用集群步骤最后 MySQL集群是一种高可用性、高性能的数据库解决方案&#xff0c;它可以通过多个…

基于Django实现的TMS物流管理系统(附源码下载)

基于Django实现的物流管理系统&#xff08;TMS&#xff0c;Transportation Management System&#xff09; 特点 前端基于Bootstrap 4框架和AdminLTE框架。使用MySQL作为数据库后端。实现了运单录入、发车出库、到货签收、客户签收等基本功能。拥有较为完善的报表功能和财务管…

Java—JDK8新特性—Lambda表达式【内含思维导图】

目录 JDK8新特性 2.Lambda表达式 思维导图 2.1 什么是Lambda表达式 2.2 为什么使用Lamdba表达式 2.3 Lambda表达式基本语法 2.4 类型推断 2.5 Lambda练习 2.6 Lambda常用场景 JDK8新特性 官网提供网址&#xff1a;JDK 8 Features 2.Lambda表达式 思维导图 2.1 什么是…

浅谈Dom和Bom(清晰易懂版)

DOM&#xff08;文档对象模型&#xff09; DOM 是浏览器提供的一种操作网页内容和结构的 API&#xff0c;它将 Web 页面表示为一个树形结构&#xff0c;其中每一个 HTML 元素都是一个节点&#xff0c;可以通过 DOM API 对其进行访问和操作。DOM API 包括了一系列方法和属性&am…

Shapes布局-文字环绕动画

文章目录 说明实现以及语法动画渐变裁切图形变换的动画效果 说明 Shapes也有形状、图形的意思&#xff0c;我们可以在页面中创建图形&#xff0c;并让内容环绕在定义的图形边上。 Shapes的官方文档&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Shapes/F…

YOLOv8 来了,快速上手实操

目录 YOLOv8的优点安装ultralytics使用YOLOv8n在图像上进行PredictTasks与 ModesModes - 模式分类Tasks - 任务分类 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;程序员半夏 , 一名全栈程序员&#xff0c;擅长使用各种编程语言和框架&#xff0c;如JavaScript、React、N…

SpringBoot集成Redis—缓存穿透解决方案与哨兵模式实战

目录 1、环境准备 1&#xff09;pom.xml引入Redis依赖 2) 演示业务场景 2、SpringBoot集成Redis单机模式 1&#xff09; 通过MyBatis逆向工程生成实体Bean和数据持久层 2) application.yml 中配置redis连接信息 3) 启动redis服务 4) XinTuProductRedisController类 5…

一图看懂 yarl 模块:为URL解析和更改提供了方便的URL类, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 yarl 模块&#xff1a;为URL解析和更改提供了方便的URL类, 资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图模块全展开【yarl】统计常量模块1 yarl._quoting…

Python图形界面开发——系统资源监视器System-Monitor

Python图形界面程序怎么开发呢&#xff1f;很多人推荐python自带的tkinter自带库&#xff0c;还有pyqt这个这种拖拽式界面开发方案&#xff0c;但是他们开发界面比较难定制界面样式。现在web前端这么多框架用来开发python的图形界面其实不是很好&#xff1f;下面这么案例就是用…

Python爬虫 | 一文解决文章付费限制问题

本文概要 本篇文章主要介绍利用Python爬虫爬取付费文章&#xff0c;适合练习爬虫基础同学&#xff0c;文中描述和代码示例很详细&#xff0c;干货满满&#xff0c;感兴趣的小伙伴快来一起学习吧&#xff01; &#x1f31f;&#x1f31f;&#x1f31f;个人简介&#x1f31f;&…