部署 Apache Doris 集群

1 准备工作

1.1 服务器准备

此处搭建一个简单的 Apache Doris 集群,集群节点规划:

  • 1 个 FE 节点,IP 为 10.1.11.39
  • 3 个 BE 节点,IP 分别为 10.1.11.37,10.1.11.27,10.1.11.70

所有服务器的操作系统均为 CentOS 7,这里使用的是 CentOS 7.7,服务器硬件配置视数据规模而定,可参考Apache Doris 官方文档

1.2 软件准备

从 Apache Doris 官网下载 Doris 的安装包 , 将安装包放在所有 Doris 节点服务器上,这里下载的是 1.0.0 版本的安装包。

下载了 Doris 安装包后,将安装包解压,放置于自己的运行目录下。这处示例将安装包放置于 /opt/doris 目录下,结构如下所示:

  1. [root@doris-1 opt]# tree -L 2
  2. .
  3. └── doris
  4. ├── apache_hdfs_broker
  5. ├── be
  6. ├── CHANGE-LOG.txt
  7. ├── DISCLAIMER
  8. ├── fe
  9. ├── LICENSE-dist.txt
  10. ├── licenses
  11. ├── NOTICE-dist.txt
  12. ├── README
  13. └── udf
  14. 6 directories, 5 files

1.3 操作系统参数设置

设置系统最大打开文件句柄数,修改 /etc/security/limits.conf

  1. echo "* soft nofile 204800" >> /etc/security/limits.conf
  2. echo "* hard nofile 204800" >> /etc/security/limits.conf
  3. echo "* soft nproc 204800" >> /etc/security/limits.conf
  4. echo "* hard nproc 204800 " >> /etc/security/limits.conf

修改 /etc/sysctl.conf

  1. echo fs.file-max = 6553560 >> /etc/sysctl.conf

设置完参数后,可以重启一下服务器;
注意: 需对所有 Doris 节点服务器进行配置。

1.4 防火墙

Doris 各个实例直接通过网络进行通讯,以下表格展示了所有需要的端口:

实例名称端口名称默认端口通讯方向说明
BEbe_port9060FE → BEBE 上 thrift server 的端口,用于接收来自 FE 的请求
BEwebserver_port8040BE ↔ BEBE 上的 http server 的端口
BEheartbeat_service_port9050FE → BEBE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
BEbrpc_port8060FE ↔ BE, BE ↔ BEBE 上的 brpc 端口,用于 BE 之间通讯
FEhttp_port8030FE ↔ FE,用户 ↔ FEFE 上的 http server 端口
FErpc_port9020BE → FE, FE ↔ FEFE 上的 thrift server 端口,每个 fe 的配置需要保持一致
FEquery_port9030用户 ↔ FEFE 上的 mysql server 端口
FEedit_log_port9010FE ↔ FEFE 上的 bdbje 之间通信用的端口

如果简单处理,也可以将防火墙关闭:

  1. service firewalld stop

注意: 需对所有 Doris 节点服务器进行配置。

2 安装运行 Doris FE

2.1 Java 运行环境

Doris FE 是 Java 项目,它的运行需要有 JRE 的环境支持,在 FE 节点上安装 Java 环境:

  1. yum install -y java-1.8.0-openjdk
  2. echo "export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk" >> /etc/profile
  3. source /etc/profile

2.2 配置 FE

获取 Doris 节点所处的内网网段,此示例的内网网段的 CIDR 是 10.1.11.0/24。
如不清楚,也可执行命令查询:

  1. [root@Doris-1 ~]# ip addr
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4. inet 127.0.0.1/8 scope host lo
  5. valid_lft forever preferred_lft forever
  6. inet6 ::1/128 scope host
  7. valid_lft forever preferred_lft forever
  8. 2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  9. link/ether 00:50:56:bb:75:3e brd ff:ff:ff:ff:ff:ff
  10. inet 10.1.11.39/24 brd 10.1.11.255 scope global noprefixroute ens192
  11. valid_lft forever preferred_lft forever
  12. inet6 fe80::250:56ff:febb:753e/64 scope link noprefixroute
  13. valid_lft forever preferred_lft forever

返回结果中的 10.1.11.39/24,也可作为当前节点的 CIDR 使用。

将网段信息配置到 /opt/doris/fe/conf/fe.conf 配置文件中:

  1. echo "priority_networks = 10.1.11.39/24" >> /opt/doris/fe/conf/fe.conf

