当前位置: 首页 > news >正文

构建一个“湖仓一体”(Data Lakehouse)系统

构建一个“湖仓一体”(Data Lakehouse)系统,关键是融合数据湖(Data Lake)的灵活性与数据仓库(Data Warehouse)的高性能分析能力。下面是构建流程的核心步骤:


一、总体架构设计

  1. 分层架构:通常采用“数据接入层-存储层-计算层-服务层”四层架构;

  2. 统一存储:底层使用对象存储分布式文件系统(如HDFS、S3、OSS)统一存储结构化与非结构化数据;

  3. 统一格式:使用开源湖仓格式(如 Delta Lake、Apache Hudi、Apache Iceberg)实现数据版本控制与 ACID 事务支持。


二、关键模块构建

1. 数据采集与接入层
  • 实时采集:Kafka / Flink / NiFi;

  • 批量采集:Sqoop / DataX / Hive load;

  • 元数据注册:使用 Hive Metastore、Apache Atlas 或 AWS Glue 进行数据目录管理。

2. 数据存储与治理
  • 原始数据层(ODS):保留所有入湖数据,便于追溯;

  • 数据标准化层(DWD):数据清洗、转换、统一编码;

  • 汇总层(DWS):构建宽表、多维模型支持 BI;

  • 数据治理机制:数据血缘、质量校验、版本控制。

3. 计算与分析
  • 批处理:Spark / Hive / Presto / Trino;

  • 流处理:Flink;

  • 湖仓引擎:Delta Lake(Databricks)、Hudi(阿里系)、Iceberg(字节系);

  • 调度平台:Airflow / DolphinScheduler / Azkaban。

4. 服务与可视化
  • SQL 查询接口:支持 ANSI SQL;

  • BI 可视化工具:Tableau、Superset、Power BI、FineBI;

  • API 服务层:通过 RESTful API / GraphQL 供外部系统调用。


三、湖仓融合关键能力

  • 事务支持:ACID 事务(湖仓格式支持);

  • 统一元数据管理:实现湖、仓之间的数据可见性与一致性;

  • 数据冷热分层:热数据可快速分析,冷数据便宜存储;

  • 计算引擎解耦:支持多引擎并存,例如 Spark、Trino、ClickHouse。


四、推荐技术选型参考(开源生态)

模块推荐工具/技术
存储HDFS, S3, OSS
格式Delta Lake, Hudi, Iceberg
元数据Hive Metastore, AWS Glue
计算引擎Spark, Flink, Trino
数据治理Apache Atlas, DataHub
调度Apache Airflow, Kettle
可视化Superset, Grafana, Tableau

下面是一套基于开源工具的湖仓一体平台部署方案


🌊 基于开源工具的湖仓一体平台部署方案(Lakehouse Architecture)

🎯 目标定位

构建一个融合数据湖弹性存储能力数据仓库高效分析能力的开源平台,支持结构化、半结构化和非结构化数据的统一存储、管理、分析和服务。


🏗️ 总体架构(分层)

┌───────────────────────────────┐
│       可视化与服务层(BI/API) │ ← Superset / Grafana / Flask API
├───────────────────────────────┤
│      查询与分析计算引擎层     │ ← Trino / Spark SQL / Flink SQL
├───────────────────────────────┤
│       元数据与治理管理层      │ ← Hive Metastore / Apache Atlas / Amundsen
├───────────────────────────────┤
│       存储与湖仓格式层        │ ← HDFS / S3 + Hudi / Iceberg / Delta
├───────────────────────────────┤
│        数据接入与同步层       │ ← Kafka / Flink / Airbyte / NiFi
└───────────────────────────────┘

🧱 模块详细部署方案

