Doris标准部署
软硬件版本
Linux 操作系统版本需求
Linux 系统 | 版本 |
---|---|
Redhat | 7.9 64位 |
软件需求
软件 | 版本 |
---|---|
Java | openjdk-1.8 |
GCC | 4.8.5 |
doris | 2.1.4 |
操作系统安装要求
1、关闭交换分区(swap)
Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区
# 方式一
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 方式二
#编辑文件
vim /etc/sysctl.conf
#增加以下配置
vm.swappiness=0
vm.overcommit_memory=1
vm.zone_reclaim_mode = 0
#执行生效
sysctl -p
# 查看交换区 是否关闭 注意:以上配置需要重启后才能生效,在配置时钟同步后会进行重启
free -m
2、设置系统最大打开文件句柄数
# 方式一
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
# 方式二
cat >> /etc/security/limits.conf <<EOF
* soft nofile 65536
* hard nofile 65536
EOF
3、时钟同步(已配置 可省略)
Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。
# 所有服务器全部重启ntp服务【生产环境已默认初始化好ntp服务】
systemctl start ntpd
systemctl enable ntpd
4、禁用SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久关闭selinux
setenforce 0 # 临时
5、开放端口号
# 需要开放FE节点下端口号8030、9030
6、安装JDK环境。【已安装 openJDK 可省略】
cat >>/etc/profile <<EOF
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile
7、安装GCC 【已安装gcc 可省略】
yum install gcc gcc-c++
网络需求
Doris 各个实例直接通过网络进行通讯。以下表格展示了所有需要的端口
实例名称 | 端口名称 | 默认端口 | 通讯方向 | 说明 |
---|---|---|---|---|
BE | be_port | 9060 | FE --> BE | BE 上 thrift server 的端口,用于接收来自 FE 的请求 |
BE | webserver_port | 8040 | BE <--> BE | BE 上的 http server 的端口 |
BE | heartbeat_service_port | 9050 | FE --> BE | BE 上心跳服务端口(thrift),用于接收来自 FE 的心跳 |
BE | brpc_port | 8060 | FE <--> BE, BE <--> BE | BE 上的 brpc 端口,用于 BE 之间通讯 |
FE | http_port | 8030 | FE <--> FE,用户 <--> FE | FE 上的 http server 端口 |
FE | rpc_port | 9020 | BE --> FE, FE <--> FE | FE 上的 thrift server 端口,每个fe的配置需要保持一致 |
FE | query_port | 9030 | 用户 <--> FE | FE 上的 mysql server 端口 |
FE | edit_log_port | 9010 | FE <--> FE | FE 上的 bdbje 之间通信用的端口 |
Broker | broker_ipc_port | 8000 | FE --> Broker, BE --> Broker | Broker 上的 thrift server,用于接收请求 |
注:
当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。
部署前请确保各个端口在应有方向上的访问权限。
安装步骤
主机部署规划
服务器 | CPU | 内存 | 硬盘 | FE | BE | 类别 |
---|---|---|---|---|---|---|
10.0.1.151 | 4C | 16G | 100G | yes(master) | 虚拟机 | |
10.0.1.152 | 4C | 16G | 100G | yes(slave) | 虚拟机 | |
10.0.1.153 | 4C | 16G | 100G | yes(slave) | 虚拟机 | |
10.0.1.75 | 4C | 16G | 100G | yes(OBSERVER) | 虚拟机 | |
10.0.1.76 | 4C | 16G | 100G | yes(OBSERVER) | 虚拟机 | |
10.0.1.6 | 4C | 16G | 100G | yes | 虚拟机 | |
10.0.1.7 | 4C | 16G | 100G | yes | 虚拟机 | |
10.0.1.8 | 4C | 16G | 100G | yes | 虚拟机 | |
10.0.1.9 | 4C | 16G | 100G | yes | 虚拟机 | |
10.0.1.10 | 4C | 16G | 100G | yes | 虚拟机 |
服务器doris用户:dbuser2
FE部署
1、目录规划
# 1.准备目录-将安装包分发至各个服务器的/opt目录
mkdir -p /opt/doris
# 2.创建fe的日志目录和元数据存储目录
mkdir -p /data/doris/log
mkdir -p /data/doris/doris-meta
# 3.将安装包解压至/data/doris目录
tar -zxf /opt/apache-doris-2.1.4-bin-x64.tar.gz -C /opt/doris
2、fe.conf配置
fe.conf
vi /opt/doris/apache-doris-2.1.4-bin-x64/fe/conf/fe.conf
# 添加配置(使用ip a命令可获取)
priority_networks = 10.0.1.0/24
meta_dir=/data/doris/doris-meta
# 设置表名不区分大小写
lower_case_table_names = 1
# the output dir of stderr and stdout
LOG_DIR = /data/doris/log
3、FE启动
# 启动FE
cd /opt/doris/apache-doris-2.1.4-bin-x64/fe
sh bin/start_fe.sh --daemon #启动FE-Master节点
sh bin/start_fe.sh --helper 10.0.1.151:9010 --daemon #第一次启动FE-Slave节点
# 查看启动状态
curl http://127.0.0.1:8030/api/bootstrap
# 这里IP和端口分别是 FE 的 IP 和 http_port(默认8030),如果是你在FE节点执行,直接运行上面的命令即可。
# 如果返回结果中带有 "msg":"success" 字样,则说明启动成功。
# 也可以通过 Doris FE 提供的Web UI 来检查,在浏览器里输入地址
http:// fe_ip:8030
# 可以看到下面的界面,说明 FE 启动成功
注意:
这里我们使用 Doris 内置的默认用户 root 进行登录,密码是空
这是一个 Doris 的管理界面,只能拥有管理权限的用户才能登录,普通用户不能登录。
在使用MySQL客户端修改root账户密码后,则需要填写密码。
设置密码必须在MySQL客户端执行,可以在WEB管理端执行其他操作。详见官方文档
可以在其中一个FE节点服务器上安装MySQL客户端连接,也可以使用同网段可以连接的其他服务器上面已安装的MySQL客户端。
4、连接FE
我们下面通过 MySQL 客户端来连接 Doris FE,下载免安装的 MySQL 客户端
解压刚才下载的 MySQL 客户端,在 bin/
目录下可以找到 mysql
命令行工具。然后执行下面的命令连接 Doris。
# mysql下载地址
https://downloads.mysql.com/archives/community/
# 解压安装mysql客户端
tar -zxf /opt/doris/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz -C /opt/doris/software/
# 如果在bin下执行mysql命令出现Command not found,添加软链接
ln -s /opt/doris/software/mysql-5.7.43-linux-glibc2.12-x86_64/bin/mysql /usr/bin
# 连接Doris
mysql -uroot -P9030 -h10.0.1.151
注意:
注意先启动第一个FE节点,配置好FE从节点后,再启动第二个第三个
这里使用的 root 用户是 doris 内置的默认用户,也是超级管理员用户,具体的用户权限查看 权限管理
-P :这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是fe.conf里的
query_port
-h : 这里是我们连接的 FE IP地址,如果你的客户端和 FE 安装在同一个节点可以使用127.0.0.1。
添加FE从节点
-- 前面已连接 则可以省略连接步骤 直接执行ALTER
-- 使用MySQL客户端无密码连接doris
mysql -uroot -P9030 -h10.0.1.151
-- 连接好设置root账户密码
mysql> set password = password('admin123');
-- 添加FE FOLLOWER节点 【如果使用单节点FE,则不需要】
-- edit_log_port位于conf/fe.conf ,默认为9010
mysql> ALTER SYSTEM ADD FOLLOWER "10.0.1.152:9010";
mysql> ALTER SYSTEM ADD FOLLOWER "10.0.1.153:9010";
mysql> ALTER SYSTEM ADD OBSERVER "10.0.1.75:9010";
mysql> ALTER SYSTEM ADD OBSERVER "10.0.1.76:9010";
-- 设置密码后连接命令 mysql -uroot -padmin123 -P9030 -h10.0.1.151
执行下面的命令查看 FE 运行状态
mysql> show frontends\G;
然后你可以看到类似下面的结果:
mysql> show frontends\G *************************** 1. row *************************** Name: fe_a89a84ca_9010_1660549353220 HOST: 10.0.1.151 EditLogPort: 9010 HttpPort: 8030 QueryPort: 9030 RpcPort: 9020 Role: FOLLOWER IsMaster: true ClusterId: 1685821635 Join: true Alive: true ReplayedJournalId: 24438 LastHeartbeat: 2024-07-04 13:00:45 IsHelper: true ErrMsg: Version: doris-2.1.4-rc03-e93678fd1e CurrentConnected: Yes 1 row in set (0.03 sec)
-
如果Join 和 Alive 两列均为true,IsMaster根据具体情况为true|false,则表示节点正常。
5、停止 FE 节点
Doris FE 的停止可以通过下面的命令完成
sh bin/stop_fe.sh
BE部署
1、目录规划
# 1.准备目录-将安装包分发至各个服务器的/opt目录
# 2.创建be的日志目录和数据存储目录
mkdir -p /data/doris/log
mkdir -p /data/doris/storage
# 3.将安装包解压至/opt/doris目录
tar -zxf /opt/apache-doris-2.1.4-bin-x64.tar.gz -C /opt/doris
2、be.conf配置
be.conf
vim /opt/doris/apache-doris-2.1.4-bin-x64/be/conf/be.conf
# 添加配置(使用ip a命令可获取)
priority_networks = 10.0.1.0/24
storage_root_path=/data/doris/storage
# 查询JAVA_HOME|安装路径:: update-alternatives --config java 配置到bin目录上一级
JAVA_HOME=/usr/lib/jvm/java-1.8.0-xxx/jre
# the output dir of stderr and stdout
LOG_DIR = /data/doris/log
string_type_length_soft_limit_bytes = 2147483643
3、添加BE节点【注意:先添加节点后启动BE!!!】
-- 使用MySQL客户端无密码连接doris 【继续使用151上的MySQL】
mysql -uroot -P9030 -h启动的FEIP
-- 如果BE节点添加错误 建议先移除,再重新添加
-- mysql> ALTER SYSTEM DROPP BACKEND "be1:9050";
--添加BE节点
mysql> ALTER SYSTEM ADD BACKEND "10.0.1.6:9050";
mysql> ALTER SYSTEM ADD BACKEND "10.0.1.7:9050";
mysql> ALTER SYSTEM ADD BACKEND "10.0.1.8:9050";
mysql> ALTER SYSTEM ADD BACKEND "10.0.1.9:9050";
mysql> ALTER SYSTEM ADD BACKEND "10.0.1.10:9050";
-- 查看所有FE节点
mysql> show proc '/backends';
4、BE启动
# 第一次启动前需要进行系统配置,如不配置则报错,后续启动不再需要
# 错误1:Please set vm.max_map_count to be 2000000 under root using ...
# 配置1:执行 sysctl -w vm.max_map_count=2000000
# 错误2:The JAVA_HOME environmentvariable is not defined correctly
# 配置2:编辑be.conf 配置JAVA_HOME="/path/your/java_home"
# 提示:查询JAVA_HOME|安装路径:: update-alternatives --config java
# 注意:配置到bin目录上一级
# 切换目录 启动BE
cd /opt/doris/apache-doris-2.1.4-bin-64/be;
sh bin/start_be.sh --daemon
5、查看 BE 运行状态
你可以在 MySQL 命令行下执行下面的命令查看 BE 的运行状态。
# 使用MySQL客户端连接doris FE
mysql -uroot -P9030 -h启动的FEIP
# 登录进入执行下面命令查看BE运行状态
SHOW BACKENDS\G
Alive : true表示节点运行正常
如果Alive为false,则表示当前BE节点没有与FE节点正常建立连接。
原因分析:查看BE日志文件 log/be.INFO
示例:BE的cluster_id和FE的 cluster_id不一致
解决:
1.FE的master节点在第一次启动时生成cluster_id存放在doris-meta/image/VERSION文件中
2.BE连接FE成功后会将cluster_id存放在storage/cluster_id文件中
3.修改BE cluster_id文件中的cluster_id和FE VERSION文件中一致
4.重启BE节点即可
6、停止 FE 节点
Doris FE 的停止可以通过下面的命令完成
./bin/stop_fe.sh
附录1:FE-Master安装脚本摘要
# 主节点:10.0.1.151
# 0.服务器环境准备工作已完成,并且提前将doris配置文件fe.conf|be.conf修改好放入doris的tar.gz压缩包中存放到/opt目录下
# 1.目录规划
mkdir -p /opt/doris
mkdir -p /data/doris/log
mkdir -p /data/doris/doris-meta
# 2.将安装包解压至/opt/doris目录
tar -zxf /opt/apache-doris-2.1.4-bin-x64.tar.gz -C /opt/doris/
sleep 30
echo "tar doris complete"
# 3.切换目录 启动FE主节点
cd /opt/doris/apache-doris-2.1.4-bin-x64/fe
sh bin/start_fe.sh --daemon #启动FE-Master节点
echo "start doris-fe complete"
sleep 15
curl http://127.0.0.1:8030/api/bootstrap
附录2:MySQL执行脚本
#!/bin/bash
DB_HOST="10.0.1.151"
DB_USER="root"
DB_PASS="admin123"
DB_PORT="9030"
# SQL
set_pass="set password = password('admin123');"
add_fe1="ALTER SYSTEM ADD FOLLOWER '10.0.1.152:9010';"
add_fe2="ALTER SYSTEM ADD FOLLOWER '10.0.1.153:9010';"
add_fe3="ALTER SYSTEM ADD OBSERVER '10.0.1.75:9010';"
add_fe4="ALTER SYSTEM ADD OBSERVER '10.0.1.76:9010';"
add_be1="ALTER SYSTEM ADD BACKEND '10.0.1.6:9050';"
add_be2="ALTER SYSTEM ADD BACKEND '10.0.1.7:9050';"
add_be3="ALTER SYSTEM ADD BACKEND '10.0.1.8:9050';"
add_be4="ALTER SYSTEM ADD BACKEND '10.0.1.9:9050';"
add_be5="ALTER SYSTEM ADD BACKEND '10.0.1.10:9050';"
# Execute SQL
mysql -u$DB_USER -P$DB_PORT -h$DB_HOST -e "$set_pass"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_fe1"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_fe2"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_fe3"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_fe4"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_be1"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_be2"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_be3"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_be4"
mysql -u$DB_USER -p$DB_PASS -P$DB_PORT -h$DB_HOST -e "$add_be5"
附录3:FE-Salve安装脚本摘要
# 从节点:10.0.1.152,10.0.1.153
# 0.服务器环境准备工作已完成,并且提前将doris配置文件fe.conf|be.conf修改好放入doris的tar.gz压缩包中存放到/opt目录下
# 1.目录规划
mkdir -p /opt/doris
mkdir -p /data/doris/log
mkdir -p /data/doris/doris-meta
# 2.将安装包解压至/opt/doris目录
tar -zxf /opt/apache-doris-2.1.4-bin-x64.tar.gz -C /opt/doris/
sleep 30
echo "tar doris complete"
# 3.切换目录 启动FE从节点
cd /opt/doris/apache-doris-2.1.4-bin-x64/fe
sh bin/start_fe.sh --helper 10.0.1.151:9010 --daemon #第一次启动FE-Slave节点
echo "start doris-fe complete"
sleep 15
curl http://127.0.0.1:8030/api/bootstrap
附录4:FE-OBSERVER安装脚本摘要【同Slave节点安装脚本】
# OBSERVER节点:10.0.1.75,10.0.1.76
# 0.服务器环境准备工作已完成,并且提前将doris配置文件fe.conf|be.conf修改好放入doris的tar.gz压缩包中存放到/opt目录下
# 1.目录规划
mkdir -p /opt/doris
mkdir -p /data/doris/log
mkdir -p /data/doris/doris-meta
# 2.将安装包解压至software目录
tar -zxf /opt/apache-doris-2.1.4-bin-x64.tar.gz -C /opt/doris
sleep 30
echo "tar doris complete"
# 3.切换目录 启动FE OBSERVER节点
cd /opt/doris/apache-doris-2.1.4-bin-x64/fe
sh bin/start_fe.sh --helper 10.0.1.151:9010 --daemon #第一次启动FE OBSERVER节点
echo "start doris-fe complete"
sleep 15
curl http://127.0.0.1:8030/api/bootstrap
附录5:BE节点安装脚本摘要
# BE节点:10.0.1.6 10.0.1.7 10.0.1.8 10.0.1.9 10.0.1.10
# 0.服务器环境准备工作已完成,并且提前将doris配置文件fe.conf|be.conf修改好放入doris的tar.gz压缩包中存放到/opt目录下
# 1.目录规划
mkdir -p /opt/doris
mkdir -p /data/doris/log
mkdir -p /data/doris/doris-meta
# 2.将安装包解压至/opt/doris目录
tar -zxf /opt/apache-doris-2.1.4-bin-x64.tar.gz -C /opt/doris
sleep 30
echo "tar doris complete"
# 第一次启动BE需要执行如下命令,不然会报错
# sysctl -w vm.max_map_count=2000000
# 3.切换目录 启动BE节点
cd /opt/doris/apache-doris-2.1.4-bin-x64/be
sh bin/start_be.sh --daemon
echo "start doris-be complete"
附录6:参考网址
-
Doris集群标准部署:Manual Deployment - Apache Doris
重要提示:多看官方文档,出现问题多看日志!!!