文章目录
Apache Doris 部署介绍
一、软硬件要求
二、生产/测试环境节点配置建议
三、Broker部署介绍
四、操作系统安装要求
五、网络需求
Doris 运行在 Linux 环境中,推荐 CentOS 7.x 或者 Ubuntu 16.04 以上版本,同时你需要安装 Java 运行环境,JDK最低版本要求是8。我们这里使用的是Linux Centos7.9版本,jdk为1.8。
Apache Doris官方建议开发测试环境和生产环境节点的配置如下:
模块 | CPU | 内存 | 磁盘 | 网络 | 实例数量 |
---|---|---|---|---|---|
Frontend | 8核+ | 8GB+ | SSD或SATA,10GB+* | 千兆网卡 | 1 |
Backend | 8核+ | 16GB+ | SSD或SATA,50GB+* | 千兆网卡 | 1-3* |
模块 | CPU | 内存 | 磁盘 | 网络 | 实例数量(最低要求) |
---|---|---|---|---|---|
Frontend | 16核+ | 64GB+ | SSD或RAID卡,10GB+* | 万兆网卡 | 1-3* |
Backend | 16核+ | 64GB+ | SSD或SATA,100GB+* | 万兆网卡 | 3* |
Apache Doris的性能与节点数量及配置正相关,官方建议生产环境中部署Doris使用10~100台左右的机器来充分发挥Doris性能,其中3台部署FE(HA),剩余的部署BE。如果FE和BE混部,需要注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。
Broker 是用于访问外部数据源(如 hdfs)的进程,通常在每台机器上部署一个 broker 实例即可。
官方建议在安装操作系统的时候使用ext4文件系统。其他格式也可以。Centos7中查看文件系统命令 cat /etc/fstab:
或者使用命令 df -Th :
Linux操作系统中文件句柄数代表一个进程能同时维持多少个"文件"开着而不关闭,一个开着的"文件"就对应一个文件句柄。这里说的"文件"并非我们通常理解的文件,在Linux中一切IO都是"文件",也就是说打开硬盘上的文件是一个"文件",一个未关闭的TCP Socket 也是一个"文件",甚至控制台输入/输出也是"文件"。
Linux系统中文件句柄数默认为1024,在生产环境系统中这些远远不够,所以我们需要将linux操作系统的打开文件句柄数调大一些。
Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。
Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区。关闭Swap分区需要注释掉/etc/fstab文件中文件类型为swap的一行,然后重启该节点。
在部署Apache Doris时,从1.2.0版本往后,需要在部署BE的节点上调大单个JVM进程的虚拟机内存区域数量值以支撑更多的线程,BE 启动脚本会通过/proc/sys/vm/max_map_count 检查数值是否大于200W,否则启动失败。默认这个值为65530,可以通过"sysctl -w vm.max_map_count=2000000"命令调大该参数,以上参数只是临时设置该值,当重启机器后会失效,永久设置可以在/etc/sysctl.conf文件中加入"vm.max_map_count=2000000"参数即可。
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之间通信用的端口 |
Broker | broker_ipc_port | 8000 | FE-->Broker,BE-->Borker | Broker上的thrift server,用于接收请求 |
当部署多个FE实例时,要保证FE的http_port配置相同。