1. 数据接入与采集层
功能工具推荐部署说明
实时采集Apache Kafka + FlinkKafka 收集日志,Flink 流计算入湖
批量采集Airbyte / DataX / Sqoop数据库、API 数据定时拉取入湖
数据接入调度Apache AirflowETL调度,支持DAG编排
2. 统一存储与湖仓格式
功能工具选择部署说明
对象存储HDFS / MinIO / S3支持原始数据和增量数据存储
湖仓格式Apache Hudi / Iceberg实现数据版本控制、ACID、分区等功能
表管理Hive Metastore管理表元数据,兼容 Spark/Trino
3. 计算引擎与数据分析
类型工具选择说明
批处理Apache Spark复杂ETL/清洗/训练,支持Hudi/Iceberg
流处理Apache Flink实时入湖、实时计算、复杂事件处理
查询分析Trino (Presto升级版)高并发查询,多源联邦查询支持
4. 元数据管理与数据治理
功能工具推荐描述
元数据管理Hive Metastore / Amundsen表结构、分区、字段血缘管理
数据治理Apache Atlas / DataHub数据血缘、权限、分级分类管理
数据质量校验Great Expectations自动化数据验证,异常检测
5. 可视化与数据服务
功能工具推荐说明
可视化Apache Superset自助式BI工具,连接Trino等
仪表盘Grafana实时监控平台指标
API 服务Flask/FastAPI + SQLAlchemy构建数据服务接口

🧪 环境与部署方式建议

环节部署方式建议
部署平台Kubernetes / Docker Compose
元数据存储MySQL/PostgreSQL
安全机制LDAP/SAML 单点登录、Ranger权限管理
高可用架构Kafka/Flink/Spark 使用集群模式部署
存储建议MinIO(本地测试)/ HDFS(集群环境)

🧭 样例部署组合

  • 采集:Kafka + Flink + Airbyte

  • 存储:MinIO + Apache Hudi

  • 计算:Spark + Trino

  • 元数据:Hive Metastore + Apache Atlas

  • 可视化:Superset + Grafana

  • 调度:Apache Airflow

  • 数据服务:Flask API


📊 附加说明

  • 权限管理建议:可集成 Apache Ranger 统一控制 Trino/Spark/Hive 权限;

  • 统一查询门户:可通过 Superset 构建面向业务部门的统一数据门户;

  • 测试数据准备:支持导入公开数据集(如 TPC-H、COVID Open Data)模拟环境。

相关文章:

构建一个“湖仓一体”(Data Lakehouse)系统

构建一个“湖仓一体”(Data Lakehouse)系统,关键是融合数据湖(Data Lake)的灵活性与数据仓库(Data Warehouse)的高性能分析能力。下面是构建流程的核心步骤: 一、总体架构设计 分层架…...

【C++】尾置返回类型(Trailing Return Type)总结

