数据仓库选型建议

news2024/10/7 12:26:47

1 数仓分层

1.1 数仓分层的意义

  • **数据复用,减少重复开发:**规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。数据的逐层加工原则,下层包含了上层数据加工所需要的全量数据,这样的加工方式避免了每个数据开发人员都重新从源系统抽取数据进行加工。通过汇总层的引人,避免了下游用户逻辑的重复计算, 节省了用户的开发时间和精力,同时也节省了计算和存储。极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低存储和计算成本。
  • **数据血缘追踪:**简单来讲可以这样理解,我们最终给业务呈现的是一张直接使用的业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
  • **把复杂问题简单化。**讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

1.2 数仓分层规范

数仓从下往上一般分ODS->DWD->DWS-ADS 4层。

2 主流数仓架构

目前主流数据仓库建设主要分两种,基于Lakehouse(湖仓一体)的流批一体架构和基于MPP数据库轻量级数据仓库

一个企业数仓的整体逻辑如上图所示,数仓在构建的时候通常需要 ETL 处理和分层设计,基于业务系统采集的结构化和非结构化数据进行各种 ETL 处理成为 DWD 层,再基于 DWD 层设计上层的数据模型层,形成 DM,中间会有 DWB/DWS 作为部分中间过程数据。

从技术选型来说,从数据源的 ETL 到数据模型的构建通常需要长时任务,也就是整个任务的运行时间通常是小时及以上级别。而 DM 层主要是支持业务的需求,对实效性要求比较高,通常运行在 DM 层上的任务时间在分钟作为单位。

基于如上的分层设计的架构图可以发现,虽然目前有非常多的组件,像 Presto,Doris,ClickHouse,Hive 等等,但是这些组件各自工作在不同的场景下,像数仓构建交互式分析就是两个典型的场景。

交互式分析强调的是时效性,一个查询可以快速出结果,像 Presto,Doris,ClickHouse 虽然也可以处理海量数据,甚至达到 PB 及以上,但是主要还是是用在交互式分析上,也就是基于数据仓库的 DM 层,给用户提供基于业务的交互式分析查询,方便用户快速进行探索。由于这类引擎更聚焦在交互式分析上,因此对于长时任务的支持度并不友好,为了达到快速获取计算结果,这类引擎重度依赖内存资源,需要给这类服务配置很高的硬件资源,这类组件通常有着如下约束:

  • 没有任务级的重试,失败了只能重跑 Query,代价较高。
  • 一般全内存计算,无 shuffle 或 shuffle 不落盘,无法执行海量数据。
  • 架构为了查询速度快,执行前已经调度好了 task 执行的节点,节点故障无法重新调度。

一旦发生任务异常,例如网络抖动引起的任务失败,机器宕机引起的节点丢失,再次重试所消耗的时间几乎等于全新重新提交一个任务,在分布式任务的背景下,任务运行的时间越长,出现错误的概率越高,对于此类组件的使用业界最佳实践的建议也是不超过 30 分钟左右的查询使用这类引擎是比较合适的。

而在离线数仓场景下,几乎所有任务都是长时任务,也就是任务运行时常在小时及以上,这时就要求执行 ETL 和构建数仓模型的组件服务需要具有较高的容错性和稳定性,当任务发生错误的时候可以以低成本的方式快速恢复,尽可能避免因为部分节点状态异常导致整个任务完全失败。

可以发现在这样的诉求下类似于 Presto,Doris,ClickHouse 就很难满足这样的要求,而像 Hive,Spark 这类计算引擎依托于 Yarn 做资源管理,对于分布式任务的重试,调度,切换有着非常可靠的保证。Hive,Spark 等组件自身基于可重算的数据落盘机制,确保某个节点出现故障或者部分任务失败后可以快速进行恢复。数据保存于 HDFS 等分布式存储系统上,自身不管理数据,具有极高的稳定性和容错处理机制。

反过来,因为 Hive,Spark 更善于处理这类批处理的长时任务,因此这类组件不擅长与上层的交互式分析,对于这种对于时效性要求更高的场景,都不能很好的满足。所以在考虑构建数仓的时候,通常会选择 Hive,Spark 等组件来负责,而在上层提供交互式分析查询的时候,通常会使用 Presto,Doris,ClickHouse 等组件。

归纳下来如下:

  • **Doris,ClickHouse,Presto:**更注重交互式分析,对单机资源配置要求很高,重度依赖内存,缺乏容错恢复,任务重试等机制,适合于 30 分钟以内的任务,通常工作在企业的 DM 层直接面向业务,处理业务需求。
  • **Spark,Hive:**更注重任务的稳定性,对网络,IO 要求比较高,有着完善的中间临时文件落盘,节点任务失败的重试恢复,更加合适小时及以上的长时任务运行,工作在企业的的 ETL 和数据模型构建层,负责清洗和加工上层业务所需要的数据,用来支撑整个企业的数仓构建。

