部署 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 目录下,结构如下所示:
[root@doris-1 opt]# tree -L 2
.
└── doris
├── apache_hdfs_broker
├── be
├── CHANGE-LOG.txt
├── DISCLAIMER
├── fe
├── LICENSE-dist.txt
├── licenses
├── NOTICE-dist.txt
├── README
└── udf
6 directories, 5 files
1.3 操作系统参数设置¶
设置系统最大打开文件句柄数,修改 /etc/security/limits.conf
echo "* soft nofile 204800" >> /etc/security/limits.conf
echo "* hard nofile 204800" >> /etc/security/limits.conf
echo "* soft nproc 204800" >> /etc/security/limits.conf
echo "* hard nproc 204800 " >> /etc/security/limits.conf
修改 /etc/sysctl.conf
echo fs.file-max = 6553560 >> /etc/sysctl.conf
设置完参数后,可以重启一下服务器;
注意: 需对所有 Doris 节点服务器进行配置。
1.4 防火墙¶
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 | edit_log_port | 9010 | FE ↔ FE | FE 上的 bdbje 之间通信用的端口 |
如果简单处理,也可以将防火墙关闭:
service firewalld stop
2 安装运行 Doris FE¶
2.1 Java 运行环境¶
Doris FE 是 Java 项目,它的运行需要有 JRE 的环境支持,在 FE 节点上安装 Java 环境:
yum install -y java-1.8.0-openjdk
echo "export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk" >> /etc/profile
source /etc/profile
2.2 配置 FE¶
获取 Doris 节点所处的内网网段,此示例的内网网段的 CIDR 是 10.1.11.0/24。
如不清楚,也可执行命令查询:
[root@Doris-1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:bb:75:3e brd ff:ff:ff:ff:ff:ff
inet 10.1.11.39/24 brd 10.1.11.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:febb:753e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
返回结果中的 10.1.11.39/24,也可作为当前节点的 CIDR 使用。
将网段信息配置到 /opt/doris/fe/conf/fe.conf 配置文件中:
echo "priority_networks = 10.1.11.39/24" >> /opt/doris/fe/conf/fe.conf
qe_max_connection = 65535
max_conn_per_user = 1024
sys_log_delete_age=1d
audit_log_delete_age=3d
exec_mem_limit=8589934592
tablet_create_timeout_second=30
catalog_trash_expire_second = 60
enable_batch_delete_by_default=true
max_layout_length_per_row=10000000
2.3 启动 FE¶
执行启动命令:
bash /opt/doris/fe/bin/start_fe.sh --daemon
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 配置文件中:
echo "priority_networks = 10.1.11.0/24" >> /opt/doris/be/conf/be.conf
3.2 启动 BE¶
执行启动命令:
bash /opt/doris/be/bin/start_be.sh --daemon
可以通过查看 BE 的运行日志来了解 BE 的启动情况:
tail -f /opt/doris/be/log/be.INFO
4 配置集群¶
4.1 登录 FE¶
以 MySQL client 登录 FE,初始时 FE root 用户无密码:
mysql -uroot -h10.1.11.39 -P9030
4.2 在 FE 中添加 BE 节点¶
mysql> ALTER SYSTEM ADD BACKEND '10.1.11.37:9050';
Query OK, 0 rows affected (0.06 sec)
mysql> ALTER SYSTEM ADD BACKEND '10.1.11.27:9050';
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER SYSTEM ADD BACKEND '10.1.11.70:9050';
Query OK, 0 rows affected (0.01 sec)
4.3 查询 BE 是否成功添加¶
mysql> show proc '/backends';
+-----------+-----------------+------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------------------------+--------+--------------------+-------------------------------------------------------------------------------------------------------------------------------+
| BackendId | Cluster | IP | HostName | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime | LastHeartbeat | Alive | SystemDecommissioned | ClusterDecommissioned | TabletNum | DataUsedCapacity | AvailCapacity | TotalCapacity | UsedPct | MaxDiskUsedPct | Tag | ErrMsg | Version | Status |
+-----------+-----------------+------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------------------------+--------+--------------------+-------------------------------------------------------------------------------------------------------------------------------+
| 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} |
| 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} |
| 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} |
+-----------+-----------------+------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------------------------+--------+--------------------+-------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.35 sec)
4.4 创建 DataEase 库及初始化 FE 密码¶
mysql> CREATE DATABASE dataease;
Query OK, 0 rows affected (0.02 sec)
mysql> SET PASSWORD FOR 'root' = PASSWORD('Password123@doris');
Query OK, 0 rows affected (0.00 sec)