Doris 概述

        Apache Doris由百度大数据部研发(之前叫百度 Palo,2018年贡献到 Apache 社区后,更名为 Doris),在百度内部,有超过200个产品线在使用,部署机器超过1000台,单一业务最大可达到上百 TB。

Apache Doris是一个现代化的MPP (Massively Parallel Processing,即大规模并行处理)分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。

Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等

Doris 使用场景

        数据源经过各种数据集成和加工处理后,通常会入库到实时数仓 Doris 和离线湖仓(Hive,Iceberg,Hudi 中),Apache Doris 被广泛应用在以下场景中

报表分析

        实时看板 (Dashboards)

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

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

即席查询(Ad-hoc Query)

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

统一数仓构建

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

数据湖联邦查询

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

Doris架构

Doris整体架构如图所示,非常简单,只有两类进程:

Frontend(FE)

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

主要有三个角色:

(1)Leader 和Follower:主要是用来达到元数据的高可用,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务。

(2)Observer:用来扩展查询节点,同时起到元数据备份的作用。如果在发现集群压力非常大的情况下,需要去扩展整个查询的能力,那么可以加 observer 的节点。observer 不参与任何的写入,只参与读取

Backend(BE)

主要负责数据存储、查询计划的执行。

数据的可靠性由BE保证,BE 会对整个数据存储多副本或者是三副本。副本数可根据需求动态调整。

MySQL Client

Doris借助MySQL协议,用户使用任意MySQL的ODBC/JDBC以及MySQL的客户端,都可以直接访问Doris。

Broker

Broker是Doris集群中一种可选进程,主要用于支持Doris读写远端存储上的文件和目录,如 HDFS、BOS和AFS等

Linux操作系统要求

软件需求

开发测试环境

生产环境

注意事项

FE的磁盘空间主要用于存储元数据,包括日志和image。通常从几百MB到几个GB不等。

BE的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量* 3(3副本)计算,然后再预留额外40%的空间用作后台compaction以及一些中间数据的存放。

一台机器上可以部署多个BE实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个BE实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)

测试环境也可以仅适用一个BE进行测试。实际生产环境,BE实例数量直接决定了整体查询延迟。

所有部署节点关闭Swap。

FE节点数据至少为1(1个Follower)。当部署1个Follower和1个Observer时,可以实现读高可用。当部署3个Follower时,可以实现读写高可用(HA)。

Follower的数量必须为奇数,Observer 数量随意。

根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署3个 Follower和1-3个Observer。如果是离线业务,建议部署1个Follower和1-3个Observer。

Broker是用于访问外部数据源(如HDFS)的进程。通常,在每台机器上部署一个 broker实例即可。​​​​​​​

​​​​​​​内部端口

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

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

​​​​​​​集群部署

​​​​​​​操作系统安装要求

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

sudo vim /etc/security/limits.conf

* soft nofile 65536

* hard nofile 65536

* soft nproc 65536

* hard nproc 65536

设置最大虚拟块的大小。

sudo vim /etc/sysctl.conf

vm.max_map_count=2000000

重启生效。

​​​​​​​下载安装包

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

Apache Doris - Download | Easily deploy Doris anywhere - Apache Doris

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

cat /proc/cpuinfo | grep avx2

如果能看到avx2 字样选择带 avx2 的包,否则选择不带 avx2。

arm64 架构 cpu(apple),选择 arm64 的安装包下载。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