暂无图片
暂无图片
暂无图片
暂无图片
1
暂无图片

Doris1.2.1版本集群部署

叶同学专栏 2023-03-23
563

Doris 介绍

Apache Doris 是一个基于MPP架构的 高性能、实时的分析型数据库 。最早是诞生于百度广告报表业务的 Palo 项目,2017 年正式对外开源 , 2022 年 6 月,Apache Doris成为 Apache 顶级项目(Top-Level Project,TLP) 。

其使用场景主要有以下:

  • 报表分析

    • 实时看板 (Dashboards)

    • 面向企业内部分析师和管理者的报表

    • 面向用户或者客户的高并发报表分析(Customer Facing Analytics)。

  • 即席查询(Ad-hoc Query):面向分析师的自助分析,查询模式不固定,要求较高的吞吐。

  • 统一数仓构建 :一个平台满足统一的数据仓库建设需求,简化繁琐的大数据软件栈。海底捞基于 Doris 构建的统一数仓,替换了原来由 Spark、Hive、Kudu、Hbase、Phoenix 组成的旧架构,架构大大简化。

  • 数据湖联邦查询:通过外表的方式联邦分析位于 Hive、Iceberg、Hudi 中的数据,在避免数据拷贝的前提下,查询性能大幅提升。

Doris整体架构只有两类进程

  • Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。

  • Backend(BE),主要负责数据存储、查询计划的执行。

主要特性如下:

  • 列式存储

  • 采用 MySQL 协议,高度兼容 MySQL 语法

  • 支持多种索引和存储模型

  • 支持强一致的物化视图,物化视图的更新和选择都在系统内自动进行

  • 支持多个大表的分布式 Shuffle Join

  • 向量化的查询引擎 , 在宽表聚合场景下性能是非向量化引擎的 5-10 倍

安装过程

参考官方文档:https://doris.apache.org/zh-CN/docs/dev/install/install-deploy

安装规划

主机名设备IP服务组件安装目录
host01192.168.5.51FE/fe/dorisdata/
host02192.168.5.52FE/fe/dorisdata/
host03192.168.5.53FE/fe/dorisdata/
host04192.168.5.54BE/data/dorisdata/
host05192.168.5.55BE/data/dorisdata/
host06192.168.5.56BE/data/dorisdata/
host07192.168.5.57BE/data/dorisdata/

创建doris用户

useradd doris
echo doris@2023| passwd doris --stdin
复制

java环境

已安装

[root@host02 ~]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
复制

安装FE

[root@host02 opt/doris]# tar -xvf apache-doris-fe-1.2.1-bin-x86_64.tar.xz
[root@host02 opt/doris]# mv apache-doris-fe-1.2.1-bin-x86_64 usr/local/doris
[root@host02 opt/doris]# cd usr/local/doris
复制

目录赋权

[root@host02 ~]# chown -R doris:doris usr/local/doris
[root@host02 ~]# mkdir fe/dorisdata/
[root@host02 ~]# chown -R doris:doris fe/dorisdata
复制

添加doris用户环境变量

[root@host02 usr/local/doris/fe/conf]# su - doris
cat >> ~/.bashrc <<EOF
FE_HOME=/usr/local/doris/apache-doris-fe-1.2.1-bin-x86_64
export PATH=\$FE_HOME/bin:\$PATH
EOF
[doris@host02 ~]$ source .bashrc
复制

fe配置文件

修改元数据存储路径meta_dir

[doris@host02 ~]$ cat $FE_HOME/conf/fe.conf |grep -v ^#|grep -v ^$
LOG_DIR = ${DORIS_HOME}/log
DATE = `date +%Y%m%d-%H%M%S`
JAVA_OPTS="-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.$DATE"
JAVA_OPTS_FOR_JDK_9="-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.$DATE:time"
sys_log_level = INFO
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true
#add
meta_dir = fe/dorisdata/
复制

启动fe

start_fe.sh --daemon
复制

查询fe运行状态

[root@host02 ~]# curl http://127.0.0.1:8030/api/bootstrap
{"msg":"success","code":0,"data":{"replayedJournalId":0,"queryPort":0,"rpcPort":0,"version":""},"count":0}
复制

使用mysql客户端连接fe

[root@host02 ~]#  mysql -uroot -P9030 -h127.0.0.1
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 5.7.37 Doris version doris-1.2.1-rc01-Unknown

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

10:16:12 (root@127.0.0.1) [(none)]>
复制