fe.conf 配置文件中很多参数默认是注释状态,可以根据实际情况来调整,例如:

  1. qe_max_connection = 65535
  2. max_conn_per_user = 1024
  3. sys_log_delete_age=1d
  4. audit_log_delete_age=3d
  5. exec_mem_limit=8589934592
  6. tablet_create_timeout_second=30
  7. catalog_trash_expire_second = 60
  8. enable_batch_delete_by_default=true
  9. max_layout_length_per_row=10000000

2.3 启动 FE

执行启动命令:

  1. bash /opt/doris/fe/bin/start_fe.sh --daemon

可以通过查看 FE 的运行日志来了解 FE 的启动情况:

  1. tail -f /opt/doris/fe/log/fe.log

3 安装运行 Doris BE

3.1 配置 BE

获取 Doris 节点所处的内网网段,此示例的内网网段的 CIDR 是 10.1.11.0/24。
如不清楚,也可参考之前配置 FE 时,通过命令 ip a 获取。 将网段信息配置到 /opt/doris/be/conf/be.conf 配置文件中:

  1. echo "priority_networks = 10.1.11.0/24" >> /opt/doris/be/conf/be.conf

be.conf 配置文件中很多参数默认是注释状态,可根据实际情况来调整。

3.2 启动 BE

执行启动命令:

  1. bash /opt/doris/be/bin/start_be.sh --daemon

可以通过查看 BE 的运行日志来了解 BE 的启动情况:

  1. tail -f /opt/doris/be/log/be.INFO

4 配置集群

4.1 登录 FE

以 MySQL client 登录 FE,初始时 FE root 用户无密码:

  1. mysql -uroot -h10.1.11.39 -P9030

4.2 在 FE 中添加 BE 节点

  1. mysql> ALTER SYSTEM ADD BACKEND '10.1.11.37:9050';
  2. Query OK, 0 rows affected (0.06 sec)
  3. mysql> ALTER SYSTEM ADD BACKEND '10.1.11.27:9050';
  4. Query OK, 0 rows affected (0.00 sec)
  5. mysql> ALTER SYSTEM ADD BACKEND '10.1.11.70:9050';
  6. Query OK, 0 rows affected (0.01 sec)

4.3 查询 BE 是否成功添加

  1. mysql> show proc '/backends';
  2. +-----------+-----------------+------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------------------------+--------+--------------------+-------------------------------------------------------------------------------------------------------------------------------+
  3. | BackendId | Cluster | IP | HostName | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime | LastHeartbeat | Alive | SystemDecommissioned | ClusterDecommissioned | TabletNum | DataUsedCapacity | AvailCapacity | TotalCapacity | UsedPct | MaxDiskUsedPct | Tag | ErrMsg | Version | Status |
  4. +-----------+-----------------+------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------------------------+--------+--------------------+-------------------------------------------------------------------------------------------------------------------------------+
  5. | 11002 | default_cluster | 10.1.11.27 | 10.1.11.27 | 9050 | 9060 | 8040 | 8060 | 2022-05-13 12:39:38 | 2022-05-13 14:19:22 | true | false | false | 7 | 2.179 KB | 93.932 GB | 96.941 GB | 3.10 % | 3.10 % | {"location" : "default"} | | 1.0.0-rc03-Unknown | {"lastSuccessReportTabletsTime":"2022-05-13 14:18:34","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} |
  6. | 11001 | default_cluster | 10.1.11.37 | 10.1.11.37 | 9050 | 9060 | 8040 | 8060 | 2022-05-13 12:46:46 | 2022-05-13 14:19:22 | true | false | false | 2 | 2.146 KB | 93.936 GB | 96.941 GB | 3.10 % | 3.10 % | {"location" : "default"} | | 1.0.0-rc03-Unknown | {"lastSuccessReportTabletsTime":"2022-05-13 14:19:11","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} |
  7. | 11003 | default_cluster | 10.1.11.70 | 10.1.11.70 | 9050 | 9060 | 8040 | 8060 | 2022-05-13 12:45:41 | 2022-05-13 14:19:22 | true | false | false | 3 | 1.063 KB | 93.932 GB | 96.941 GB | 3.10 % | 3.10 % | {"location" : "default"} | | 1.0.0-rc03-Unknown | {"lastSuccessReportTabletsTime":"2022-05-13 14:18:23","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} |
  8. +-----------+-----------------+------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------------------------+--------+--------------------+-------------------------------------------------------------------------------------------------------------------------------+
  9. 3 rows in set (0.35 sec)

查询结果中 Alive 字段为 true 则表示添加成功。

4.4 创建 DataEase 库及初始化 FE 密码

  1. mysql> CREATE DATABASE dataease;
  2. Query OK, 0 rows affected (0.02 sec)
  3. mysql> SET PASSWORD FOR 'root' = PASSWORD('Password123@doris');
  4. Query OK, 0 rows affected (0.00 sec)