Apache Doris1.0版本集群搭建、负载均衡与参数调优
首先下载包,有源码和预编译两种包 。我这用的预编译
下载 | Apache Doris
我的架构是3FE+7BE
首先操作系统安装要求
#设置系统最大打开文件句柄数
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
时钟同步
Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。
#关闭交换分区(swap)
Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区
#Liunx文件系统
推荐使用ext4文件系统,在安装操作系统的时候,请选择ext4文件系统。
一些FE的注意事项1、FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
2、BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。
3、一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)
4、FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower)。
5、FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
6、Follower 的数量必须为奇数,Observer 数量随意。
7、根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。
开始部署
解压缩预编译包
/data/apache-doris-1.0.0-incubating-bin
├── apache_hdfs_broker
├── be
├── CHANGE-LOG.txt
├── DISCLAIMER
├── fe
├── LICENSE-dist.txt
├── licenses
├── NOTICE-dist.txt
├── README
└── udf
#FE 部署
将 fe文件夹拷贝到 FE 的节点指定部署路径下并进入该目录。
FE 的配置文件
fe.conf
通常存放在 FE 部署路径的conf/
目录下。 而在 0.14 版本中会引入另一个配置文件fe_custom.conf
。该配置文件用于记录用户在运行是动态配置并持久化的配置项。FE 进程启动后,会先读取
fe.conf
中的配置项,之后再读取fe_custom.conf
中的配置项。fe_custom.conf
中的配置项会覆盖fe.conf
中相同的配置项。fe_custom.conf
文件的位置可以在fe.conf
通过custom_config_dir
配置项配置。配置 FE
配置文件为 conf/fe.conf。其中注意:
meta_dir
是元数据存放位置。默认值为${DORIS_HOME}/doris-meta
。需手动创建该目录。meta_dir = /data/doris-meta LOG_DIR = /data/logs/doris-log 这里取0可以自动匹配自身ip 方便集群里都是一样的配置 priority_networks = 172.16.99.0/24 增大一些连接数 qe_max_connection = 2048 max_conn_per_user = 1000 qe_query_timeout_second = 600 添加一个参数。数据量大用的着 max_bytes_per_broker_scanner = 21474836480
- fe.conf 中 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。
JAVA_OPTS="-Xmx32768m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMa rkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPo licyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE"改成32g
创建日志和元数据目录
mkdir /data/logs/doris-log mkdir /data/doris-meta
启动FE
bin/start_fe.sh --daemon 后台启动 启动后可以通过 curl http://127.0.0.1:8030/api/bootstrap 来查看状态 {"msg":"success","code":0, 就是成功了也可以通过数据库查询 show proc '/frontends'; 查看fe的状态
FE进程启动进入后台执行。日志默认存放在 log/ 目录下。如启动失败,可以通过查看 log/fe.log 或者 log/fe.out 查看错误信息。
添加两个follwoer形成HA
FE 分为 Leader,Follower 和 Observer 三种角色。 默认一个集群,只能有一个 Leader,可以有多个 Follower 和 Observer。其中 Leader 和 Follower 组成一个 Paxos 选择组,如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。Observer 同步 Leader 的数据,但是不参加选举。如果只部署一个 FE,则 FE 默认就是 Leader。
第一个启动的 FE 自动成为 Leader。在此基础上,可以添加若干 Follower 和 Observer。
添加 Follower 或 Observer。使用 mysql-client 连接到已启动的 FE,并执行:
ALTER SYSTEM ADD FOLLOWER "follower_host:edit_log_port";
例子
ALTER SYSTEM ADD FOLLOWER "172.16.99.80:9010";如果添加的是Observer的话
ALTER SYSTEM ADD OBSERVER "observer_host:edit_log_port";
例子
ALTER SYSTEM ADD OBSERVER "172.16.99.80:9010";
添加完需要注意的是,第一次启动必须使用这个命令
bin/start_fe.sh --helper leader_fe_host:edit_log_port --daemon
例子
bin/start_fe.sh --helper 172.16.99.79:9010 --daemon
172.16.99.79就是主节点的ip
--helper 参数仅在 follower 和 observer 第一次启动时才需要。
之后就是正常的启动
bin/start_fe.sh --daemon
- Follower FE(包括 Leader)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。
- 当 FE 处于高可用部署时(1个 Leader,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。
- 通常一个 FE 节点可以应对 10-20 台 BE 节点。建议总的 FE 节点数量在 10 个以下。而通常 3 个即可满足绝大部分需求。
- helper 不能指向 FE 自身,必须指向一个或多个已存在并且正常运行中的 Master/Follower FE。
删除 FE 节点
使用以下命令删除对应的 FE 节点:
ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";
FE 缩容注意事项:
- 删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数。
BE 部署
拷贝 BE 部署文件到所有要部署 BE 的节点
将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署路径下。
修改所有 BE 的配置
修改 be/conf/be.conf。主要是配置
storage_root_path
:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号;
分隔(最后一个目录后不要加;
)。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,
隔开。注意:如果是SSD磁盘要在目录后面加上
.SSD
,HDD磁盘在目录后面加.HDD
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 例子 storage_root_path = /data/doris.SSD 修改日志位置 PPROF_TMPDIR="/data/logs/belog" 创建目录 mkdir /data/doris.SSD mkdir /data/logs/belog
修改be ip
priority_networks = 172.16.99.0/24 这里取0可以自动匹配自身ip 方便集群里都是一样的配置
在 FE 中添加所有 BE 节点
BE 节点需要先在 FE 中添加,才可加入集群。可以使用 mysql-clien 连接到 FE:
mysql -h fe_host -P query_port -uroot 例子mysql -uroot -P 9030 -h127.0.0.1
其中 fe_host 为 FE 所在节点 ip;query_port 在 fe/conf/fe.conf 中的;默认使用 root 账户,无密码登录。
登录后,执行以下命令来添加每一个 BE:
ALTER SYSTEM ADD BACKEND "be_host:heartbeat-service_port"; 举例 ALTER SYSTEM ADD BACKEND "172.16.99.80:9050" ; 如果是扩容也是这样操作的 BE 扩容后,Doris 会自动根据负载情况,进行数据均衡,期间不影响使用。
其中 be_host 为 BE 所在节点 ip;heartbeat_service_port 在 be/conf/be.conf 中。
启动 BE
bin/start_be.sh --daemon
BE 进程将启动并进入后台执行。日志默认存放在 be/log/ 目录下。如启动失败,可以通过查看 be/log/be.log 或者 be/log/be.out 查看错误信息。
查看BE状态
使用 mysql-client 连接到 FE,并执行
SHOW PROC '/backends';
查看 BE 运行情况。如一切正常,
Alive
列应为true
。
如果需要删除BE节点 则需要登录FE节点的数据库操作
ALTER SYSTEM DROPP BACKEND "be_host:be_heartbeat_service_port"; 例子 ALTER SYSTEM DROPP BACKEND "172.16.99.80:9050"; 需要注意的是DROPP 多了一个P 。为了防止误操作
此操作会立即删除节点下所有的数据,慎重!!!
可以使用安全删除
ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 例子 ALTER SYSTEM DECOMMISSION BACKEND "172.16.99.82:9050";
- 该命令用于安全删除 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 重新进行负载均衡
部署broker
Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS 、百度云 BOS 及 Amazon S3 的 fs_broker。fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。
进入apache_hdfs_broker目录
修改相应 Broker 配置
在相应 broker/conf/ 目录下对应的配置文件中,可以修改相应配置。没什么需要配置的
连接hdfs的话。需要替换一下hdfs-site.xml文件
启动 Broker
bin/start_broker.sh --daemon
添加 Broker
要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表。
使用 mysql-client 连接启动的 FE,执行以下命令:
ALTER SYSTEM ADD BROKER broker_name "broker_host1:broker_ipc_port1","broker_host2:broker_ipc_port2",...;举个例子 ALTER SYSTEM ADD BROKER broker_name "172.16.99.79:8000","172.16.99.80:8000","172.16.99.81:8000","172.16.99.82:8000","172.16.99.83:8000";
其中 broker_host 为 Broker 所在节点 ip;broker_ipc_port 在 Broker 配置文件中的conf/apache_hdfs_broker.conf。
查看 Broker 状态
使用 mysql-client 连接任一已启动的 FE,执行以下命令查看 Broker 状态:
SHOW PROC "/brokers";mysql> SHOW PROC "/brokers"; +-------------+--------------+----------+------+-------+---------------------+---------------------+--------+ | Name | IP | HostName | Port | Alive | LastStartTime | LastUpdateTime | ErrMsg | +-------------+--------------+----------+------+-------+---------------------+---------------------+--------+ | broker_name | 172.16.99.79 | doris1 | 8000 | true | 2022-06-23 18:00:02 | 2022-06-23 18:00:28 | |
在生产环境中,所有实例都应使用守护进程启动,以保证进程退出后,会被自动拉起,如 Supervisor (opens new window)。如需使用守护进程启动,在 0.9.0 及之前版本中,需要修改各个 start_xx.sh 脚本,去掉最后的 & 符号。从 0.10.0 版本开始,直接调用 sh start_xx.sh
启动即可
Apache Doris Web UI访问
默认使用 Http 协议进行 WebUI 访问,在浏览器输入以下格式地址访问
http://FE_IP:FE_HTTP_PORT(默认8030)
默认账号:root
默认密码:空
负载均衡
负载均衡有3种方式
代码实现
自己在应用层代码进行重试和负载均衡。比如发现一个连接挂掉,就自动在其他连接上进行重试。应用层代码重试需要应用自己配置多个 doris 前端节点地址。
jdbc connector
如果使用 mysql jdbc connector 来连接 Doris,可以使用 jdbc 的自动重试机制:
jdbc:mysql:loadbalance://[host:port],[host:port].../[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue
proxy sql
Doris 的 FE 进程负责接收用户连接和查询请求,其本身是可以横向扩展且高可用的,但是需要用户在多个 FE 上架设一层 proxy,来实现自动的连接负载均衡。(配置起来比较复杂)
nginx反向代理
我这儿就选了这个 。比较方便也比较简单
配置反向代理
这里是新建了一个配置文件
vim /usr/local/nginx/conf/default.conf
然后在里面加上下面的内容
events {
worker_connections 1024;
}
stream {upstream mysqld {hash $remote_addr consistent;server 172.31.7.119:9030 weight=1 max_fails=2 fail_timeout=60s;##注意这里如果是多个FE,加载这里就行了}###这里是配置代理的端口,超时时间等server {listen 6030;proxy_connect_timeout 30s;proxy_timeout 30s;proxy_pass mysqld;}
}
启动Nginx
验证
mysql -uroot -P6030 -h172.31.7.119参数解释:-u 指定Doris用户名-p 指定Doris密码,我这里密码是空,所以没有-h 指定Nginx代理服务器IP-P 指定端口
Apache Doris1.0版本集群搭建、负载均衡与参数调优相关推荐
- 结合Apache和Tomcat实现集群和负载均衡
http://fableking.iteye.com/blog/360870 TomcatApacheJSP应用服务器Web 本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实 ...
- Tomcat服务器集群与负载均衡实现
一.前言 在单一的服务器上执行WEB应用程序有一些重大的问题,当网站成功建成并开始接受大量请求时,单一服务器终究无法满足需要处理的负荷量,所以就有点显得有点力不从心了.另外一个常见的问题是会产生单点故 ...
- 使用LVS+TUN搭建集群实现负载均衡
使用LVS+TUN搭建集群实现负载均衡 TUN模式的概述与工作原理 TUN模式服务概述: IP Tunneling(IP隧道) --可以在不同地域,不同网段 Director分配请 ...
- 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...
10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 原文:10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式 ...
- nginx与IIS服务器搭建集群实现负载均衡(二)
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 在<架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)>中小编简 ...
- 搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
转载:https://www.cnblogs.com/xiongze520/p/10308720.html 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟 ...
- 达梦v8版本集群搭建
达梦v8版本集群搭建 单节点搭建 1.配置需求 主机 用户 软件安装目录 实例目录 端口 归档日志目录 192.168.12.88 4c 8G 存储至少20G dmdba /home/dmdba/dm ...
- 【MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记】
MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1 - likingzi - 博客园 MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-2 - likingzi ...
- nginx与IIS服务器搭建集群实现负载均衡(三)
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 在<架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)>中提到有 ...
最新文章
- python和表格关系_数据表之多表关联
- 2020-10-25(极客pyc题目)
- 由于采用分时技术 用户可以独占计算机资源,计算机操作系统第1章练习题
- 一文读懂什么是C++移动语义《一》
- 自然语言15_Part of Speech Tagging with NLTK
- html5 背景拼贴,AI创建漂亮的无缝拼贴图案背景样式
- java 多线程同步问题_Java多线程同步问题:一个小Demo完全搞懂
- Android存储数据方式
- JAVA之运算符优先级
- mysql复杂查询sql_mysql – 复杂的SQL查询,很多很多
- Liskon替换原则
- CSS 元素的定位之相对定位 position: relative
- TCP/IP数据包结构具体解释
- mysql myclre_mysql 索引及查询优化总结
- linux ppsspp速度,PPSSPP模拟器详细使用技巧
- 用SQL表达并交差操作
- 国画家刘艺青个人介绍
- HMS Core 5,activity事件分发
- HTML网页设计:一、HTML的基本结构
- 学习 iOS14 新特性,教你如何创建一个优秀的 App Clip
热门文章
- linux 根据字母产生颜文字 figlet
- 数据分析 VS 算法模型,如何高效分工合作?
- 企业级大数据平台智能运维好帮手——星环科技多模数据平台监控软件Aquila Insight
- 用iPhone一秒拍摄3D照片,Facebook这项技术厉害了
- 5-羧基四甲基罗丹明TMR标记Polyacetal聚缩醛/HA透明质酸纳米载体TMR--Polyacetal|TMR-HA
- hypermill后处理构造器安装_康明斯发动机尾气后处理系统常见故障及维修
- 流量无限离我们还有多远?
- note20220411
- dma_alloc_coheren
- Cannot forward to error page for request ......