基于apache-doris-2.0.5版本进行集群部署
doris官网
doris官网地址
https://doris.apache.org/zh-CN/docs/install/standard-deployment
基于apache-doris-2.0.5版本进行集群部署
1: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 | arrow_flight_sql_port | 9040 | 用户 <–> FE | FE 上的 Arrow Flight SQL server 端口 |
FE | edit_log_port | 9010 | FE <–> FE | FE 上的 bdbje 之间通信用的端口 |
Broker | broker_ipc_port | 8000 | FE --> Broker, BE --> Broker | Broker 上的 thrift server,用于接收请求 |
1.1 注意事项
- FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
- BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。
- 一台机器上虽然可以部署多个 BE,但只建议部署一个实例,同时只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)
- 测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。
- 所有部署节点关闭 Swap。
- 注2:FE 节点的数量
- FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower)。
- FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
- Follower 的数量必须为奇数,Observer 数量随意。
- 根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。
- Broker 部署
- Broker 是用于访问外部数据源(如 hdfs)的进程。通常,在每台机器上部署一个 broker 实例即可。
2:环境准备
2.1:修改可打开文件数 (每个节点)
-
sudo vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
*hard nproc 65535
-
#重启永久生效, 也可以用 ulimit -n 65535 临时生效
2.2:关闭交换分区(swap)
Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区
- 需重启生效,永久关闭
- sed -ri ‘s/.*swap.*/#&/’ /etc/fstab
- 临时关闭 重启失效
- swapoff -a
2.3:调整vm.max_map_count的大小
2.3.1:临时修改
- sysctl -w vm.max_map_count=262144
2.3.2:永久修改
-
vim /etc/sysctl.conf
vm.max_map_count=2000000
-
执行进行生效
-
sysctl -p
3:部署 FE 节点
3.1:创建fe 元数据存储的目录
- mkdir /opt/modules/doris-2.0.5/doris-meta
3.2:修改fe 的配置文件
fe 部署在 hadoop 集群中,注意调整 be.conf 中的 webserver_port = 8030 ,以免造成端口冲突
yarn ResourceManager 是8030端口
- vim /opt/modules/doris-2.0.5/fe/conf/fe.conf
- #配置文件中指定元数据路径:
- meta_dir =/opt/modules/doris-2.0.5/doris-meta
- #修改绑定 ip (每台机器修改成自己的 ip)
- priority_networks = 172.16.110.21/24
- #避免与yarnResourceManager端口冲突
- http_port = 18030
3.3:启动FE
-
bin/start_fe.sh --daemon
日志默认存放在 log/ 目录下。如启动失败,可以通过查看 log/fe.log 或者 log/fe.out 查看错误信息
4:配置 BE 节点
注意:分发BE到要部署机器上去
be 部署在 hadoop 集群中,注意调整 be.conf 中的 webserver_port = 8040 ,以免造成端口冲突
yarn NodeManager 8040
- vim be.conf
- #避免与yarnNodeManager端口冲突
- webserver_port = 18040
- #配置文件中指定BE数据存放路径:数据存放目录。默认在be/storage下
- storage_root_path =/opt/modules/doris-2.0.5/be/storage
- #修改绑定 ip (ip为自己be所在机器的ip)
- priority_networks = 172.16.110.21/24
4.1:在 FE 中添加所有 BE 节点 (前提需要安装mysql作为元数据库)
4.2使用 MySQL Client 连接 FE
BE 节点需要先在 FE 中添加,才可加入集群
其中 fe_host 为 FE 所在节点 ip;query_port 在 fe/conf/fe.conf 中的;默认使用 root 账户,无密码登录
- mysql -h172.16.110.21 -P9030 -uroot
- #通过以下命令修改 root 密码
- SET PASSWORD FOR ‘root’ = PASSWORD(‘123456’);
- 添加BE
- ALTER SYSTEM ADD BACKEND “172.16.110.21:9050”;
- ALTER SYSTEM ADD BACKEND “172.16.110.22:9050”;
- ALTER SYSTEM ADD BACKEND “172.16.110.23:9050”;
- #其中 be_host 为 BE 所在节点 ip;heartbeat_service_port 在 be/conf/be.conf 中
- #heartbeat_service_port = 9050
4.3:启动 BE
-
bin/start_be.sh --daemon
BE 进程将启动并进入后台执行。日志默认存放在 be/log/ 目录下。如启动失败,可以通过查看 be/log/be.log 或者 be/log/be.out 查看错误信息
4.4 :查看BE状态
mysql -h172.16.110.21 -P9030 -uroot -p123456
使用 mysql-client 连接到 FE,并执行 SHOW PROC ‘/backends’; 查看 BE 运行情况。如一切正常,isAlive 列应为 true doris web_ui地址 http://172.16.110.21:18030/