CentOS7下安装Doris

Doris简介

Apache Doris 是一款基于 MPP 架构的高性能、实时的分析型数据库,以高效、简单、统一的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。

Doris 的使用场景

  • 报表分析

  • 实时看板(Dashboards)

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

  • 面向用户或者客户的高并发报表分析(Customer Facing Analytics)。比如面向网站主的站点分析、面向广告主的广告报表,并发通常要求成千上万的 QPS,查询延时要求毫秒级响应。著名的电商公司京东在广告报表中使用 Apache Doris,每天写入 100 亿行数据,查询并发 QPS 上万,99 分位的查询延时 150ms。

  • 即席查询(Ad-hoc Query):面向分析师的自助分析,查询模式不固定,要求较高的吞吐。小米公司基于 Doris 构建了增长分析平台(Growing Analytics,GA),利用用户行为数据对业务进行增长分析,平均查询延时 10s,95 分位的查询延时 30s 以内,每天的 SQL 查询量为数万条。

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

  • 日志检索分析:在 Apache Doris 2.0 版本中,支持了倒排索引和全文检索,能够很好的满足日志检索分析的场景,并且依赖其高效的查询引擎和存储引擎,相比传统的日志检索分析的方案可以有 10 倍性价比的优势。

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

Doris 的整体架构

  • Frontend(FE):主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
  • Backend(BE):主要负责数据存储、查询计划的执行。

环境说明

这里搭建测试环境,只安装1个FrontEnd和1个BackEnd即可。

1个FrontEnd意味着没有高可用功能。

1个BackEnd意味着数据只有1份,没有更多的副本。

这里在node2机器上操作。

安装

设置系统

(1)设置系统最大打开文件句柄数(注意这里的*不要去掉)

[hadoop@node2 ~]$ sudo vim /etc/security/limits.conf

末尾添加

* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

(2)设置最大虚拟块的大小

[hadoop@node2 ~]$ sudo vim /etc/sysctl.conf

末尾添加

vm.max_map_count=2000000

重启生效

[hadoop@node2 ~]$ sudo reboot

下载安装包

根据自己的需要,下载合适的安装包,下载地址:

下载doris

arm64 架构 cpu(apple),选择 arm64 的安装包下载 (苹果电脑)

x86_64架构 cpu(intel,amd),执行命令:

cat /proc/cpuinfo | grep avx2

如果能看到avx2 字样选择带 avx2 的包,否则选择不带 avx2 (一般比较新的电脑都支持avx2)

下载后,上传x64_avx2安装包到Linux

[hadoop@node2 installfile]$ ls
... x64_avx2
[hadoop@node2 installfile]$ cd x64_avx2/
[hadoop@node2 x64_avx2]$ ls
apache-doris-be-1.2.4.1-bin-x86_64.tar.xz            apache-doris-fe-1.2.4.1-bin-x86_64.tar.xz
apache-doris-dependencies-1.2.4.1-bin-x86_64.tar.xz
​

解压

解压(解压即安装)

[hadoop@node2 x64_avx2]$ mkdir ~/soft/doris
​
安装fe
[hadoop@node2 x64_avx2]$ tar -xvf apache-doris-fe-1.2.4.1-bin-x86_64.tar.xz -C ~/soft/doris/
[hadoop@node2 x64_avx2]$ mv ~/soft/doris/apache-doris-fe-1.2.4.1-bin-x86_64 ~/soft/doris/fe
​
安装be
[hadoop@node2 x64_avx2]$ tar -xvf apache-doris-be-1.2.4.1-bin-x86_64.tar.xz -C ~/soft/doris/
[hadoop@node2 x64_avx2]$ mv ~/soft/doris/apache-doris-be-1.2.4.1-bin-x86_64/ ~/soft/doris/be
​
安装其他依赖(java udf函数)
[hadoop@node2 x64_avx2]$ tar -xvf apache-doris-dependencies-1.2.4.1-bin-x86_64.tar.xz -C ~/soft/doris/
[hadoop@node2 x64_avx2]$ mv ~/soft/doris/apache-doris-dependencies-1.2.4.1-bin-x86_64/ ~/soft/doris/dependencies
[hadoop@node2 x64_avx2]$ cd ~/soft/doris/
[hadoop@node2 doris]$ ls
be  dependencies  fe
[hadoop@node2 doris]$ cp dependencies/java-udf-jar-with-dependencies.jar be/lib/
​

