标签(空格分隔): Doris系列


一:Doris 的介绍

1.1 Doris 的概述

Doris由百度大数据部研发,之前叫百度Palo,于2017年开源,2018年贡献到 Apache 社区后,更名为Doris。

Apache Doris是一个现代化的基于MPP(大规模并行处理)技术的分析型数据库产品。简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似)。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。
Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!

1.2 Doris的特点

1.性能卓越
TPC-H、TPC-DS性能领先,性价比高,高并发查询,100台集群可达10w QPS,流式导入单节点50MB/s,小批量导入毫秒延迟
2. 简单易用
高度兼容MySql协议;支持在线表结构变更高度集成,不依赖于外部存储系统
3.扩展性强
架构优雅,单集群可以水平扩展至200台以上
4.高可用性
多副本,元数据高可用

image.png

二: OLTP、OLAP 的介绍

2.1 概念介绍:

概念
    联机事务处理 OLTP(On-Line Transaction Processing)。
操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing),主要目标是做数据处理,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。
用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。
传统的关系型数据库系统(RDBMS)作为数据管理的主要手段,主要用于操作型处理。

 常用的数据库有:Oracle ,MySQL , sqlserver,postresql 

    联机分析处理 OLAP(On-Line Analytical Processing)。
      分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing),主要目标是做数据分析。
一般针对某些主题的历史数据进行复杂的多维分析,支持管理决策。
数据仓库是OLAP系统的一个典型示例,主要用于数据分析。

image.png

2.2 OLAP 引擎介绍

OLAP按存储器的数据存储格式分为MOLAP(Multi-dimensional OLAP) 、ROLAP(Relational OLAP)和 HOLAP(Hybrid OLAP)。

MOLAP,基于多维数组的存储模型,也是OLAP最初的形态,特点是对数据进行预计算,以空间换效率,明细和聚合数据都保存在cube中。但生成cube需要大量时间和空间。MOLAP可选Kylin、Druid等开源产品。

ROLAP,完全基于关系模型进行存储数据,不需要预计算,按需即时查询。明细和汇总数据都保存在关系型数据库事实表中。

HOLAP,混合模型,细节数据以ROLAP存放,聚合数据以MOLAP存放。这种方式相对灵活,且更加高效。

doris是一个ROLAP引擎, 可以满足:灵活多维分析、明细+聚合、主键更新

image.png

image.png

2.3 Doris 的使用场景

image.png

Doris的具体使用场景,主要是它的接收数据源,以及它的一个整体的模块,还有最后它的一个可视化的呈现。后面会有一张更详细的图去介绍它整个的来源,以及最后可以输出的数据流向。
一般情况下,用户的原始数据,比如日志或者在事务型数据库中的数据,经过流式系统或离线处理后,导入到Doris中以供上层的报表工具或者数据分析师查询使用。

三:Doris 的原理与架构

3.1 doris 架构:

Doris主要整合了Google Mesa(数据模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存储格式,编码和压缩) 的技术。

Mesa可以满足我们许多存储需求的需求,但是Mesa本身不提供SQL查询引擎。

Impala是一个非常好的MPP SQL查询引擎,但是缺少完美的分布式存储引擎。

自研列式存储:存储层对存储数据的管理通过storage_root_path路径进行配置,路径可以是多个。存储目录下一层按照分桶进行组织,分桶目录下存放具体的tablet,按照tablet_id命名子目录。

image.png
image.png

3.2 doris 名词说明:

image.png

Doris的架构很简洁,使用MySQL协议,用户可以使用任何MySQL ODBC/JDBC和MySQL客户端直接访问Doris,只设FE(Frontend)、BE(Backend)两种角色、两个进程,不依赖于外部组件,方便部署和运维。
FE:Frontend,即 Doris 的前端节点。主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作
BE:Backend,即 Doris 的后端节点。主要负责数据存储与管理、查询计划执行等工作。
FE,BE都可线性扩展
FE主要有两个角色,一个是follower,另一个是observer。多个follower组成选举组,会选出一个master,master是follower的一个特例,Master跟follower,主要是用来达到元数据的高可用,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务。
Observer节点仅从 leader 节点进行元数据同步,不参与选举。可以横向扩展以提供元数据的读服务的扩展性。
数据的可靠性由BE保证,BE会对整个数据存储多副本或者是三副本。副本数可根据需求动态调整。 

四:doris 编译安装

4.1 环境介绍

系统:centos7.9x64

主机名:
cat /etc/hosts 
-----
172.16.10.11    flyfishsrvs01 
172.16.10.12    flyfishsrvs02
172.16.10.13    flyfishsrvs03
172.16.10.14    flyfishsrvs04
172.16.10.15    flyfishsrvs05
172.16.10.16    flyfishsrvs06
172.16.10.17    flyfishsrvs07
------

系统安装好docker:
docker 安装省略

docker images 

下载好doris 的源码编译包:
wget https://dlcdn.apache.org/incubator/doris/0.15.0-incubating/apache-doris-0.15.0-incubating-src.tar.gz

image.png

4.2 doris 编译

编译用的机器最好采用阿里云云主机:

拉取Doris官方提供的Docker镜像,目前可用版本有:build-env、build-env-1.1、build-env-1.2、build-env-1.4.1、build-env-1.4.2

docker pull apache/incubator-doris:build-env-1.4.2

image.png

image.png

docker run -it -v /export/softwares/.m2:/root/.m2 -v /export/software/incubator-doris-DORIS-0.15.0-release/:/root/incubator-doris-DORIS-0.15.0-release/ apache/incubator-doris:build-env-1.4.2

 apache/incubator-doris:build-env-1.4.2

image.png

把 apache-doris-0.15.0-incubating-src.tar.gz 复制到容器里面 解压
cd  apache-doris-0.15.0-incubating-src
sh build.sh

image.png

将 dorios 所需要文件copy 出来

docker ps -a |grep dorios

mkdir doris-software

docker cp 1b47f1efea87:/root/apache-doris-0.15.0-incubating-src/output doris-software/

cd doris-software/output 

ls -ld * 

将 doris-software 打包 留作部署

tar -zcvf doris-software-0.15.0.tar.gz  output

image.png
image.png

image.png