大数据基础背景知识

201 阅读3分钟

一、数据仓库理论深化:维度建模方法论

graph TD
    A[维度建模] --> B[业务过程分析]
    A --> C[粒度确定]
    A --> D[维度设计]
    A --> E[事实表构建]
    D --> D1["缓慢变化维处理(SCD)"]
    D1 --> D11["Type 1: 覆盖旧值"]
    D1 --> D12["Type 2: 新增历史记录"]
    D1 --> D13["Type 3: 添加历史字段"]
    E --> E1["事务事实表(原子事件)"]
    E --> E2["周期快照表(状态统计)"]
    E --> E3["累积快照表(过程跟踪)"]

❖ Kimball维度建模核心步骤:

  1. 业务过程选择

    • 聚焦核心业务环节(如电商的"下单支付"过程)
    • 示例:银行信用卡的"交易授权"过程
  2. 粒度声明

    • 原子粒度 vs 聚合粒度:
      正确示例:每个用户的每次点击事件(原子级)
      错误示例:每天的用户点击总计(聚合级)
      
  3. 维度设计技巧

    • 退化维度:将订单ID等业务键直接存入事实表
    • 角色扮演维度:时间维度在不同场景的重用(下单时间/支付时间)
    • 雪花模型优化:在查询性能与存储效率间权衡(适用于高基维度)
  4. 事实表设计原则

    • 可加性:销售额可累加,库存量半可加,利润率不可加
    • 事务事实表结构示例:
      CREATE TABLE fact_orders (
          order_id INT,
          customer_key INT,
          product_key INT,
          date_key INT,
          quantity INT,       -- 可加事实
          unit_price DECIMAL  -- 非可加事实(需与数量配合)
      );
      

二、大数据时代架构:Lambda vs Kappa

❖ Lambda架构深度解析

flowchart TB
    subgraph Lambda架构
        A[新数据] --> B[Batch Layer]
        A --> C[Speed Layer]
        B --> D["批处理视图(Hive/Presto)"]
        C --> E["实时视图(Flink/Kafka)"]
        D & E --> F[服务层合并]
        F --> G[统一查询结果]
    end

技术组件实现方案

  • 批处理层

    • 存储:HDFS + Parquet
    • 计算:Spark SQL + Hive Metastore
    • 更新频率:T+1每日批次
  • 速度层

    • 存储:Kafka(原始数据流) + Redis(实时状态)
    • 计算:Flink Streaming + 窗口函数
    • 处理延迟:毫秒级

典型应用场景

  • 电商大促实时看板(实时显示销售额+历史对比)
  • 金融反欺诈(实时规则引擎+离线模型训练)

❖ Kappa架构设计革新

flowchart LR
    A[数据流] --> B[Kafka集群]
    B --> C[流处理引擎]
    C --> D["统一数据视图"]
    D --> E[历史重算]

实现机制创新

  1. 单一数据流存储:所有数据以事件流形式持久化在Kafka(保留7-30天)
  2. 流处理为主:Flink实现批流统一处理
  3. 历史回溯:通过重置offset重新处理全量数据

与Lambda的对比分析

维度LambdaKappa
复杂度高(需维护两套代码)低(单一处理逻辑)
一致性最终一致性精确一次语义(EOS)
成本存储计算双重消耗依赖流系统资源弹性
适用场景需要强历史数据分析实时性要求极高场景

挑战与解决方案

  • 问题:长期历史数据存储在Kafka成本高
  • 解法:将冷数据转存至HDFS/OSS,配合Alluxio加速查询

三、数据湖技术深度对比:Hudi vs Iceberg vs Paimon

❖ 核心功能对比表

能力项Apache HudiApache IcebergApache Paimon
ACID事务支持(基于时间轴)支持(快照隔离)支持(MVCC)
Schema演进有限支持全功能支持支持(兼容Flink CDC)
增量查询原生CDC支持需时间旅行实现流式读取优化
列存格式Parquet/ORCParquet/AVROORC/Parquet
最佳生态位近实时更新(Uber需求)大规模分析(Netflix场景)Flink流批一体(阿里生态)

四、现代数据架构演进图谱

timeline
    title 技术架构演进历史
    1990 : 单体数据库时代(OLTP主导)
    2000 : 传统EDW兴起(Teradata为代表)
    2010 : Hadoop技术爆发(HDFS+MapReduce)
    2015 : Lambda架构成为标配
    2018 : Kappa架构挑战传统
    2020 : 湖仓一体概念提出
    2022 : 实时湖仓实践落地
    2023 : AI原生数据系统萌芽

关键转折点技术突破:

  1. 2012年Hive稳定版发布:使得SQL-on-Hadoop成为可能
  2. 2016年Spark Structured Streaming推出:首次实现微批流处理统一
  3. 2020年Delta Lake开源:数据湖ACID特性实现突破
  4. 2022年Flink CDC发布:实现数据库实时入湖技术标准化

五、企业级架构选型建议

flowchart TD
    A[需求分析] --> B{数据类型}
    B -->|结构化| C[传统数仓]
    B -->|半/非结构化| D[数据湖]
    A --> E{延迟要求}
    E -->|分钟级| F["Hive/Spark"]
    E -->|秒级| G["Flink + Paimon"]
    E -->|亚秒级| H["ClickHouse/Doris"]
    A --> I{预算限制}
    I -->|公有云| J["Snowflake+Databricks"]
    I -->|私有化| K["Hadoop生态自建"]

典型组合方案

  • 金融行业:Hudi(事务处理) + Alluxio(缓存加速) + Presto(即席查询)
  • 物联网:Kafka(数据接入) + Flink(流处理) + Iceberg(存储)
  • 电商实时推荐:Paimon(特征存储) + Flink ML(在线学习) + Redis(特征服务)

需要更深入某个技术细节或场景实践案例,可以继续探讨!