1.准备工作
1.1集群规划
1.2 操作系统安装要求
设置系统最大打开文件句柄数(注意这里的*不要去掉)
sudo vim /etc/security/limits.conf
* soft nofile 65536
* hard nproc 65536
设置最大虚拟块的大小
sudo vim /etc/sysctl.conf
vm.max_map_count=2000000
将修改的配置分发给其他节点
sudo /home/atguigu/xsync /etc/sysctl.conf
sudo /home/atguigu/xsync /etc/security/limits.conf
重启生效
xcall sudo reboot
1.3下载安装包
根据自己的需要,下载合适的安装包
链接: https://doris.apache.org/download/
x86_64架构 cpu(intel,amd),执行命令:
cat /proc/cpuinfo
如果能看到avx2 字样选择带 avx2 的包,否则选择不带 avx2
arm64 加购 cpu(apple),选择 arm64 的安装包下载
2.安装
2.1解压安装包
根据自己的cpu 架构,选择合适的安装包解压(本文以 arm64 为例)
1.安装 fe:
mkdir -p /opt/module/doris
tar -xvf apache-doris-fe-1.2.4.1-bin-arm.tar.xz -C /opt/module/doris
mv /opt/module/doris/apache-doris-fe-1.2.4.1-bin-arm /opt/module/doris/fe
2.安装 be:
tar -xvf apache-doris-be-1.2.4.1-bin-arm.tar.xz -C /opt/module/doris
mv /opt/module/doris/apache-doris-be-1.2.4.1-bin-arm /opt/module/doris/be
3.安装其他依赖(java udf 函数)
tar -xvf apache-doris-dependencies-1.2.4.1-bin-arm.tar.xz -C /opt/module/doris
mv /opt/module/doris/apache-doris-dependencies-1.2.4.1-bin-arm /opt/module/doris/dependencies
cp /opt/module/doris/dependencies/java-udf-jar-with-dependencies.jar /opt/module/doris/be/lib
2.2 配置 FE
2.2.1修改FE配置文件
vim /opt/module/doris/fe/conf/fe.conf
# web 页面访问端口
http_port = 7030
# 配置文件中指定元数据路径:默认在 fe 的根目录下,可以不配
# meta_dir = /opt/module/doris/fe/doris-meta
# 修改绑定 ip
priority_networks = 192.168.0.0/16
生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好)。
如果机器有多个ip, 比如内网外网, 虚拟机docker等, 需要进行ip绑定,才能正确识别。
JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。
2.2.2启动FE
/opt/module/doris/fe/bin/start_fe.sh --daemon
2.2.3登录 FE Web页面
地址: http://hadoop102:7030/login
用户:root
密码:无
注:此网页可以用来执行doris 语句
2.3配置 BE
2.3.1 修改BE配置文件
vim /opt/module/doris/be/conf/be.conf
# 不配置存储目录, 则会使用默认的存储目录
# storage_root_path = /opt/module/doris-1.1.1/doris-storage1;/opt/module/doris-1.1.1/doris-storage2.SSD,10
priority_networks = 192.168.0.0/16
webserver_port = 7040
storage_root_path默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号;分隔(最后一个目录后不要加)。
可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开,如:
storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris
说明:
/home/disk1/doris.HDD,50,表示存储限制为50GB,HDD;
/home/disk2/doris.SSD,10,存储限制为10GB,SSD;
/home/disk2/doris,存储限制为磁盘最大容量,默认为HDD
如果是 hdd,sdd 混合存储,则直接写目录即可。
如果机器有多个IP, 比如内网外网, 虚拟机docker等, 需要进行IP绑定,才能正确识别。
2.3.2分发BE
xsync be
2.3.3 添加 BE
BE节点需要先在FE中添加,才可加入集群。可以使用mysql-client连接到FE。
安装 Mysql 客户端
略
使用 Mysql 客户端连接到 FE
mysql -hhadoop102 -P9030 -uroot
-P 指定端口(注意这里 P 是大写, 小写 p 用来指定密码)
FE 默认没有密码
设置密码: SET PASSWORD FOR 'root' = PASSWORD('aaaaaa');
添加 BE
ALTER SYSTEM ADD BACKEND "hadoop102:9050";
ALTER SYSTEM ADD BACKEND "hadoop103:9050";
ALTER SYSTEM ADD BACKEND "hadoop104:9050";
查看 BE状态
SHOW PROC '/backends'\G
2.3.4启动 BE
分别在三个节点执行如下命令
/opt/module/doris/be/bin/start_be.sh --daemon
3扩容和缩容
3.1FE 扩容和缩容
可以通过将FE扩容至3个以上节点(必须是奇数)来实现FE的高可用。
增加FE节点
FE分为Leader,Follower和Observer三种角色。 默认一个集群只能有一个Leader,可以有多个Follower和Observer。其中Leader和Follower组成一个Paxos选择组,如果 Leader宕机,则剩下的Follower 会自动选出新的Leader,保证写入高可用。Observer 同步 Leader的数据,但是不参加选举。
如果只部署一个FE,则FE 默认就是Leader。在此基础上,可以添加若干Follower和 Observer。
ALTER SYSTEM ADD OBSERVER "hadoop103:9010";
ALTER SYSTEM ADD OBSERVER "hadoop104:9010";
配置Follower和Observer
分发 FE
xsync /opt/module/doris/fe
注意:需要去 hadoop103 和 hadoop104 删除 hadoop102 发过来的元数据
rm -rf /opt/module/doris/fe/doris-meta/*
在 hadoop103和 hadoop104 启动 FE
第一次启动时,启动命令需要添加参数 --helper leader主机: edit_log_port
分别在hadoop103和 hadoop104 执行:
/opt/module/doris/fe/bin/start_fe.sh --daemon --helper hadoop102:9010
在 mysql 客户端查看 FE 状态
show proc '/frontends';
删除 FE 节点(缩容)
ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";
注意:删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数
3.2BE 扩容和缩容
增加BE节点
在MySQL客户端,通过 ALTER SYSTEM ADD BACKEND
命令增加BE节点。
DROP方式删除BE节点(不推荐)
ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";
注意:DROP BACKEND 会直接删除该BE,并且其上的数据将不能再恢复!!!所以我们强烈不推荐使用 DROP BACKEND 这种方式删除BE节点。当你使用这个语句时,会有对应的防误操作提示。
DECOMMISSION 方式删除BE节点(推荐)
ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
该命令用于安全删除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重新进行负载均衡。
4.群起群停脚本
vim ~/bin/mydoris
#!/bin/bash
case $1 in
"start")
echo " start 启动doris集群"
for host in hadoop162 hadoop163 hadoop164 ; do
echo "========== 在 $host 上启动 fe ========="
ssh $host "source /etc/profile; /opt/module/doris/fe/bin/start_fe.sh --daemon"
done
for host in hadoop162 hadoop163 hadoop164 ; do
echo "========== 在 $host 上启动 be ========="
ssh $host "source /etc/profile; /opt/module/doris/be/bin/start_be.sh --daemon"
done
;;
"stop")
echo " stop 停止doris集群"
for host in hadoop162 hadoop163 hadoop164 ; do
echo "========== 在 $host 上停止 fe ========="
ssh $host "source /etc/profile; /opt/module/doris/fe/bin/stop_fe.sh "
done
for host in hadoop162 hadoop163 hadoop164 ; do
echo "========== 在 $host 上停止 be ========="
ssh $host "source /etc/profile; /opt/module/doris/be/bin/stop_be.sh "
done
;;
*)
echo "你启动的姿势不对"
;;
esac
添加执行权限
chmod +x ~/bin/mydoris
测试
mydoris stop
mydoris start
5.常用命令
5.1连接
连接Doris
mysql -h hostname -p 9030 -uroot -paaaaaa
5.2 查看BE状态
show proc '/backends'\G; -- 查看be
5.3 查看FE状态
show proc '/frontends'\G; -- 查看fe