尾置返回类型(Trailing Return Type)是 C11 引入的一种函数返回类型声明方式,允许将返回类型放在函数参数列表之后,使用 -> 符号指定。这种语法在模板编程、Lambda 表达式和复杂类型推导时特别有用。 1. 基本语法 auto func(参…...

[人月神话_6] 另外一面 | 一页流程图 | 没有银弹

另外一面(The other face) 计算机程序是人类向机器传递信息的一种方式,为了确保意图能够被无言的机器准确理解,程序采用了严格的语法和精确的定义。(这就需要 我们有严密的逻辑思维) 然而,除了…...

GO学习指南

GO学习指南 主题一 go语言基础知识讲解 go语言面向对象编程 go语言接口详解 go语言协程 后续内容请大家持续关注,每月一主题,让各位读者能零基础、零成本学习go语言...

【机器学习】逻辑回归

文章目录 一、逻辑回归概述1.定义2.原理 二、Sigmoid函数三、梯度上升算法四、实验1.代码2.运行结果3.实验小结 一、逻辑回归概述 1.定义 Logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处…...

Nginx配置与命令

Nginx 配置文件基础 全局块(Main Context):配置影响全局的参数,如用户、进程数、日志路径等。 user nginx; # 运行Nginx的用户和组 worker_processes auto; # 工作进程数(通常设为CPU核心数&…...

测试--测试分类 (白盒 黑盒 单元 集成)

一、按照测试目标分类(测试目的是什么) 主类别细分说明1. 界面测试UI内容完整性、一致性、准确性、友好性,布局排版合理性,控件可用性等2. 功能测试检查软件功能是否符合需求说明书,常用黑盒方法:边界值、…...

工作流介绍

了解工作流对大模型进行高质量工作的辅助意义学会复现吴恩达博士的翻译工作流开源项目了解构成大模型工作流系统的关键元素学会搭建一个更复杂的业务场景工作流 一、为什么我们需要工作流? ❓ 什么样的职场打工人是合格的打工人? 反应快,理…...

学习黑客Active Directory 入门指南(五)

Active Directory 入门指南(五):管理工具、安全基础与学习路径 🛠️🛡️📚 大家好!欢迎来到 “Active Directory 入门指南” 系列的最后一篇。在前四篇中,我们已经全面探讨了Active…...

【第三篇】 SpringBoot项目中的属性配置

简介 SpringBoot支持多种配置文件格式,包括application.properties、yml和yaml等。本文章将详细介绍这三种配置文件的内容格式和详细用法,以及在程序中如何对配置文件中的属性进行读取。文章内容若存在错误或需改进的地方,欢迎大家指正&#…...

处理金融数据,特别是股票指数数据,以计算和分析RSRS(相对强度指数)

Python脚本,用于处理金融数据,特别是股票指数数据,以计算和分析RSRS(相对强度指数)指标。以下是代码的逐部分解释: 1. **导入库**: - `pandas`:用于数据处理和CSV文件操作。 - `numpy`:用于数值计算。 - `ElasticNet`:来自`sklearn.linear_model`,用于线性…...

C++面试2——C与C++的关系

C与C++的关系及核心区别的解析 一、哲学与编程范式:代码组织的革命 过程式 vs 多范式混合 C语言是过程式编程的典范,以算法流程为中心,强调“怎么做”(How)。例如,实现链表操作需手动管理节点指针和内存。 C++则是多范式语言,支持面向对象(OOP)、泛型编程(模板)、函…...

Linux云计算训练营笔记day10(MySQL数据库)

Linux云计算训练营笔记day10(MySQL数据库) 目录 Linux云计算训练营笔记day10(MySQL数据库)ifnull别名聚合函数group byHAVING 子查询关联查询 ifnull 在DQL语句中可以使用函数或表达式 函数 IFNULL(arg1,arg2) 如果arg1为NULL,函…...

深度解析:AWS NLB 与 ALB 在 EKS 集群中的最佳选择

前言 AWS 提供多种弹性负载均衡器,包括应用程序负载均衡器 (ALB)、网络负载均衡器 (NLB)、网关负载均衡器 (GWLB) 和经典负载均衡器 (CLB)。本文重点介绍 ALB 和 NLB,因为它们是 EKS 集群最相关的选项。 在确定合适的负载均衡器类型时,需要…...

nginx模块使用、过滤器模块以及handler模块

一、如何使用nginx的模块 1.ngx_code.c: #include "ngx_config.h" #include "ngx_conf_file.h" #include "nginx.h" #include "ngx_core.h" #include "ngx_string.h" #include "ngx_palloc.h" #include "n…...

基于PageHelper的分页查询

基于PageHelper的分页查询 ‘PageHelper是基于java的一个开源框架,用于在MyBatis等持久层框架中方便地进行分页查询操作。它提供了一组简单易用的API和拦截器机制,可以帮助开发者快速集成和使用分页功能。 PageHelper的主要功能包括: 分页…...

Linux518 YUM源仓库回顾(需查)ssh 服务配置回顾 特定任务配置回顾

计划配仓库YUM源 为什么我在/soft文件夹下 使用yum install --downloadonly --downloaddir /soft samba 为什么文件夹下看不到samba文件 exiting because “Download Only” specified 计划过 计划配SSH 参考 ok了 计划配置特定任务解决方案 code: 两端先配好网络 测试好s…...

AI 制作游戏美术素材流程分享(程序员方向粗糙版)

AI 制作游戏美术素材分享(程序员方向粗糙版) 视频讲解: 抖音:https://www.douyin.com/user/self?from_tab_namemain&modal_id7505691614690561295&showTabpost Bilibili: https://www.bilibili.com/video/BV1ojJGzZEve/ 写在最前面: 本方法比较粗糙,只对对美术风…...

山东大学计算机图形学期末复习12——CG13下

CG13下 BSP树 BSP (Binary Space Partition)表示二叉空间分割。 使用这种方法可以使我们在运行时使用一个预先计算好的树来得到多边形从后向前的列表,它的复杂度为O(n)。 它的基本思想是基于这样一个事实:任何平面都可以将空间分…...

Muduo网络库大总结

Muduo网络库大总结 目录 目的知识储备IO模型 阻塞与非阻塞五种IO模型 epoll原理 select/poll的缺点epoll的优势LT与ET模式 Reactor模型muduo核心模块扩展功能 目的 理解阻塞、非阻塞、同步、异步的概念掌握Unix/Linux五种IO模型深入理解epoll原理及优势掌握Reactor模型设计学…...

LLMs:《POE报告:2025年春季人工智能模型使用趋势》解读

LLMs:《POE报告:2025年春季人工智能模型使用趋势》解读 导读:2025年5月13日,该报告基于 Poe 平台的用户数据,分析了 2025 年春季人工智能模型的使用趋势。报告指出,人工智能格局快速演变,通用文…...

机器学习(13)——LGBM(2)

一、LightGBM算法简介 (一)背景 机器学习中的树模型 在机器学习领域,基于树的模型(如决策树、随机森林、梯度提升树等)是非常重要的算法类别。它们具有很强的可解释性,能够很好地处理非线性关系&#xff…...

翻到了一段2005年写的关于需求的文字

那时的俺还很稚嫩,很多东西都不懂。 另外 hfghfghfg其实是俺的一个马甲,早年间在delphibbs时用的。 来自:hfghfghfg, 时间:2005-01-20 13:16, ID:2971188我到客户那里的情况 一边要和他聊天 一边改报表。 一张报表 …...

MCP - Cline 接入 高德地图 Server

文章目录 一、准备1、注册、认证高德开放平台账号2、创建应用、获取 Key3、用量管理2、Cline 配置模型 二、接入三、测试官方测试 - 出行规划专属地图 四、关于 高德 MCP Server - AI时代的出行服务中台1、产品定位2、技术架构亮点3、核心API能力矩阵4、开发者优势5、典型应用场…...

Linux的MySQL头文件和找不到头文件问题解决

头文件 #include <iostream> #include <mysql_driver.h> #include <mysql_connection.h> #include <cppconn/statement.h> #include <cppconn/resultset.h> #include <cppconn/prepared_statement.h> #include <cppconn/exception.h&g…...

进程和线程的区别和联系

二者概念 进程 运行起来一个程序就会在操作系统产生一个或多个进程 进程属于软件资源。 进程是操作系统中资源分配的基本单位。 每个进程拥有独立的 内存空间、文件描述符、系统资源。 进程之间相互隔离&#xff0c;一个进程崩溃不会直接影响其他进程。 操作系统管理进程…...

SHAP分析图的含义

1. 训练集预测结果对比图 表征含义&#xff1a; 展示模型在训练集上的预测值&#xff08;红色曲线&#xff09;与真实值&#xff08;灰色曲线&#xff09;的对比。通过曲线重合度可直观判断模型的拟合效果。标题中显示的RMSE&#xff08;均方根误差&#xff09;量化了预测值与…...

PointNet++:点云处理的升级版算法

在三维计算机视觉和机器学习领域&#xff0c;点云数据的处理一直是一个关键问题。点云是由一系列三维坐标点组成的集合&#xff0c;这些点可以描述物体的形状和结构。然而&#xff0c;由于点云的无序性和不规则性&#xff0c;传统的处理方法往往难以直接应用。PointNet算法的出…...

PostGIS实现矢量数据转栅格数据【ST_AsRaster】

ST_AsRaster函数应用详解&#xff1a;将矢量数据转换为栅格数据 [文章目录] 一、函数概述 二、函数参数与分组说明 三、核心特性与注意事项 四、示例代码 五、应用场景 六、版本依赖 七、总结 一、函数概述 ST_AsRaster是PostGIS中用于将几何对象&#xff08;如点、线…...

【PyQt5实战】五大对话框控件详解:从文件选择到消息弹窗

对话框是人机交互的重要组件&#xff0c;PyQt5提供了一系列标准对话框满足不同场景需求。本文将深入解析QDialog及其子类的使用方法&#xff0c;助你快速掌握GUI开发核心交互功能。 对话框基础&#xff1a;QDialog QDialog是所有对话框的基类&#xff0c;支持模态/非模态两种…...

机器学习-人与机器生数据的区分模型测试 - 模型选择与微调

内容继续机器学习-人与机器生数据的区分模型测试 整体模型的准确率 X_train_scaled pd.DataFrame(X_train_scaled,columns X_train.columns ) X_test_scaled pd.DataFrame(X_test_scaled,columns X_test.columns)from ngboost.distns import Bernoulli # 模型训练和评估 m…...

学习黑客Active Directory 入门指南(四)

Active Directory 入门指南&#xff08;四&#xff09;&#xff1a;组策略的威力与操作主机角色 &#x1f4dc;&#x1f451; 大家好&#xff01;欢迎来到 “Active Directory 入门指南” 系列的第四篇。在前几篇中&#xff0c;我们已经构建了对AD逻辑结构、物理组件、关键服务…...

十一、STM32入门学习之FREERTOS移植

目录 一、FreeRTOS1、源码下载&#xff1a;2、解压源码 二、移植步骤一&#xff1a;在需要移植的项目中新建myFreeRTOS的文件夹&#xff0c;用于存放FREERTOS的相关源码步骤二&#xff1a;keil中包含相关文件夹和文件引用路径步骤三&#xff1a;修改FreeRTOSConfig.h文件的相关…...

Spring ioc和Aop

IOC 在传统Java当中&#xff0c;我们的对象都需要new关键字来生成&#xff0c;这在面对很多对象的情况产生了不必要的麻烦&#xff0c;因为我不需要在一个项目中一直做重复的事情&#xff0c;那怎么办把&#xff0c;自然而然的一些好的框架就诞生了&#xff0c;避免我们去做这…...

动态内存管理2+柔性数组

一、动态内存经典笔试题分析 分析错误并改正 题目1 void GetMemory(char *p) {p (char *)malloc(100); } void Test(void) {char *str NULL;GetMemory(str);strcpy(str, "hello world");printf(str); } int main() {Test();return 0; }错误的原因&#xff1a; …...

USB传输速率 和 RS-232/RS-485串口协议速率 的倍数关系

一、技术背景 RS-232&#xff1a;传统串口标准&#xff0c;典型速率 115.2 kbps&#xff08;最高约 1 Mbps&#xff09;。RS-485&#xff1a;工业串口标准&#xff0c;典型速率 10 Mbps&#xff08;理论最高可达 50 Mbps&#xff09;。USB&#xff1a;不同版本差异巨大&#x…...

多线程代码案例-4 线程池

1、引入 池是一个非常重要的概念&#xff0c;我们有常量池&#xff0c;数据库连接池&#xff0c;线程池&#xff0c;进程池&#xff0c;内存池…… 池的作用&#xff1a; 1、提前把要用的对象准备好 2、用完的对象也不立即释放&#xff0c;先留着以备下次使用&#xff0c;提…...

JSON Schema 高效校验 JSON 数据格式

在数据交换和API开发中&#xff0c;JSON 已成为最流行的数据格式之一。但你是否遇到过这些困扰&#xff1f; 接收的JSON字段缺失关键数据&#xff1f;数值类型意外变成了字符串&#xff1f;嵌套结构不符合预期&#xff1f; JSON Schema 正是解决这些问题的利器。本文将带你全…...

机器学习09-正规方程

机器学习笔记&#xff1a;正规方程&#xff08;Normal Equation&#xff09; 概述 正规方程是线性回归中求解参数的一种解析方法。它基于最小化损失函数&#xff08;如最小二乘法&#xff09;来直接计算出参数的最优值。在机器学习中&#xff0c;这种方法尤其适用于特征数量不…...

Java大师成长计划之第26天:Spring生态与微服务架构之消息驱动的微服务

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4-turbo模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 在现代微服务架构中&#xff0c;服务…...

Linux 文件(1)

1. 文件 1.1 文件是什么 一个文件&#xff0c;是由其文件属性与文件内容构成的。文件属性又称为一个文件的元数据&#xff0c;因此如果一个文件&#xff0c;内容为空&#xff0c;这个文件依然要占据磁盘空间。 1.2 文件在哪里 一个文件&#xff0c;如果没有被打开&#xff…...

程序代码篇---python向http界面发送数据

文章目录 前言 前言 本文简单接受了python向http界面发送数据...

【iOS】探索消息流程

探索消息流程 Runtime介绍OC三大核心动态特性动态类型动态绑定动态语言 方法的本质代码转换objc_msgSendSELIMPMethod 父类方法在子类中的实现 消息查找流程开始查找快速查找流程慢速查找流程二分查找方法列表父类缓存查找 动态方法解析动态方法决议实例方法类方法优化 消息转发…...

院校机试刷题第六天:1134矩阵翻转、1052学生成绩管理、1409对称矩阵

一、1134矩阵翻转 1.题目描述 2.解题思路 很简单的模拟题&#xff0c;甚至只是上下翻转&#xff0c;遍历输出的时候先把最下面那一行输出即可。 3.代码 #include <iostream> #include <vector> using namespace std;int main() {int n;cin >> n;vector&l…...

DeepSeek在简历筛选系统中的深度应用

一、多模态解析引擎的技术突破 1.1 复杂格式的精准解析 针对简历格式多样性挑战,DeepSeek采用三级解析架构: 格式标准化层:基于Transformer的DocParser模型支持200+种文档格式转换视觉特征提取:使用改进的YOLOv8进行证书印章识别(mAP@0.5达93.7%)语义重构模块:通过注意…...

c++多线程debug

debug demo 命令行查看 ps -eLf|grep cam_det //查看当前运行的轻量级进程 ps -aux | grep 执行文件 //查看当前运行的进程 ps -aL | grep 执行文件 //查看当前运行的轻量级进程 pstree -p 主线程ID //查看主线程和新线程的关系 查看线程栈结构 pstack 线程ID 步骤&…...

【回溯 剪支 状态压缩】# P10419 [蓝桥杯 2023 国 A] 01 游戏|普及+

本文涉及知识点 C回溯 位运算、状态压缩、枚举子集汇总 P10419 [蓝桥杯 2023 国 A] 01 游戏 题目描述 小蓝最近玩上了 01 01 01 游戏&#xff0c;这是一款带有二进制思想的棋子游戏&#xff0c;具体来说游戏在一个大小为 N N N\times N NN 的棋盘上进行&#xff0c;棋盘…...

CUDA 纹理入门

一、什么是CUDA纹理 CUDA纹理是NVIDIA GPU提供的一种特殊内存访问机制,它允许高效地访问和过滤结构化数据。纹理内存最初是为图形渲染设计的,但在通用计算(GPGPU)中也很有用。 二、纹理内存的优势 缓存优化:纹理内存有专用的缓存,适合空间局部性好的访问模式 硬件过滤:支…...

大模型微调步骤整理

在对深度学习模型进行微调时,我通常会遵循以下几个通用步骤。 第一步是选择一个合适的预训练模型。PyTorch 的 torchvision.models 模块提供了很多经典的预训练模型,比如 ResNet、VGG、EfficientNet 等。我们可以直接使用它们作为模型的基础结构。例如,加载一个预训练的 Re…...

【GPT入门】第39课 OPENAI官方API调用方法

【GPT入门】第39课 OPENAI官方API调用方法 1. OPENAI 免费API2. openai调用最简单的API3.apiKey提取到环境变量 1. OPENAI 免费API 需要科学上网&#xff0c;可以调用 gpt-4o-mini 的 api, 使用其它旧的GPT&#xff0c;反而可能需要收费&#xff0c;例如 gpt-3.5-turbo 2. op…...