目录
安装与部署
软硬件配置
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,没有密码,点击登录,可以看到如下页面
官方建议
- 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。