注意:解压选项不能加z,否则报错

配置FE

[hadoop@node2 doris]$ vim fe/conf/fe.conf

修改内容如下:

http_port = 7030
# 193是虚拟机的网段,注意根据实际情况修改
priority_networks = 192.168.193.0/24

启动FE

[hadoop@node2 doris]$ ./fe/bin/start_fe.sh --daemon
​

登录 FE Web页面

node2:7030

 

用户名:root

密码:无

登录后,看到如下界面

配置BE

[hadoop@node2 doris]$ vim be/conf/be.conf

配置如下内容

webserver_port = 7040
# 如果是多个硬盘可以配置多个存储目录,存储目录要提前创建出来,其中,第二个存储目录特别指定为SSD,存储容量限制是10GB,这里暂时不配做,就用默认的存储目录
# storage_root_path = /home/hadoop/soft/doris/doris-storage1;/home/hadoop/soft/doris/doris-storage2.SSD,10
# 193是虚拟机的网段,注意根据实际情况修改
priority_networks = 192.168.193.0/24
# 添加如下数据
mem_limit=40%

如果计划多台机器安装BE,下一步需要分发BE,这里只安装1台,所以不用分发BE。

添加BE

BE节点需要先在FE中添加,才可加入集群。可以使用mysql-client连接到FE。

如果还没有安装MySQL需要先安装MySQL。可参考:脚本一键安装MySQL8

使用 MySQL客户端连接到 FE

[hadoop@node2 doris]$ mysql -hnode2 -P9030 -uroot

注意:

  • P是大写

  • FE 默认没有密码

  • 设置密码:SET PASSWORD FOR 'root' = PASSWORD('aaaaaa');

[hadoop@node2 doris]$ mysql -hnode2 -P9030 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 5.7.99 Doris version doris-1.2.4-1-Unknown
​
Copyright (c) 2000, 2022, 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.
​
mysql> 
​

输出日志可以看到Doris的版本号为5.7.99

添加BE

ALTER SYSTEM ADD BACKEND "node2:9050";

执行过程如下:

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

如果还有其他BE,修改ALTER SYSTEM ADD BACKEND 命令中的主机,继续命令添加BE

查看BE状态

SHOW PROC '/backends'\G

执行过程

