当前位置:网站首页>Apache Doris1.0版本集群搭建、负载均衡与参数调优
Apache Doris1.0版本集群搭建、负载均衡与参数调优
2022-06-25 22:06:00 【Mumunu-】
首先下载包,有源码和预编译两种包 。我这用的预编译
我的架构是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- 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
修改be ipstorage_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/belogpriority_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 --daemonBE 进程将启动并进入后台执行。日志默认存放在 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][=propertyValueproxy 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 指定端口边栏推荐
- C. Yet Another Card Deck-Educational Codeforces Round 107 (Rated for Div. 2)
- Today's 61 Fu
- Bi-sql stored procedure (I)
- 库项目和App项目中清单文件的包名不要相同
- 解决‘tuple‘ object has no attribute ‘lower‘
- What is Unified Extensible Firmware Interface (UEFI)?
- Jenkins 发布PHP项目代码
- 达梦数据库修改字段信息采坑记
- 社招两年半10个公司28轮面试面经(含字节、拼多多、美团、滴滴......)
- 发送邮件工具类
猜你喜欢
![[Axi] interpretation of Axi protocol atomic access](/img/40/c742b861d92dfa2a1b27ae9ccc7a5d.png)
[Axi] interpretation of Axi protocol atomic access

Qt自定义实现的日历控件

Kotlin null pointer bug

Summary of common JDBC exceptions and error solutions

CXF

hiberate架构介绍及环境搭建(非常详细)

How does excel translate Chinese words into English automatically? This formula teaches you

ACM. Hj16 shopping list ●●

When are the three tools used for interface testing?

Kotlin空指针Bug
随机推荐
Leetcode 513. 找树左下角的值
mongodb
Qtcreator formatting code
关于Swoole协程容器
51 single chip microcomputer, some registers, some knowledge points
流数据
phoenix索引
Share a downloaded osgeo4w64 Library Based on qgis3.10
库项目和App项目中清单文件的包名不要相同
先序线索二叉树
(serial port Lora module) centrida rf-al42uh private protocol test at instruction test communication process
Hbuilderx uses the gaude map to obtain the current location
Qlabel text scrolling horizontally
OBS-Studio-27.2.4-Full-Installer-x64. Exe Download
OpenResty篇01-入门简介和安装配置
C# IO Stream 流(二)扩展类_封装器
mysql集群
第五章 习题(124、678、15、19、22)【微机原理】【习题】
mysql版本升级+数据迁移
Reprint: detailed explanation of qtablewidget (style, right-click menu, header collapse, multiple selection, etc.)