实时数仓:基于数据湖的实时数仓与数据治理架构

设计一个基于数据湖的实时数仓与数据治理架构,需要围绕以下几个核心方面展开:实时数据处理、数据存储与管理、数据质量治理、数据权限管理以及数据消费。以下是一个参考架构方案:


一、架构整体概览

核心组成部分
  1. 数据源层

    • 数据来源:多样化的数据源(OLTP数据库、日志系统、IoT设备、API接口等)。
    • 数据类型:结构化、半结构化(JSON、CSV)、非结构化(图片、视频)。
  2. 数据接入层

    • 工具:使用 Flink CDCDebezium 捕获数据库变更;通过 KafkaPulsar 作为数据流传输工具。
    • 实现:实时采集和流式数据传输,支持批流融合。
  3. 数据存储层

    • 湖仓一体化存储
      • 使用 Hudi/Iceberg/Delta Lake 作为数据湖存储格式,提供流批融合的 ACID 事务支持。
      • 元数据管理工具:集成 Apache Hive MetastoreAWS Glue
      • 分层存储:
        • ODS层:原始数据按时间分区存储。
        • DWD层:清洗后数据,按主题域区分,增强列式存储优化。
        • DWS层:宽表或汇总数据,支持实时与离线分析。
        • ADS层:直接服务于BI和报表需求。
  4. 数据处理层

    • 实时处理
      • 使用 Flink Structured StreamingSpark Structured Streaming 处理实时流数据。
      • 实现基于事件驱动的实时数据加工。
    • 离线处理
      • 使用 Spark SQLHive 定期对冷数据做批量清洗和汇总。
    • 查询加速
      • Doris 提供在线分析服务,支持对实时数仓和数据湖查询加速。
  5. 数据消费层

    • BI工具:如 Apache Superset、Tableau
    • 实时监控:通过 Grafana 或自研监控平台展示实时指标。
    • 数据接口:通过 REST API 或 GraphQL 提供服务。
  6. 数据治理层

    • 数据质量:Great Expectations 或自研工具,监控数据准确性、一致性、完整性。
    • 数据权限:集成 Apache RangerAWS Lake Formation,实现细粒度权限控制。
    • 数据血缘:通过 Apache Atlas 构建血缘追踪系统。

二、架构设计细节

1. 实时数据处理架构
  • 工具选择
    • Kafka:实时数据管道,存储流数据。
    • Flink Structured Streaming:低延迟的流式处理框架。
    • Hudi/Iceberg/Delta Lake:支持实时写入与批量读取。
  • 流处理流程
    1. 事件驱动
      • 例如:电商订单事件,基于订单状态变化驱动实时处理。
    2. 时间驱动
      • 例如:按时间窗口计算销售汇总数据(1分钟/1小时)。
2. 数据湖存储架构
  • 数据按 主题域时间分区 存储:
    • ODSods/{业务域}/{表名}/{年}/{月}/{日}/{小时}
    • DWDdwd/{业务域}/{表名}/{年}/{月}/{日}
    • DWSdws/{业务域}/{汇总主题}/{年}/{月}
    • ADSads/{业务域}/{分析主题}/{年}/{月}
  • 数据湖存储格式:选择支持事务的格式(Hudi、Iceberg)。
3. 数据治理实现
  1. 数据质量管理
    • 定义质量规则:
      • Null值校验、唯一性校验、值域校验。
    • 工具:通过 Great Expectations 自动化校验规则。
  2. 数据权限管理
    • 设置访问策略:
      • 按主题域、角色分配细粒度权限。
    • 工具:使用 Apache Ranger
  3. 数据血缘管理
    • 构建数据流向:
      • 数据从 Kafka -> Flink -> Hudi -> Doris 的全链路血缘图。
    • 工具:Apache Atlas
4. 数据消费设计
  • BI报表和实时监控:
    • 将指标数据实时暴露到 Doris,供 Superset 或其他BI工具使用。
  • API服务:
    • 提供基于实时数仓的接口服务,支持企业内部应用快速访问。