mysql> SHOW PROC '/backends'\G
*************************** 1. row ***************************
              BackendId: 10003
                Cluster: default_cluster
                     IP: 192.168.193.142
               HostName: node2
          HeartbeatPort: 9050
                 BePort: -1
               HttpPort: -1
               BrpcPort: -1
          LastStartTime: NULL
          LastHeartbeat: NULL
                  Alive: false
   SystemDecommissioned: false
  ClusterDecommissioned: false
              TabletNum: 0
       DataUsedCapacity: 0.000 
          AvailCapacity: 1.000 B
          TotalCapacity: 0.000 
                UsedPct: 0.00 %
         MaxDiskUsedPct: 0.00 %
     RemoteUsedCapacity: 0.000 
                    Tag: {"location" : "default"}
                 ErrMsg: java.net.ConnectException: Connection refused (Connection refused)
                Version: 
                 Status: {"lastSuccessReportTabletsTime":"N/A","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 28
               NodeRole: 
1 row in set (0.02 sec)
​
mysql> 
​

看到HostName: node2,说明node2作为了BE,但是Alive: false,说明还没有存活,需要启动BE

看到的不是普通的mysql客户端,而是Doriss FE的客户端,和浏览器看到的如下界面功能一样,都能执行SQL

启动BE

[hadoop@node2 doris]$ be/bin/start_be.sh --daemon

查看进程

[hadoop@node2 doris]$ jps
4211 
5115 Jps
2559 PaloFe

启动BE后,jps只能看到进程号(例如:4211),因为BE是用C++写的,不是Java进程,所以没有看到进程名称。

查询

mysql> SHOW PROC '/backends'\G
*************************** 1. row ***************************
              BackendId: 10003
                Cluster: default_cluster
                     IP: 192.168.193.142
               HostName: node2
          HeartbeatPort: 9050
                 BePort: 9060
               HttpPort: 7040
               BrpcPort: 8060
          LastStartTime: 2024-07-07 00:04:41
          LastHeartbeat: 2024-07-07 00:10:30
                  Alive: true
   SystemDecommissioned: false
  ClusterDecommissioned: false
              TabletNum: 0
       DataUsedCapacity: 0.000 
          AvailCapacity: 8.310 GB
          TotalCapacity: 26.979 GB
                UsedPct: 69.20 %
         MaxDiskUsedPct: 69.20 %
     RemoteUsedCapacity: 0.000 
                    Tag: {"location" : "default"}
                 ErrMsg: 
                Version: doris-1.2.4-1-Unknown
                 Status: {"lastSuccessReportTabletsTime":"2024-07-07 00:10:05","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
               NodeRole: mix
1 row in set (0.01 sec)
​
mysql> 
​

看看到BE为存活状态Alive: true

Web UI查看BE

关闭BE

[hadoop@node2 doris]$ be/bin/stop_be.sh 
waiting be to stop, pid: 4211
stop doris_be, and remove pid file. 

关闭FE

[hadoop@node2 doris]$ fe/bin/stop_fe.sh 
waiting fe to stop, pid: 2559
stop java, and remove pid file. 

查看进程

[hadoop@node2 doris]$ jps
5247 Jps

Doris启停脚本

[hadoop@node2 doris]$ vim ~/bin/dor.sh

脚本内容如下:

#!/bin/bash
case $1 in
    "start")
        for host in node2 ; do
            echo "========== 在 $host 上启动 fe  ========="
            ssh $host "/home/hadoop/soft/doris/fe/bin/start_fe.sh --daemon"
        done
        for host in node2 ; do
            echo "========== 在 $host 上启动 be  ========="
            ssh $host "/home/hadoop/soft/doris/be/bin/start_be.sh --daemon"
        done

       ;;
    "stop")
    		for host in node2 ; do
                echo "========== 在 $host 上停止 be  ========="
                ssh $host "/home/hadoop/soft/doris/be/bin/stop_be.sh "
            done
            
            for host in node2 ; do
                echo "========== 在 $host 上停止 fe  ========="
                ssh $host "/home/hadoop/soft/doris/fe/bin/stop_fe.sh "
            done
            
           ;;

    *)
        echo "参数错误"
        echo "  start   启动doris集群"
        echo "  stop    停止stop集群"

    ;;
esac

添加执行权限

[hadoop@node2 doris]$ chmod u+x ~/bin/dor.sh

脚本启动doris

[hadoop@node2 doris]$ dor.sh start
========== 在 node2 上启动 fe  =========
========== 在 node2 上启动 be  =========
​

[hadoop@node2 doris]$ jps
3200 Jps
2300 PaloFe
2797 

​

脚本关闭doris

[hadoop@node2 doris]$ dor.sh stop
========== 在 node2 上停止 be  =========
waiting be to stop, pid: 2797
stop doris_be, and remove pid file. 
========== 在 node2 上停止 fe  =========
waiting fe to stop, pid: 2300
stop java, and remove pid file. 
[hadoop@node2 doris]$ jps
4006 Jps
​

注意:

关闭Doris集群的顺序建议是先关闭所有be节点,‌再关闭observer fe节点,‌最后是Leader fe节点。‌

如果先关闭fe,再关闭be,会出现be关闭不了,同时mysql服务会被关掉,进不了mysql客户端,提示如下错误

[hadoop@node2 doris]$ mysql -uroot -p000000
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
​

至此,Doris的测试环境搭建完成!深入了解Doris,可以查看官网文档

完成!enjoy it!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值