【大数据分析】Apache Doris高性能实时分析数据库:MPP架构下的多场景应用与优势分析以及部署应用

简介        

        Apache Doris 是一个基于 MPP 架构地高性能、实时地分析型数据库,以极速易用地特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下地查询结果,不仅可以支持高并发地点查询场景,也能支持高吞吐地复杂分析场景。基于此,Apache Doris 能够较好地满足报表分析、即时查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

特性
  • 性能优异:自带高效的列式存储引擎,减少数据扫描量的同时还实现了超高的数据压缩比。同时Doris还提供了丰富的索引结构来加速数据读取与过滤,利用分区分桶裁剪功能,Doris可以支持在线服务业务的超高并发,单节点最高可支持上千QPS。更进一步,Apache Doris 结合了向量化执行引擎来充分发挥现代化CPU并行计算能力,辅以智能物化视图技术实现预聚合加速,并可以通过查询优化器同时进行基于规划和基于代价的查询优化。通过上述多种方式,实现了极致的查询性能。

  • 简单易用:支持标准ANSI SQL语法,包括单表聚合、排序、过滤和多表Join、子查询等,还支持窗口函数、Grouping Set等复杂SQL语法,同时用户可以通过UDF和UDAF等自定义函数来拓展系统功能。除此以外,Apache Doris 还实现了MySQL协议兼容,用户可以通过各类客户端工具来访问Doris,并支持与BI工具的无缝对接。

  • 架构精简:系统只有Frontend(FE)和Backend(BE)两个模块,其中FE节点负责用户请求的接入、查询计划的解析、元数据存储及集群管理等工作,BE节点负责数据存储和查询计划的执行,自身就是一个完备的分布式数据库管理系统,用户无需安装任何第三方管控组件即可运行起Apache Doris 集群,并且部署和升级过程都非常简易。同时,任一模块都可以支持横向拓展,集群最高可以拓展到数百个节点,支持存储超过10PB的超大规模数据。

  • 稳定可靠:支持数据多副本存储,集群具备自愈功能,自身的分布式管理框架可以自动管理数据副本的分布、修复和均衡,副本损坏时系统可以自动感知并进行修复。节点扩容时,仅需一条SQL命令即可完成,数据分片会自动在节点间均衡,无需人工干预或操作。无论是扩容、缩容、单节点故障还是在升级过程中,系统都无需停止运行,可正常提供稳定可靠的在线服务。

  • 生态丰富:提供丰富的数据同步方式,支持快速加载来自本地、Hadoop、Flink、Spark、Kafka、SeaTunnel等系统中的数据,也可以直接访问MySQL、PostgreSQL、Oracle、S3、Hive、Iceberg、Elasticsearch等系统中的数据而无需数据复制。同时存储在Doris中的数据也可以被 Spark、Flink 读取,并且可以输出给上游数据应用进行展示分析。

适用场景
  • 报表分析

    • 实时看板 (Dashboards)

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

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

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

  • 统一数仓构建 :一个平台满足统一的数据仓库建设需求,简化繁琐的大数据软件栈。

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

安装部署

doris下载地址:https://github.com/apache/doris/releases

最新版本需要jdk17+,如下配置jdk17步骤

#配置jdk17
export JAVA_HOME=/home/java/jdk
export CLASSPATH=.:$JAVA_HOME/lib/
export PATH=.:$JAVA_HOME/bin:$PATH

#编辑环境变量
vim /etc/profile
#刷新环境变量
source /etc/profile

执行命令查看是否配置成功

下载doris文件且上传到服务器后,在解压后的目录配置be和fe节点如下

配置be的jdk

 配置fe的jdk

be信息配置

启动be可能会报三个错,按照提示处理即可

vm.max_map_count 是Linux内核中的一个参数,它用于控制一个进程可以拥有的最大虚拟内存区域(VMA)数量。这个参数对于那些需要大量内存映射文件的应用程序来说尤其重要,因为它限制了进程可以打开的文件数量。在Linux系统中,默认的vm.max_map_count值通常较小,例如65530,但在某些情况下,可能需要增加这个值以支持更多的内存映射区域。

Doris 由于依赖大量文件来管理表数据,所以需要将系统对程序打开文件数的限制调高。

关闭交换空间

交换空间是现代 Linux 系统中的第二种内存类型。交换空间的主要功能是当全部的 RAM 被占用并且需要更多内存时,用磁盘空间代替 RAM 内存。交换空间对虚拟化技术资源损耗较大,成本损耗较高,一般虚拟化技术是不允许开启交换空间的,如果不关闭交换空间,虚拟化相关程序会报错或相应的提示信息(如Kubernates)。

临时关闭命令
Swapoff -a
永久关闭命令
vi /etc/fstab,
注释掉该行

ulimit -n 60000

在CentOS系统中,ulimit命令用于显示和修改当前用户进程资源限制,通过修改ulimit配置,我们可以调整最大进程数和最大文件打开数等参数,以满足不同场景下的系统需求

检查是否启动成功

访问地址: http://IP地址:8030/  访问账号root  密码是空

#添加be节点信息语句
ALTER SYSTEM ADD BACKEND "192.168.9.249:9050";

数据库链接验证

另外附上查看错误日志方法:

执行语句错误日记目录

/home/doris/doris/be/storage/error_log/__shard_3

验证环境没什么资源占用,情况如下

doris官方文档地址:跳转

        上文对doris的解释均来自百度百科,经过我对10万+级别的数据量验证,mysql需要百兆+空间,doris仅需5M,es也需要百兆左右,mysql查询秒级,doris是亚秒级,据官方资料说doris是处理PB级数据,如此我觉得有了doris后是否可以摒弃es了,原因是doris官方说完全兼容mysql,学习成本较低,es需要学习相关语法,空间占用也能节省相当的多的资源成本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值