三、架构优点与挑战

优点
  1. 实时性强:利用事件驱动和流处理,实时响应数据变化。
  2. 灵活扩展:湖仓一体化架构,支持高效存储和查询。
  3. 数据治理完备:实现从质量、权限到血缘的全面管理。
挑战
  1. 实时任务复杂度高:Flink流任务设计需要更高的工程能力。
  2. 数据湖性能优化:Hudi/Iceberg在查询性能上仍需精心设计分区和索引。
  3. 治理系统维护成本高:需要持续投入开发和运维力量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue js实现时钟以及刻度效果

2025.01.08今天我学习如何用js实现时钟样式&#xff0c;效果如下&#xff1a; 一、html代码如下&#xff1a; <template><!--圆圈--><div class"notice_border"><div class"notice_position notice_name_class" v-for"item in …

Docker入门之docker基本命令

Docker入门之docker基本命令 官方网站&#xff1a;https://www.docker.com/ 1. 拉取官方镜像并创建容器&#xff08;以redis为例&#xff09; 拉取官方镜像 docker pull redis# 如果不需要添加到自定义网络使用这个命令&#xff0c;如需要&#xff0c;直接看第二步 docker r…

“深入浅出”系列之FFmpeg:(1)音视频开发基础

我的音视频开发大部分内容是跟着雷霄骅大佬学习的&#xff0c;所以笔记也是跟雷老师的博客写的。 一、音视频相关的基础知识 首先播放一个视频文件的流程如下所示&#xff1a; FFmpeg的作用就是将H.264格式的数据转换成YUV格式的数据&#xff0c;然后SDL将YUV显示到电脑屏幕上…

【JAVA基础】Collections方法的具体使用方法