2.1 基于湖仓一体的流批一体架构

目前市面上核心的数据湖开源产品大致有这么几个:Apache Hudi、Apache Iceberg和 Delta。国内使用jiao较多的为Apache Hudi。

此架构可以满足目前业务需求:

  • 批处理:采用Spark 进行批处理加工任务
  • 流处理:采用Flink + Hudi完成流处理任务
  • 交互式分析:离线数据采用导入到Doris或者Doris联邦查询的方式进行交互式分析;实时数据ADS层直接在Doris提供交互式分析能力。
  • 机器学习:机器学习应用采用分布式机器学习框架Spark ML进行模型训练。

优点:

  • 超大规模大数据平台主流架构,经过主流大厂验证,运行稳定可靠。

  • 实时场景支持数仓分层模型,可支持复杂逻辑大量数据的实时增量计算。

  • 实时数仓基于 Flink-SQL 实现了流批一体,批处理和流处理同一套代码,代码维护成本低;

  • 存储数据多元化,结构化数据、半结构化数据和非结构化数据都能存储。

缺点:

  • 组件过多,数据链路长,运维成本高,对开发人员要求高。
  • 组件过多,成本高。

2.2 基于MPP数据库的轻量级数据仓库

目前主流开源OLAP MPP数据库有 Doris, ClickHouse, Presto等,尤其以Doris势头强劲。

此架构可以满足目前业务需求:

  • 批处理:采用DorisSQL进行批处理任务加工。
  • 流处理:采用Flink + Doris完成ODS层的实时构建,后面采用DorisSQL定时调度完成增量数据的构建。
  • 交互式分析:使用Doris对外提供服务。
  • 机器学习:机器学习应用采用分布式机器学习框架Spark ML进行模型训练。但是每次模型训练都需要从Doris中读取数据,给Doris造成压力。

优点:

  • 组件单一,数据链路少,运维成本低,对开发人员要求低。
  • 组件单一,建设成本低。

缺点:

  • 实时场景不支持数仓分层模型
  • 批处理也在Doris加工,Doris是基于内存计算的,当大规模数据量进行加工时,容易遇到瓶颈。

2.3 湖仓一体和MPP对比

开源数仓架构数据量运维成本开发成本团队人数
湖仓一体(Hudi)0-100PB级10人以上
MPP(Doris)10PB以下10人以下

欢迎关注微信公众号:大数据AI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1460122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL Developer 小贴士:显示RAC配置

前提: 已建立2节点RAC已在SQL Developer中建立了2个连接,分别到RAC的两个节点 然后单击菜单View>DBA,分别连接RAC节点1和节点2,并组织成目录(不必须,但建议)。 在两处可以体现为RAC配置。第…

python基础 | 模块与异常

1、模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句 模块让你能够有逻辑地组织你的 Python 代码段,不可能把代码写在一起 把相关的代码分配到一个模块里能让你的代码更好用&#…

Backtrader 量化回测实践(1)—— 架构理解和MACD/KDJ混合指标

Backtrader 量化回测实践(1)—— 架构理解和MACD/KDJ混合指标 按Backtrader的架构组织,整理了一个代码,包括了Backtrader所有的功能点,原来总是使用SMA最简单的指标,现在稍微增加了复杂性,用MA…

读写锁学习笔记

1、数据结构 读锁是共享模式,写锁是独占模式,两个锁也公用一个AQS 两者共用一个state来表示,state前16位表示读锁,后16位表示写锁 读锁操作 通过向右位移16位,然后进行操作 写锁操作 通过和0000 0000 0000 0000 111…

CheatEngine基础进阶篇

我们在上一篇文章里说了CE的安装,汉化以及最基础最基础的值扫描和修改方法,当然很多游戏不能通过这些简单的手段就能达到修改值的效果,因此我们还需要掌握以下几个重要的知识点: 指针寻址 上一步阐述了如何使用"代码查找"功能对付变化位置的数据地址,但这种方法…

【医学大模型 逻辑准确】PLPF:将医生诊断逻辑集成到大模型

PLPF:将医生诊断逻辑集成到大模型 提出背景规则建模偏好数据构建人类偏好对齐 实验结果不同模型对比论文复现 提出背景 论文:https://arxiv.org/pdf/2401.05695.pdf 起始问题: 如何提高大型语言模型(LLMs)在医疗对话生成中的逻辑…

docker (八)-dockerfile制作镜像