FE扩容

同样方式安装fe,但不执行启动命令,因为第一次启动命令会不一样

第一次以加入已有的fe方式启动

[doris@host03 ~]$ start_fe.sh --helper 192.168.5.52:9010 --daemon
复制

连接已有fe,执行添加fe命令

mysql -uroot -P9030 -h192.168.5.52 -proot
MySQL [(none)]> ALTER SYSTEM ADD FOLLOWER "192.168.5.53:9010";
复制

日志查看,扩容失败,因为host03有两个ip,官方说这种会有问题扩容不了,如果扩容fe服务器上只有一个ip,经过实践是可以成功扩容的。

[root@host03 log]# tail -100f usr/local/doris/apache-doris-fe-1.2.1-bin-x86_64/log/fe.log
2023-03-23 11:08:42,980 WARN (main|1) [Env.getFeNodeTypeAndNameFromHelpers():1140] frontend 192.168.5.50:9010 is not added to cluster yet. role UNKNOWN
复制

安装BE

[root@host04 doris]# tar -xvf apache-doris-be-1.2.1-bin-x86_64.tar.xz
[root@host04 doris]# tar -xvf apache-doris-dependencies-1.2.1-bin-x86_64.tar.xz
[root@host04 doris]# mv apache-doris-dependencies-1.2.1-bin-x86_64/* apache-doris-be-1.2.1-bin-x86_64/lib/
[root@host04 doris]# mv apache-doris-be-1.2.1-bin-x86_64 usr/local/doris
复制

修改目录权限

 chown -R doris:doris usr/local/doris
mkdir data/dorisdata/storage
chown -R doris:doris data/dorisdata
复制

添加doris用户环境变量

[root@host04 ~]#  su - doris
cat >> ~/.bashrc <<EOF
BE_HOME=/usr/local/doris/apache-doris-be-1.2.1-bin-x86_64
export PATH=\$BE_HOME/bin:\$PATH
EOF
[doris@host02 ~]$ source .bashrc
复制

be配置文件

指定数据存储目录storage_root_path,并限定5000GB大小

[doris@host04 ~]$ cat $BE_HOME/conf/be.conf |grep -v ^#|grep -v ^$
PPROF_TMPDIR="$DORIS_HOME/log/"
sys_log_level = INFO
be_port = 9060
webserver_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
#add
storage_root_path = data/dorisdata/storage,5000
复制

启动BE

需要调整文件句柄数
sysctl -w vm.max_map_count=2000000
[doris@host04 ~]$ start_be.sh --daemon
复制

host05 -  host07服务器同以上操作

添加BE到集群(BE扩容)

连接FE,使用命令添加

[doris@host02 fe/dorisdata]$  mysql -uroot -P9030 -h192.168.5.52
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.37 Doris version doris-1.2.1-rc01-Unknown

mysql> ALTER SYSTEM ADD BACKEND "192.168.5.54:9050";
Query OK, 0 rows affected (0.05 sec)


mysql> show backends \G
*************************** 1. row ***************************
            BackendId: 10003
              Cluster: default_cluster
                    IP: 192.168.5.54
        HeartbeatPort: 9050
                BePort: 9060
              HttpPort: 8040
              BrpcPort: 8060
        LastStartTime: 2023-02-01 10:55:22
        LastHeartbeat: 2023-02-01 10:57:33
                Alive: true
  SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 0
      DataUsedCapacity: 0.000
        AvailCapacity: 17.461 TB
        TotalCapacity: 19.637 TB
              UsedPct: 11.08 %
        MaxDiskUsedPct: 11.08 %
    RemoteUsedCapacity: 0.000
                  Tag: {"location" : "default"}
                ErrMsg:
              Version: doris-1.2.1-rc01-Unknown
                Status: {"lastSuccessReportTabletsTime":"2023-02-01 10:57:06","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
              NodeRole: mix
1 row in set (0.00 sec)
复制

host05 -  host07服务器同以上操作

至此doris安装完成,其中BE和FE需要的端口列表如下:

实例名称端口名称默认端口通讯方向说明
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 之间通信用的端口
Brokerbroker_ipc_port8000FE --> Broker, BE --> BrokerBroker 上的 thrift server,用于接收请求

注:

  1. 当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。

  2. 部署前请确保各个端口在应有方向上的访问权限。



文章转载自叶同学专栏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

伟鹏
暂无图片
1年前
评论
暂无图片 1
学习一下
1年前
暂无图片 1
评论