文章目录
本文档仅使用与单机部署doris数据库单副本实例。
目录约定
| 目录/文件位置 | 用途 | 属主 |
|---|---|---|
| /data/logs/doris-fe | doris-fe日志文件 | doris:doris |
| /data/logs/doris-be | doris-be日志文件 | doris:doris |
| /data/doris-meta | doris-fe元数据文件 | doris:doris |
| /data/doris | doris-be数据文件 | doris:doris |
| /mnt/apps/apache-doris-3.0.6.1-bin-x64 | doris程序文件位置 | doris:doris |
| /mnt/apps/doris | doris程序文件位置链接 | doris:doris |
| /etc/systemd/system/doris-fe.service | doris-fe开启启动文件 | root:root |
| /etc/systemd/system/doris-be.service | doris-be开启启动文件 | root:root |
| /mnt/apps/jdk-17.0.19/ | doris运行依赖JDK位置 | doris:doris |
配置文件修改
Doris-fe
cat /mnt/apps/doris/be/conf/fe.conf
CUR_DATE=`date +%Y%m%d-%H%M%S`
LOG_DIR = "/data/logs/doris-fe"
JAVA_OPTS="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintClassHistogramAfterFullGC -Xloggc:$LOG_DIR/log/fe.gc.log.$CUR_DATE -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Dlog4j2.formatMsgNoLookups=true"
JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR -Xlog:gc*,classhisto*=trace:$LOG_DIR/fe.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED"
JAVA_HOME=/mnt/apps/jdk-17.0.19/
lower_case_table_names = 1
meta_dir = /data/doris-meta
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
arrow_flight_sql_port = -1
priority_networks = 10.90.100.0/24
sys_log_level = INFO
sys_log_mode = ASYNC
注意:需要修改的地方
LOG_DIR :doris-fe的各类日志文件
JAVA_OPTS_FOR_JDK_17:-Xmx8192m -Xms8192m 这两个参数可以修改使用的最大内存
JAVA_HOME: 配置JDK环境的路径
meta_dir :元数据的位置
priority_networks: 服务器通信内部网络地址断(集群使用)
Doris-be
cat /mnt/apps/doris/be/conf/be.conf
CUR_DATE=`date +%Y%m%d-%H%M%S`
LOG_DIR="/data/logs/doris-be"
JAVA_OPTS="-Dfile.encoding=UTF-8 -Xmx2048m -DlogPath=$LOG_DIR/jni.log -Xloggc:$LOG_DIR/be.gc.log.$CUR_DATE -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives"
JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Djol.skipHotspotSAAttach=true -Xmx2048m -DlogPath=$LOG_DIR/jni.log -Xlog:gc*:$LOG_DIR/be.gc.log.$CUR_DATE:time,uptime:filecount=10,filesize=50M -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED -Darrow.enable_null_check_for_get=false"
JAVA_HOME=/mnt/apps/jdk-17.0.19/
JEMALLOC_CONF="percpu_arena:percpu,background_thread:true,metadata_thp:auto,muzzy_decay_ms:5000,dirty_decay_ms:5000,oversize_threshold:0,prof:true,prof_active:false,lg_prof_interval:-1"
JEMALLOC_PROF_PRFIX="jemalloc_heap_profile_"
be_port = 9060
webserver_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
arrow_flight_sql_port = -1
enable_https = false
ssl_certificate_path = "$DORIS_HOME/conf/cert.pem"
ssl_private_key_path = "$DORIS_HOME/conf/key.pem"
priority_networks = 10.90.100.0/24
storage_root_path = /data/doris
sys_log_level = INFO
aws_log_level=2
AWS_EC2_METADATA_DISABLED=true
enable_single_replica_load = true
注意:需要修改的地方
LOG_DIR :doris-be的各类日志文件
JAVA_HOME: 配置JDK环境的路径
storage_root_path :数据文件的位置
priority_networks: 服务器通信内部网络地址断(集群使用)
创建目录修改权限
mkdir -p /data/logs/doris-fe
mkdir -p /data/logs/doris-be
mkdir -p /data/doris-meta
mkdir -p /data/doris
useradd -r -s /sbin/nologin -M doris
chown -R doris:doris /data/logs/doris-fe
chown -R doris:doris /data/logs/doris-be
chown -R doris:doris /data/doris-meta
chown -R doris:doris /data/doris
chown -R doris:doris /mnt/apps/jdk-17.0.19/
chown -R doris:doris /mnt/apps/apache-doris-3.0.6.1-bin-x64
chown -R doris:doris /mnt/apps/doris
添加systemd进行管理文件
Doris-fe
cat > /etc/systemd/system/doris-fe.service <<EOF
[Unit]
Description=Apache Doris FE Service
After=network.target
Wants=network.target
[Service]
Type=forking
User=doris
Group=doris
WorkingDirectory=/mnt/apps/doris/fe
ExecStart=/mnt/apps/doris/fe/bin/start_fe.sh --daemon
ExecStop=/mnt/apps/doris/fe/bin/stop_fe.sh
Restart=on-failure
RestartSec=30
LimitNOFILE=655350
[Install]
WantedBy=multi-user.target
EOF
Doris-be
cat > /etc/systemd/system/doris-be.service <<EOF
[Unit]
Description=Apache Doris BE Service
After=network.target doris-fe.service
Wants=network.target
[Service]
Type=forking
User=doris
Group=doris
WorkingDirectory=/mnt/apps/doris/be
ExecStart=/mnt/apps/doris/be/bin/start_be.sh --daemon
ExecStop=/mnt/apps/doris/be/bin/stop_be.sh
Restart=on-failure
RestartSec=30
LimitNOFILE=655350
[Install]
WantedBy=multi-user.target
EOF
重载服务
systemctl daemon-reload
启动服务添加节点
启动Doris-fe服务
systemctl start doris-fe
检查 FE 启动状态
通过 MySQL 客户端连接 Doris 集群,初始化用户为 root,默认密码为空。
mysql -uroot -P
<fe_query_port> -h<fe_ip_address>
链接到 Doris 集群后,可以通过 show frontends 命令查看 FE 的状态,通常要确认以下几项
- Alive 为
true表示节点存活; - Join 为
true表示节点加入到集群中,但不代表当前还在集群内(可能已失联); - IsMaster 为 true 表示当前节点为 Master 节点。
添加Doris-be节点
## connect a alive FE node
mysql -uroot -P
<fe_query_port> -h<fe_ip_address>
## registe BE node
ALTER SYSTEM ADD BACKEND "
<be_ip_address>:<be_heartbeat_service_port>"
启动Doris-be服务
systemctl start doris-be
检查集群
## connect a alive FE node
mysql -uroot -P
<fe_query_port> -h<fe_ip_address>
## check BE node status
show backends;
-- check fe status
show frontends \G
通常情况下需要注意以下几项状态:
- Alive 为 true 表示节点存活
- TabletNum 表示该节点上的分片数量,新加入的节点会进行数据均衡,TabletNum 逐渐趋于平均。
创建数据库
-- 由于Doris-be只有一个节点,因此需要显式指定使用一个副本创建数据库;或者建表的时候每个表单独指定一个副本;否则系统自动默认使用三副本
CREATE DATABASE `db01` PROPERTIES ( "replication_num" = "1" );
文章评论