Doris简介
Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。
Doris技术概述
Doris整体架构如下图所示,Doris 架构非常简单,只有两类进程
-
Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
-
Backend(BE),主要负责数据存储、查询计划的执行。
这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本。
在使用接口方面,Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris,并支持与 BI 工具的无缝对接。Doris 当前支持多种主流的 BI 产品,包括不限于 SmartBI、DataEase、FineBI、Tableau、Power BI、SuperSet 等,只要支持 MySQL 协议的 BI 工具,Doris 就可以作为数据源提供查询支持。
在存储引擎方面,Doris 采用列式存储,按列进行数据的编码压缩和读取,能够实现极高的压缩比,同时减少大量非相关数据的扫描,从而更加有效利用 IO 和 CPU 资源。
Doris2.1.2版本于2024年4月份正式发布,此教程也根据Doris官方2.*的完整安装文档来撰写。
一:整体部署架构
节点 | 规格 | 角色 | 安装目录 |
---|---|---|---|
192.168.1.8 | 8 核 | 32 GB | FE、BE | /data/doris212 |
192.168.1.7 | 8 核 | 32 GB | FE、BE | /data/doris212 |
192.168.1.6 | 8 核 | 32 GB | BE | /data/doris212 |
服务器配置:
官方建议:通常建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。
二:前期准备
tips1: 前期准备的示例当中, 有部分步骤需要重启服务器,可以等第二章节结束后一并重启,不需要每一步单独重启
tips2: 前期准备的示例当中, 此文章都是以FE这台节点进行的操作演示, 实际上需要看自己有多少台服务器就要执行多少台。比如我的机器有三台,我只演示了其中1.8这台,但是三台都需要执行前期准备工作。
2.1 服务器之间免密钥
这篇文章 3.11章节 详细介绍了SSH免密钥过程 【点击连接跳转】
2.2 设置系统最大打开文件句柄数
通过修改文件句柄数来控制系统打开文件的数量。通常情况下默认为1024个文件, 通过 ulimit -n 查看目前最大文件句柄数
root@testzt \~\]# **ulimit -n**
2.2.1 临时修改
root@testzt \~\]#**ulimit -n 65535**
**2.2.2 永久修改**
> 查看 /etc/security/limits.conf 文件最后三行内容
>
> \[root@testzt \~\]# **tail -n 3 /etc/security/limits.conf**
>
> 使用printf命令向文件中追加 root soft nofile 6553 和 root hard nofile 65535
>
> \[root@testzt \~\]# **printf "root soft nofile 65535\\nroot hard nofile 65535\\n" \>\> /etc/security/limits.conf**
>
> 再次查看 /etc/security/limits.conf 文件最后三行内容,看是否追加成功
>
> \[root@testzt \~\]# **tail -n 3 /etc/security/limits.conf**
>
> 查看 /etc/sysctl.conf 文件最后三行内容
>
> \[root@testzt \~\]# **tail -n 3 /etc/sysctl.conf**
>
> 使用printf命令向文件中追加 fs.file-max=655350 和 vm.max_map_count=2000000
>
> \[root@testzt \~\]# **printf "fs.file-max=655350\\nvm.max_map_count=2000000\\n" \>\> /etc/sysctl.conf**
>
> 再次查看 /etc/sysctl.conf 文件最后三行内容,看是否追加成功
>
> \[root@testzt \~\]# **tail -n 3 /etc/sysctl.conf**
>
> 立即生效(可能还是需要重启)
>
> \[root@testzt \~\]# **sysctl -p**
>
> 查看open files项 是否已被修改
>
> \[root@testzt \~\]# **ulimit -a**