一 dockerfile dockerfile通常包含以下几个常用命令: FROM ubuntu:18.04 WORKDIR /app COPY . . RUN make . CMD python app.py EXPOSE 80 FROM 打包使用的基础镜像WORKDIR 相当于cd命令,进入工作目录COPY 将宿主机的文件复制到容器内RUN 打包时执…

CV论文--2024.2.21

source:CV论文--2024.2.21 1、Binary Opacity Grids: Capturing Fine Geometric Detail for Mesh-Based View Synthesis 中文标题:二元不透明度网格:捕获精细的几何细节以进行基于网格的视图合成 简介:尽管基于表面的视图合成算法由于其低计…

uni-app常用组件 App开发 小程序开发 这篇就够了

目录 一、uni-app官网网址 二、uni-app常用组件 1.视图容器 1.1 view 1.2 scroll-view 1.3 swiper 1.4 movable-area 1.5 movable-view 2.基础内容 2.1 icon 2.2 text 2.3 rich-text 3.表单组件 3.1 button 3.2 checkbox-group 3.3 form 3.4 input 3.5 label…

[经验] 什么是鄱阳湖旅游最主要的景点 #知识分享#知识分享

什么是鄱阳湖旅游最主要的景点 鄱阳湖是中国最大的淡水湖,位于江西省北部和湖南省南部。鄱阳湖旅游资源丰富,景色秀美,是游客游览江西最热门的旅游胜地之一。在所有的景点中,以下是鄱阳湖旅游中最主要的景点。 景点一&#xff1…

六西格玛培训对职场和财务的长期影响——张驰咨询

在当今竞争激烈的商业环境中,公司不断寻求提高质量和效率的方法,六西格玛(Six Sigma)作为一种旨在减少缺陷、提升产品和服务质量的管理策略,成为了很多企业的选择。然而,实施六西格玛需要专业的培训和认证&…

银河麒麟系列产品全新介绍——麒麟天御安全域管平台

麒麟天御安全域管平台是麒麟软件自主研发的新一代终端系统域管理平台,是专门针对银河麒麟操作系统环境下大规模的域用户和终端管理需求而设计。该平台聚焦用户身份验证、权限、访问控制、集中化管理、单点登录、策略等多个领域,提供组织管理、用户管理、终端管理、任务管理、软…

【python】windowslinux系统python的安装

一、python官网及下载路径 官网地址:Welcome to Python.org 下载路径:Download Python | Python.org ​​​​​​​ linux源码安装包下载: windows二进制安装包下载: 二、Linux如何安装python 2.1 单版本安装 以安装python…

防御保护---内容保护

文章目录 目录 文章目录 一.防火墙内容安全概述 二.深度识别技术(DFI/DPI) 深度包检测技术(DPI) 深度流检测技术(DFI) 两者区别 三.入侵防御IPS 一.防火墙内容安全概述 防火墙内容安全是防火墙的一个重…

即时设计和sketch对比

在设计领域,有很多易于使用的设计软件,每个软件都有自己的特点,但在使用中也会有一些限制。例如,传统的Sketch。Sketch是一款古老的UI设计软件。自2010年推出以来,已有10多年的历史,但它始终仅限于MAC。到目…

java中实体pojo对于布尔类型属性命名尽量别以is开头,否则 fastjson可能会导致属性读取不到

假如我们有一个场景,就是需要将一个对象以字符串的形式,也就是jsonString存到一个地方,比如mysql,或者redis的String结构。现在有一个实体,我们自己创建的,叫做CusPojo.java 有两个属性是布尔类型的&#x…

微调实操三:人类反馈对语言模型进行强化学习(RLHF)

1、前言 前面我们在《微调实操一: 增量预训练(Pretraining)》和《微调实操二: 有监督微调(Supervised Finetuning)》实操的两个章节,学习了PT(Continue PreTraining)增量预训练和SFT(Supervised Fine-tuning)有监督微调过程,,今天我们进入第三阶段的微调…

【微服务生态】Docker

文章目录 一、基础篇1. 简介2. 下载与安装3. 常用命令3.1 帮助启动类3.2 镜像命令3.3 容器命令 4. Docker 容器数据券5. Docker 镜像5.1 commit 生成镜像5.2 Docker Registry5.3 发布镜像 6. Docker 常规安装软件 二、高级篇1. Dockerfile1.1 概述1.2 基础知识1.3 Dockerfile常…

软件测试工程师经典面试题

软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件…

豆粕贸易商的二次点价策略:如何在价格波动中获得收益补贴?

贸易商如何通过衍生品工具实现二次点价? 贸易商交易惯例:以豆粕贸易商和油厂签订的基差采购合同为例,同理可以类推至其他板块上下游企业。 按照交易惯例,贸易商通常会持有基差合同,但并不会先点价。当价格从高点到低…