环境准备
需要有三台 Centos7 服务器,并都需要完成下面的配置要求:
- 关闭防火墙
- 新建普通用户
me
- 阿里云时钟同步服务器
- 配置免密登陆
- 永久关闭
selinux
- 永久关闭
swap
分区 - 永久调整句柄数和进程限制
- 永久调整虚拟内存区域限制
- 临时禁用透明大页
- 配置
xsync
、xcall
同步脚本 - 配置
jdk8
环境
环境准备可以参考我下面的博文:
集群规划
说明:
- 除特别说明外,本文的所有操作均在master节点、使用me这个非root用户执行
- 命令中出现的IP,均需要替换为自己集群中的IP【必须】
- 命令中出现的
/home/lbs/software
路径,可选择替换为自定义路径【可选】
hostname | IP | 角色 |
---|---|---|
master | 10.0.0.87 | FE(LEADER)+ BE + BROKER |
node1 | 10.0.0.81 | FE(FOLLOWER)+ BE + BROKER |
node2 | 10.0.0.82 | FE(FOLLOWER)+ BE + BROKER |
正式安装
下载资源包apache-doris-2.1.6-bin-x64.tar.gz
,并解压到指定安装路径
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.1.6-bin-x64.tar.gz
tar -zxvf apache-doris-2.1.6-bin-x64.tar.gz -C /home/lbs/software
mv /home/lbs/software/apache-doris-2.1.6-bin-x64 /home/lbs/software/doris
安装FE
-
修改
fe.conf
配置文件vi /home/lbs/software/doris/fe/conf/fe.conf # 修改各种端口,防止与hadoop集群冲突(可选,端口不冲突不用) http_port = 8130 rpc_port = 9120 query_port = 9130 edit_log_port = 9110 # 绑定集群ip网段 priority_networks = 10.0.0.0/24
-
分发
fe
目录到集群的其他的两个机器上xsync /home/lbs/software/doris/fe
安装BE
-
修改
be.conf
配置文件vi /home/lbs/software/doris/be/conf/be.conf # 修改各种端口,防止与hadoop集群冲突(可选,端口不冲突不用) be_port = 9160 webserver_port = 8140 heartbeat_service_port = 9150 brpc_port = 8160 # 绑定集群ip网段 priority_networks = 10.0.0.0/24 # 新增配置内容,限制be内存占用 mem_limit = 30%
-
分发
be
目录到集群的其他的两个机器上xsync /home/lbs/software/doris/be
安装BROKER
-
修改
apache_hdfs_broker.conf
配置文件vi /home/lbs/software/doris/extensions/apache_hdfs_broker/conf/apache_hdfs_broker.conf # 修改内容如下(默认为8000): broker_ipc_port = 8100
-
分发
extensions
目录到集群的其他的两个机器上xsync /home/lbs/software/doris/extensions
创建集群
启动并关联FE
-
登录master节点启动 FE 作为 LEADER,并查看
doris
进程# 启动FE /home/lbs/software/doris/fe/bin/start_fe.sh --daemon # 查看 Doris 进程 ps -ef | grep doris
-
再分别登录到
node1
与node2
两个机器执行下面命令,用于分别启动 FE 作为两个 FOLLOWER,并查看doris
进程注意:
--helper 10.0.0.87:9110
仅在首次启动时需要添加,后续无需添加10.0.0.87
为LEADER
节点的IP,9110
为 FE 的edit_log_port
。# 启动FE,并连接到LEADER /home/lbs/software/doris/fe/bin/start_fe.sh --helper 10.0.0.87:9110 --daemon # 查看 Doris 进程 ps -ef | grep doris
-
回到
master
机器,安装mysql
客户端sudo yum install -y mysql
-
通过
Mysql-client
连接 FE LEADER 的 Mysql,将 两个 FOLLOWER 添加进去。# 密码为空 mysql -h 10.0.0.87 -P 9130 -uroot # 添加three、four为follower节点 ALTER SYSTEM ADD FOLLOWER "10.0.0.81:9110"; ALTER SYSTEM ADD FOLLOWER "10.0.0.82:9110"; # 查看状态(需要多等待一会儿,直到Alive列值都为true) SHOW PROC '/frontends';
添加节点:
ALTER SYSTEM ADD FOLLOWER[OBSERVER] "fe_host:edit_log_port";
删除节点:
ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";
启动并关联BE
-
启动集群中的三台机器上的
BE
,并查看doris进程先退出
mysql
客户端# 启动BE xcall /home/lbs/software/doris/be/bin/start_be.sh --daemon # 查看 Doris 进程 ps -ef | grep doris
-
添加集群中的三台机器上的
BE
到FE
的MySQL
数据库中。# 登录到FE的Mysql数据库 mysql -h 10.0.0.87 -P 9130 -uroot # 添加集群中三个节点的BE ALTER SYSTEM ADD BACKEND "10.0.0.87:9150"; ALTER SYSTEM ADD BACKEND "10.0.0.81:9150"; ALTER SYSTEM ADD BACKEND "10.0.0.82:9150"; # 查看状态(需要多等待一会儿,直到Alive列值都为true) SHOW PROC '/backends';
优雅删除节点(将此BE数据迁移到其他BE节点):
ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
强制删除节点(会直接删除BE及上面的数据):
ALTER SYSTEM DROPP BACKEND "be_host:be_heartbeat_service_port";
启动并关联BROKER
-
启动集群中的三台机器上的
BROKER
,并查看Doris
进程先退出
mysql
客户端# 启动broker xcall /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/start_broker.sh --daemon # 查看 Doris 进程 ps -ef | grep doris
-
同时添加集群中的三台机器上的
BROKER
到FE
的MySQL
数据库中。# 登录到FE的Mysql数据库 mysql -h 10.0.0.87 -P 9130 -uroot # 添加集群中三个节点的broker ALTER SYSTEM ADD BROKER broker_name "10.0.0.87:8100","10.0.0.81:8100","10.0.0.82:8100"; # 查看状态(需要多等待一会儿,直到Alive列值都为true) SHOW PROC "/brokers";
添加 BROKER 节点:
ALTER SYSTEM ADD BROKER broker_name "broker_host1:broker_ipc_port1","broker_host2:broker_ipc_port2",...;
删除 BROKER 节点:
ALTER SYSTEM DROP BROKER broker_name "broker_host1:broker_ipc_port1","broker_host2:broker_ipc_port2",...;
删除所有 BROKER 节点:
ALTER SYSTEM DROP ALL BROKER broker_name;
验证集群
-
登录
FE
的数据库,查看FE
、BE
、BROKER
各节点的状态# 登录到FE的数据库 mysql -h 10.0.0.87 -P 9130 -uroot # 查看集群中所有的FE节点状态 SHOW PROC '/frontends'; # 查看集群中所有的BE节点状态 SHOW PROC '/backends'; # 查看集群中所有的BROKER节点状态 SHOW PROC "/brokers";
-
浏览器输入下面的地址、账号,进入
Doris
的Web
页面。| 地址 | 账号 | 密码 | | --- | --- | --- | | http://10.0.0.87:8130 (http://fe_hostname:fe_http_port) | root | 空 |
集群管理
启动集群
# 启动集群中所有的FE节点
xcall /home/lbs/software/doris/fe/bin/start_fe.sh --daemon
# 启动集群中所有的BE节点
xcall /home/lbs/software/doris/be/bin/start_be.sh --daemon
# 启动集群中所有的BROKER节点
xcall /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/start_broker.sh --daemon
停止集群
# 停止集群中所有的BROKER节点
xcall /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/stop_broker.sh --daemon
# 停止集群中所有的BE节点
xcall /home/lbs/software/doris/be/bin/stop_be.sh --daemon
# 停止集群中所有的FE节点
xcall /home/lbs/software/doris/fe/bin/stop_fe.sh --daemon
集群状态
# 登录到FE的数据库
mysql -h 10.0.0.87 -P 9130 -uroot
# 查看集群中所有的FE节点状态
SHOW PROC '/frontends';
# 查看集群中所有的BE节点状态
SHOW PROC '/backends';
# 查看集群中所有的BROKER节点状态
SHOW PROC "/brokers";
管理脚本
cat > /home/lbs/software/doris/doris-cluster.sh <<EOF
#!/bin/bash
case $1 in
"start"){
for i in 10.0.0.87 10.0.0.81 10.0.0.82
do
echo -------------------------------- $i doris 启动 ---------------------------
ssh $i "source /etc/profile; /home/lbs/software/doris/fe/bin/start_fe.sh --daemon; /home/lbs/software/doris/be/bin/start_be.sh --daemon; /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/start_broker.sh --daemon"
done
}
;;
"stop"){
for i in 10.0.0.87 10.0.0.81 10.0.0.82
do
echo -------------------------------- $i doris 停止 ---------------------------
ssh $i "source /etc/profile; /home/lbs/software/doris/extensions/apache_hdfs_broker/bin/stop_broker.sh --daemon; /home/lbs/software/doris/be/bin/stop_be.sh --daemon; /home/lbs/software/doris/fe/bin/stop_fe.sh --daemon"
done
}
;;
"status"){
for i in 10.0.0.87 10.0.0.81 10.0.0.82
do
echo -------------------------------- $i doris 状态 ---------------------------
status=$(ssh $i "source /etc/profile; ps -ef | grep doris")
if [[ -z "$status" ]]
then
echo "Doris not running!"
else
echo "$status"
fi
done
}
;;
esac
EOF
参考文献: