> 文章列表 > Doris集群的安装部署

Doris集群的安装部署

Doris集群的安装部署

目录

安装与部署

软硬件配置​

1、机器选择

2、软件选择

3、环境信息修改和部署架构

4、安装部署Doris

5、启动FE

6、在FE节点启动MySQL客户端

7、在BE节点启动be

8、查看BE状态

8、查看FE状态是否正常

WEBUI

官方建议


安装与部署

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

软硬件配置​

1、机器选择

由于我这边是用来自己做学习使用,我这边采用了5台虚拟机。每台配置了8C16GB内存100GB硬盘

2、软件选择

        1、操作系统选择centos7.2的版本64位

        2、gcc版本是4.8.5

        3、Jdk是1.8

        4、Doris的版本选择1.2.3

3、环境信息修改和部署架构

  1、设置系统最大打开文件句柄数

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

2、Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。由于我这边是虚拟机,所以我修改客户机的时间和主机时间同步。从而达到时间同步

3、关闭交换分区(swap)​

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

4、主机分配

实例名称

IP

主机

FE

192.168.18.130

xlucas1

BE

192.168.18.131

xlucas2

BE

192.168.18.132

xlucas3

BE

192.168.18.133

xlucas4

BE

192.168.18.134

xlucas5

4、安装部署Doris

1、解压

[root@xlucas1 doris]# tar -xvf apache-doris-fe-1.2.3-bin-x86_64.tar.xz

2、修改配置文件

cd /root/doris/apache-doris-fe-1.2.3-bin-x86_64/conf

修改FE的配置文件fe.conf,这里我们主要修改一个参数:priority_networks,添加信息

priority_networks=192.168.18.0/24

注意:

这个参数我们在安装的时候是必须要配置的,特别是当一台机器拥有多个IP地址的时候,我们要为 FE 指定唯一的IP地址。

这里假设你的节点 IP 是 192.168.18.130,那么我们可以通过掩码的方式配置为 192.168.18.0/24。

3、配置DORIS_HOME变量

修改 vi ~/.bash_profile,添加信息

export DORIS_HOME=/root/doris/apache-doris-fe-1.2.3-bin-x86_64

添加以后要变量生效 source ~/.bash_profile

5、启动FE

bin/start_fe.sh --daemon

我们可以通过http://fe_host:fe_http_port/api/bootstrap 查看是否启动成功

如果返回:

{"msg":"success","code":0,"data":{"replayedJournalId":0,"queryPort":0,"rpcPort":0,"version":""},"count":0}

则表示启动成功,其余情况,则可能存在问题。

6、在FE节点启动MySQL客户端

采用rpm包安装:

首先获取rpm包:

wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-common-8.0.25-1.el7.x86_64.rpm 
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm 
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-libs-8.0.25-1.el7.x86_64.rpm
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-client-8.0.25-1.el7.x86_64.rpm

再次将这些包放在一个路径下面安装

rpm -Uvh *.rpm --nodeps --force

MySQL客户端安装完成以后开始配置BE节点

在FE节点运行命令:

mysql -h fe_host -P query_port -uroot

fe_host为FE节点

query_port为在FE节点conf/fe.conf中设置的端口号

mysql -h 192.168.18.130 -P 9030 -uroot

登录后,执行以下命令来添加每一个BE:

ALTER SYSTEM ADD BACKEND "be_host:heartbeat-service_port";

其中 be_host 为 BE 所在节点 ip;heartbeat_service_port 在 be/conf/be.conf 中。

7、在BE节点启动be

启动be

bin/start_be.sh --daemon

启动报错

[root@xlucas4 apache-doris-be-1.2.3-bin-x86_64-noavx2]# 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

再次启动报错

[root@xlucas2 apache-doris-be-1.2.3-bin-x86_64-noavx2]# bin/start_be.sh
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/doris/udf/JniUtil
Caused by: java.lang.ClassNotFoundException: org.apache.doris.udf.JniUtil
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
WARNING: Logging before InitGoogleLogging() is written to STDERR
W0416 01:53:45.238514  2901 doris_main.cpp:382] Failed to initialize JNI: [INTERNAL_ERROR]Failed to find JniUtil class.

原因:安装Java UDF 函数因为从 1.2 版本开始支持 Java UDF 函数,需要从官网下载 Java UDF 函数的 JAR 包放到 BE 的 lib 目录下,否则可能会启动失败。在官网下载依赖的jar包。下载完成后拷贝到BE的lib目录下即可

将包scp到BE节点:scp ./java-udf-jar-with-dependencies.jar root@192.168.18.134:/root/doris/apache-doris-be-1.2.3-bin-x86_64-noavx2/lib

注意:如果不是安装doris-1.2.0以后的版本可以不用下载该jar包

如果看到这些日志表示启动成功

8、查看BE状态

方式一:使用 mysql-client 连接到 FE,并执行

SHOW PROC '/backends';

查看 BE 运行情况。如一切正常,isAlive 列应为 true

方式二:通过URL来访问

http://be_host:webserver_port/api/health

webserver_port BE安装节点conf/be.conf中配置的端口

返回如下页面说明BE状态正常

8、查看FE状态是否正常

http://fe_host:fe_http_port/api/bootstrap

fe_host FE节点ip

fe_http_port FE安装节点conf/fe.conf中配置的端口

返回如下页面说明FE状态正常

mysql查看信息

1、检测FE

show frontends\\G;

2、检测BE

SHOW BACKENDS\\G;

WEBUI

http://fe_host:fe_http_port

用户名默认为root,没有密码,点击登录,可以看到如下页面

官方建议

  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。

FE 节点的数量

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