### 2.3 时钟同步
Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。
[这篇文章 3.9 章节 详细介绍了服务器时间不一致的矫正方法 【点击连接跳转】](https://blog.csdn.net/LiHaoHang6/article/details/97956824 "这篇文章 3.9 章节 详细介绍了服务器时间不一致的矫正方法 【点击连接跳转】")
### 2.4 Centos7 关闭防火墙
> **查看防火墙命令**
>
> systemctl status firewalld
>
> **开启防火墙命令**
>
> systemctl start firewalld
>
> **关闭防火墙命令**
>
> systemctl stop firewalld
>
> **禁用防火墙命令**
>
> systemctl disable firewalld
> **查看系统防火墙规则命令**
>
> iptables -L
>
> **清空系统防火墙规则命令**
>
> iptables -F

### 2.5 Contos7 Selinux 关闭
SeLinux有三种状模式,一个是宽容模式**Enforcing** ,一种是**Permissive** ,还有一种是关闭模式**Disabled** ,其中前两种虽然一个会强制执行一个不会强制执行,但是都会限制部分系统资源访问权限。所以SeLinux最好设置为关闭状态 --**Disabled**。
> **查看SeLinux状态**
>
> getenforce
>
> **临时关闭SeLinux**
>
> setenforce 0
>
> **永久关闭SeLinux**
>
> 1、vim /etc/selinux/config,SELINUX=disabled,然后保存退出。
>
> 2、vim /etc/sysconfig/selinux,SELINUX=disabled,然后保存退出。
>
> **重启生效。**

### 2.6 Contos7 Swappiness 关闭
swap指的是一个交换分区或文件,主要是在**内存使用存在压力时** ,触发内存回收,这时可能会将部分内存的数据交换到swap空间。Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区,不关闭则会导致内存使用率过高,从而引发**FE Memory limit exceeded** 后挂掉。
> **查看Swappiness版本号**
>
> swapon --version
> **修改/etc/fstab 文件,将有 swap 这一行注释**
>
> # /dev/mapper/uniontechos-swap none swap defaults 0 0
> **修改/etc/sysctl.conf 文件,新增 vm.swappiness = 0**
>
> vm.swappiness = 0
> **sysctl -p 使配置生效**
>
> sysctl -p
>
> 重启生效

### 2.7 Centos7 修改 hugepage
> 设置开机启动文件执行权限
>
> \[root@testzt \~\]# **chmod +x /etc/rc.d/rc.local**
>
> \[root@testzt \~\]#
>
> 向文件中追加指令,always表示在系统启动时候,自动分配内存,never表示有软件自己分配内存。
>
> \[root@testzt \~\]# **printf "echo never \> /sys/kernel/mm/transparent_hugepage/enabled\\necho never \> /sys/kernel/mm/transparent_hugepage/defrag\\n" \>\> /etc/rc.d/rc.local**
**将下述内容添加至文件结尾部分**
> echo never \> /sys/kernel/mm/transparent_hugepage/enabled
>
> echo never \> /sys/kernel/mm/transparent_hugepage/defrag
### 
### 2.8 Contos7 JDK 安装
[这篇文章 3.10 章节 详细介绍了linux安装JDK的保姆教程 【点击连接跳转】](https://blog.csdn.net/LiHaoHang6/article/details/97956824 "这篇文章 3.10 章节 详细介绍了linux安装JDK的保姆教程 【点击连接跳转】")
### 2.8 Apache Doris 2.0.1 选择安装包
官方下载地址:[Download - Apache Doris](https://doris.apache.org/zh-CN/download "Download - Apache Doris")
选择下载的时候有X64(avx2) 和 X64(no avx2) 两个选项, 在doris0.14.13.1 及之后的版本需要运行环境的 CPU 支持 avx2 指令,可以通过 **cat /proc/cpuinfo** 查看是否支持。如果不支持,请使用带 no-avx2 后缀的版本。avx2 指令会显著提升 bloomfilter 等数据结构的计算效率,从而影响索引过滤、runtime filter 等功能的效率。使用以下命令查看:
> \[root@testzt \~\]# **cat /proc/cpuinfo \|grep flag**
## 
可以看到该服务器cpu是不支持avx2指令的,那就可以下载不支持avx2指令的已编译版本。如果cpu支持avx2指令,需要下载支持avx2指令的已编译版本。

## 三:Doirs安装
### 3.1 网络端口要求
Doris 各个实例直接通过网络进行通讯。以下表格展示了所有需要开放的端口,所以请确保端口不被其他服务占用。
1. **当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。**
2. **部署前请确保各个端口在应有方向上的访问权限。**
|--------------|------------------------|--------------|--------------------------------|--------------------------------------|
| ****实例名称**** | ****端口名称**** | ****默认端口**** | ****通讯方向**** | ****说明**** |
| 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,用于接收请求 |
### 3.2 提前创建元数据文件夹和日志文件夹
因为Doris升级采用滚动升级方式, **将元数据放在单独的目录当中会避免后续升级时带来不必要的麻烦**,比如doris212目录中有FE元数据目录doris_meta,后续doris123需要引用元数据目录,如果地址填为doris212/fe/doris_meta, 则doris212目录再也无法删除,所以这些特殊目录最好先创建好。
**tips:doris集群服务器都需要执行**
> \[root@testzt data\]# cd /
>
> \[root@testzt /\]#
>
> \[root@testzt /\]# **mkdir -p /data/doris/doris_meta**
>
> \[root@testzt /\]#
>
> \[root@testzt /\]# **mkdir -p /data/doris/fe_log**
>
> \[root@testzt /\]#
>
> \[root@testzt /\]# **mkdir -p /data/doris/storage**
>
> \[root@testzt /\]#
>
> \[root@testzt /\]# **mkdir -p /data/doris/be_log**
>
> \[root@testzt /\]#
>
> \[root@testzt /\]# **mkdir -p /data/doris/jdbc_drivers**
>
> \[root@testzt /\]#
>
> \[root@testzt /\]# **chmod -R 777 /data/doris**
>
> \[root@testzt /\]#
>
> \[root@testzt /\]# **cd /data/doris**
>
> \[root@testzt doris\]#
>
> \[root@testzt doris\]# **ls -lrt**
>
> 总用量 20
>
> drwxrwxrwx. 2 root root 4096 4月 24 21:30 **doris_meta**
>
> drwxrwxrwx. 2 root root 4096 4月 24 21:30 **fe_log**
>
> drwxrwxrwx. 2 root root 4096 4月 24 21:30 **storage**
>
> drwxrwxrwx. 2 root root 4096 4月 24 21:30 **be_log**
>
> drwxrwxrwx. 2 root root 4096 4月 24 21:30**jdbc_drivers**
>
> \[root@testzt doris\]#
>
> \[root@testzt doris\]# pwd
>
> /data/doris
>
> \[root@testzt doris\]#
### 
### 3.3 将压缩包解压到指定文件夹并重命名
* 将安装包 apache-doris-2.1.2-bin-x64-noavx2.tar.gz 解压到/data下为apache-doris-2.1.2-bin-x64-noavx2.tar.gz 目录
> \[root@testzt data\]# **tar -zxvf apache-doris-2.1.2-bin-x64-noavx2.tar.gz -C /data/**
* 将安装包重命名为 doris212
> \[root@testzt data\]# **mv apache-doris-2.1.2-bin-x64-noavx2 doris212**

* 进入doris212文件夹, 文件结构如下:
* 其中extensions文件夹内容是apache_hdfs_broker和audit_loader拓展的功能。
> \[root@testzt data\]# cd doris212/
>
> \[root@testzt doris212\]# ls -lrt
>
> 总用量 12
>
> drwxr-xr-x. 12 root root 4096 4月 9 20:06 **fe**
>
> drwxr-xr-x. 3 root root 4096 4月 9 20:06 **extensions**
>
> drwxr-xr-x. 11 root root 4096 4月 9 20:06 **be**
>
> \[root@testzt doris212\]#
>
> \[root@testzt doris212\]#
### 3.4 修改 fe.conf 配置文件
#### 3.4.1:日志路径修改
> 这里的日志路径统一修改为3.2提前创建的文件夹中
>
> LOG_DIR = /data/doris/fe_log
>
> sys_log_dir = /data/doris/fe_log
>
> audit_log_dir = /data/doris/fe_log
#### 3.4.2:JDBC路径修改
> JDBC drivers目录可以和BE共用,**修改为3.2提前创建的文件夹中**
>
> jdbc_drivers_dir = /data/doris/jdbc_drivers
#### 3.4.3:JAVA堆内存修改
> JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。
>
> -Xmx8192m
#### 3.4.4:FE元数据路径修改
> meta_dir 这里是FE 的元数据目录, 将默认的${DORIS_HOME}路径变更为刚才创建的自定义目录 /data/doris/ 当中, 官方强烈建议存放DORIS_METE的目录磁盘为SSD(高写入性能)和RAID(安全)。
>
> meta_dir = /data/doris/doris_meta
#### 3.4.5:priority_networks 如何确认自己的网卡
priority_networks 因为有多网卡的存在,或因为安装过 docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 ip。当前 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP。
priority_networks 是 FE 和 BE 都有的一个配置,配置项需写在 fe.conf 和 be.conf 中。该配置项用于在 FE 或 BE 启动时,告诉进程应该绑定哪个IP。示例如下:
> priority_networks = **192.168.1.8/24**
这是一种 [CIDR (opens new window)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing "CIDR (opens new window)")的表示方法。FE 或 BE 会根据这个配置项来寻找匹配的IP,作为自己的 localIP。
**priority_networks 配置中如何找到正确的IP地址** ,有一个简单的办法就是执行 **hostname -i** 看一下是否有多个网卡,如下所示:
> \[root@testzt \~\]# **hostname -i**
>
> fe80::f816:3eff:fe2f:e1b%enp4s3 **192.168.1.8** **172.17.0.1**
可以看到我有两个网段信息,一个是**192.168.1.8** ,一个是**172.17.0.1**。如果不确定哪一个是正确的IP地址,可以再次执行 ip a 查看网络CIDR表示法,如下所示:

可以看到, 172.17.0.1 为 docker 环境导致的虚拟网卡,所以**192.168.1.8**为正确的IP地址。
#### 3.4.6 fe.conf 配置文件如下:
```cs
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#####################################################################
## The uppercase properties are read and exported by bin/start_fe.sh.
## To see all Frontend configurations,
## see fe/src/org/apache/doris/common/Config.java
#####################################################################
CUR_DATE=`date +%Y%m%d-%H%M%S`
# the output dir of stderr and stdout
# DORIS 日志 输出目录
LOG_DIR = /data/doris/fe_log
# CMS JAVA OPTS
# JAVA_OPTS="-Dsun.security.krb5.debug=true -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$CUR_DATE"
# JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。
JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$CUR_DATE"
# For jdk 9+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_9="-Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time"
# INFO, WARN, ERROR, FATAL
sys_log_level = INFO
# NORMAL, BRIEF, ASYNC
sys_log_mode = NORMAL
# store metadata, must be created before start FE.
# Default value is ${DORIS_HOME}/doris-meta
# 这里是FE 的元数据目录, 将默认的${DORIS_HOME}路径变更为刚才创建的自定义目录 /data/doris/ 当中, 官方强烈建议存放DORIS_METE的目录磁盘为SSD和RAID。
meta_dir = /data/doris/doris_meta
#jdbc_drivers 默认目录也需要修改
jdbc_drivers_dir = /data/doris/jdbc_drivers
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
arrow_flight_sql_port = -1
# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24 or IP format, e.g. 10.10.10.1
# Default value is empty.
#因为有多网卡的存在,或因为安装过 docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 ip。当前 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP
priority_networks = 192.168.1.8/24
# Advanced configurations
# log_roll_size_mb = 1024
sys_log_dir = /data/doris/fe_log
# sys_log_roll_num = 10
# sys_log_verbose_modules = org.apache.doris
audit_log_dir = /data/doris/fe_log
# audit_log_modules = slow_query, query
# audit_log_roll_num = 10
# meta_delay_toleration_second = 10
# qe_max_connection = 1024
# qe_query_timeout_second = 300
# qe_slow_log_ms = 5000
```
**其中非默认配置可以跳转到第六章节, 在其中会详细讲解配置项**
### 3.5 修改be.conf 配置文件

#### 3.5.1 日志修改路径
> 这里的日志路径统一修改为**3.2提前创建的文件夹**中
>
> PPROF_TMPDIR = /data/doris/be_log/
>
> sys_log_dir = /data/doris/be_log
#### 3.5.2 JAVA_HOME 修改路径
> JAVA_HOME 路径为2.8 JDK安装的目录
>
> JAVA_HOME = /usr/local/java/jdk1.8.0_181/
#### 3.5.3 priority_networks 填写
> 和 3.4.5 一致
>
> priority_networks = **192.160.21.191/24**
#### 3.5.4 BE 存储数据目录修改
> **storage_root_path 路径为 3.2 创建的storage路径
> storage_root_path = /data/doris/storage**
#### 3.5.5 jdbc 路径修改
> JDBC drivers目录可以和BE共用,修改为3.2提前创建的文件夹中
>
> jdbc_drivers_dir = **/data/doris/jdbc_drivers**
#### **3.5.6 be.conf 配置文件如下**
```cs
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
CUR_DATE=`date +%Y%m%d-%H%M%S`
PPROF_TMPDIR="/data/doris/be_log/"
JAVA_OPTS="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xloggc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives"
# For jdk 9+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_9="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives"
# For jdk 17+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_17="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives --add-opens=java.base/java.net=ALL-UNNAMED"
# since 1.2, the JAVA_HOME need to be set to run BE process.
# 从Doris1.2版本后 BE运行需要JAVA的支持 所以这里配置刚才配置好的JDK目录
JAVA_HOME=/usr/java/jdk1.8.0_181
# https://github.com/apache/doris/blob/master/docs/zh-CN/community/developer-guide/debug-tool.md#jemalloc-heap-profile
# https://jemalloc.net/jemalloc.3.html
JEMALLOC_CONF="percpu_arena:percpu,background_thread:true,metadata_thp:auto,muzzy_decay_ms:15000,dirty_decay_ms:15000,oversize_threshold:0,prof:false,lg_prof_interval:32,lg_prof_sample:19,prof_gdump:false,prof_accum:false,prof_leak:false,prof_final:false"
JEMALLOC_PROF_PRFIX=""
# INFO, WARNING, ERROR, FATAL
sys_log_level = INFO
# ports for admin, web, heartbeat service
be_port = 9060
webserver_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
arrow_flight_sql_port = -1
# HTTPS configures
enable_https = false
# path of certificate in PEM format.
ssl_certificate_path = "$DORIS_HOME/conf/cert.pem"
# path of private key in PEM format.
ssl_private_key_path = "$DORIS_HOME/conf/key.pem"
# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24 or IP format, e.g. 10.10.10.1
# Default value is empty.
priority_networks = 192.168.1.8/24;
# data root path, separate by ';'
# You can specify the storage type for each root path, HDD (cold data) or SSD (hot data)
# eg:
# storage_root_path = /home/disk1/doris;/home/disk2/doris;/home/disk2/doris
# storage_root_path = /home/disk1/doris,medium:SSD;/home/disk2/doris,medium:SSD;/home/disk2/doris,medium:HDD
# /home/disk2/doris,medium:HDD(default)
#
# you also can specify the properties by setting '