java基础中Collections及collect(toList,toSet,toMap)的用法 package com.gaofeng;import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream;public class demo01 {public static void main(String[] …

深度学习知识点:RNN

文章目录 1.简单介绍2.网络结构3.应对梯度消失 1.简单介绍 循环神经网络&#xff08;RNN&#xff0c;Recurrent Neural Network&#xff09;是一类用于处理序列数据的神经网络。与传统网络相比&#xff0c;变化不是特别大&#xff0c;不如CNN的变化那么大。 为什么要有循环神经…

超完整Docker学习记录,Docker常用命令详解

前言 关于国内拉取不到docker镜像的问题&#xff0c;可以利用Github Action将需要的镜像转存到阿里云私有仓库&#xff0c;然后再通过阿里云私有仓库去拉取就可以了。 参考项目地址&#xff1a;使用Github Action将国外的Docker镜像转存到阿里云私有仓库 一、Docker简介 Do…

MySQL学习笔记(二)

一、SQL-函数 函数-介绍 函数是指一段可以直接被另一段程序调用的程序或代码。 字符串函数 示例 --concat select concat(Hello,MySql); --upper select upper(Hello); --lpad select lpad(01,5,-); --trim select trim( Hello MySQL ); --中间空格还在&#xff0c;头尾…

java mail 535 Login Fail. Please enter your authorization code to login

报错信息提示查看 https://service.mail.qq.com/detail/0/53 帮助页面意思就是说你要使用授权码登录, 但是授权码我已经正确的设置上去了 后面从 QQ邮箱出现错误 Please enter your authorization code to_邮件群发-双翼邮件群发软件官方网 看到 账户 需要是 QQ号 例如…

mysql、postgresql、druid链接池踩坑记录

The last packet successfully received from the server wIs 10,010 milliseconds ago. The last packet sent successfully to the server was 10,010 milliseconds ago.### The error may exist in URL mysql 链接字符串没有 &connectTimeout600000&socketTimeout6…

安卓NDK视觉开发——手机拍照文档边缘检测实现方法与库封装

一、项目创建 创建NDK项目有两种方式&#xff0c;一种从新创建整个项目&#xff0c;一个在创建好的项目添加NDK接口。 1.创建NDK项目 创建 一个Native C项目&#xff1a; 选择包名、API版本与算法交互的语言&#xff1a; 选择C版本&#xff1a; 创建完之后&#xff0c;可…

Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别

Spring Boot – CrudRepository 和 JpaRepository 之间的区别 Spring Boot建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置和设置&#xff0c;因此如今它正成为开发人员…

【网页自动化】篡改猴入门教程

安装篡改猴 打开浏览器扩展商店&#xff08;Edge、Chrome、Firefox 等&#xff09;。搜索 Tampermonkey 并安装。 如图安装后&#xff0c;浏览器右上角会显示一个带有猴子图标的按钮。 创建用户脚本 已进入篡改猴管理面板点击创建 脚本注释说明 name&#xff1a;脚本名称。…

spark汇总

目录 描述运行模式1. Windows模式代码示例 2. Local模式3. Standalone模式 RDD描述特性RDD创建代码示例&#xff08;并行化创建&#xff09;代码示例&#xff08;读取外部数据&#xff09;代码示例&#xff08;读取目录下的所有文件&#xff09; 算子DAGSparkSQLSparkStreaming…

Spring AMQP-保证发送者消息的可靠性

1. 消息发送者的可靠性 保证消息的可靠性可以通过发送者重连和发送者确认来实现 发送者重连 发送者重连机制就是在发送信息的时候如果连接不上mq不会立即结束&#xff0c;而是会在一定的时间间隔之类进行重新连接&#xff0c;连接的次数和时间都是由我们在配置文件中指定的&…

vs2022编译webrtc步骤

1、主要步骤说明 概述&#xff1a;基础环境必须有&#xff0c;比如git&#xff0c;Powershell这些&#xff0c;就不写到下面了。 1.1 安装vs2022 1、选择使用C的桌面开发 2、 Windows 10 SDK安装10.0.20348.0 3、勾选MFC及ATL这两项 4、 安装完VS2022后&#xff0c;必须安…

UnityWebGl:打包成webgl后UGUI不显示文字(中文)问题

是由于unity默认使用的是Arial,导致打包成webgl时中文不显示 解决方案&#xff1a; 可在电脑C盘下&#xff0c;路径为C:\Windows\Fonts 找个中文简体的字体文件放到unity里面&#xff0c;格式必须为. ttf

ffmpeg-avio实战:打开本地文件或者网络直播流dome

使用ffmpeg打开打开本地文件或者网络直播流的一个小dome。流程产靠ffmpeg4.x系列的解码流程-CSDN博客 #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libavformat/avio.h> #include <libavutil/file.h> #include &l…

英伟达打造个人 AI 超级计算机:Project DIGITS 震撼登场

手掌大小的超级计算机 Nvidia 在 CES 2025 上为桌面用户推出了 一款大小和手掌差不多的超级计算机——Project DIGITS AI 超级计算机。虽然它的大小和一个手掌差不多&#xff0c;但性能方面可以说是强到惊人。 Project DIGITS Project DIGITS Project DIGITS 搭载全新的 GB10 G…

SAP SD学习笔记26 - 贩卖契约(框架协议)的概要,基本契约 - 数量契约

上一章讲了品目阶层&#xff08;产品层次结构&#xff09;&#xff0c;品揃Module(分类模块) 。 SAP SD学习笔记25 - 品目阶层&#xff08;产品层次结构&#xff09;、品揃Module&#xff08;分类模块&#xff09;-CSDN博客 本章继续讲SAP的知识&#xff1a;贩卖契约&#xff…

ESP32 IDF VScode出现头文件“无法打开 源 文件 ”,并有红色下划线警告

问题背景&#xff1a; ESP32 IDF VScode出现头文件“无法打开 源 文件 ”&#xff0c;并有红色下划线警告&#xff1a; 解决办法&#xff1a; 在工程里面的.vscode文件夹下&#xff0c;检查是否存在c_cpp_properties.json文件&#xff0c;如果没有可以手动创建添加。如图…