第13章

📊 大数据架构

掌握大数据处理流程、架构模式和核心技术,构建高效的大数据处理系统

学习目标

大数据处理流程

大数据处理是一个复杂的端到端流程,涉及数据的采集、存储、处理、分析和可视化等多个环节。每个环节都有其特定的技术挑战和解决方案。

大数据的4V特征

Volume(体量):数据量巨大,从TB到PB级别
Velocity(速度):数据产生和处理速度快
Variety(多样性):数据类型多样,结构化、半结构化、非结构化
Veracity(真实性):数据质量和可信度的挑战

典型处理流程

数据采集 → 数据存储 → 数据处理 → 数据分析 → 数据可视化

每个阶段都需要选择合适的技术栈和架构模式

数据采集
从各种数据源收集数据,包括日志文件、数据库、API、传感器等。
数据存储
将采集的数据存储在分布式存储系统中,确保数据的可靠性和可扩展性。
数据处理
对存储的数据进行清洗、转换、聚合等处理操作。
数据分析
运用统计学、机器学习等方法从数据中提取有价值的信息。

数据采集

数据采集是大数据处理的第一步,需要从多种异构数据源中高效、可靠地收集数据。采集系统需要处理不同的数据格式、传输协议和数据量级。

采集方式分类

实时采集
  • 流式数据采集
  • 事件驱动采集
  • 消息队列采集
  • API实时拉取
批量采集
  • 定时任务采集
  • 数据库同步
  • 文件批量导入
  • ETL工具采集

常用采集工具

采集挑战
  • 数据一致性:确保数据在采集过程中不丢失、不重复
  • 性能优化:处理高并发、大流量的数据采集
  • 容错处理:应对网络故障、系统异常等情况
  • 数据格式:处理多种数据格式和编码方式

数据存储

大数据存储需要解决海量数据的存储、管理和访问问题。不同类型的数据和应用场景需要选择不同的存储方案。

存储类型

分布式文件系统
  • HDFS(Hadoop分布式文件系统)
  • Amazon S3
  • Google Cloud Storage
  • Azure Blob Storage
NoSQL数据库
  • HBase(列式存储)
  • MongoDB(文档存储)
  • Cassandra(宽列存储)
  • Redis(键值存储)
数据仓库
  • Apache Hive
  • Amazon Redshift
  • Google BigQuery
  • Snowflake

存储策略

分层存储
  • 热数据:频繁访问的数据,存储在高性能存储中
  • 温数据:偶尔访问的数据,存储在标准存储中
  • 冷数据:很少访问的数据,存储在低成本存储中
  • 归档数据:长期保存的数据,存储在归档存储中

数据处理

数据处理是大数据架构的核心环节,包括数据清洗、转换、聚合、计算等操作。根据处理时效性可分为批处理和流处理两种模式。

处理模式

批处理

特点:处理大量历史数据,延迟较高但吞吐量大

  • Apache Hadoop MapReduce
  • Apache Spark
  • Apache Flink(批处理模式)
流处理

特点:实时处理数据流,延迟低但处理复杂度高

  • Apache Storm
  • Apache Flink
  • Apache Kafka Streams
  • Apache Spark Streaming

处理框架对比

数据分析

数据分析是从大数据中提取价值的关键步骤,包括描述性分析、预测性分析和处方性分析等不同层次。

分析类型

描述性分析

回答"发生了什么"的问题

  • 数据统计和汇总
  • 趋势分析
  • 报表生成
预测性分析

回答"将会发生什么"的问题

  • 机器学习模型
  • 时间序列预测
  • 风险评估
处方性分析

回答"应该做什么"的问题

  • 优化算法
  • 决策支持
  • 自动化决策

分析工具和平台

Lambda架构

Lambda架构是一种大数据处理架构,通过批处理和流处理两条路径来处理数据,旨在同时满足低延迟和高吞吐量的需求。

Lambda架构 = 批处理层 + 流处理层 + 服务层

架构组成

批处理层(Batch Layer)
  • 处理全量历史数据
  • 生成批视图(Batch Views)
  • 保证数据的准确性和完整性
  • 通常使用Hadoop、Spark等
流处理层(Speed Layer)
  • 处理实时数据流
  • 生成实时视图(Real-time Views)
  • 提供低延迟的数据处理
  • 通常使用Storm、Flink等
服务层(Serving Layer)
  • 合并批视图和实时视图
  • 响应用户查询请求
  • 提供统一的数据访问接口
  • 通常使用HBase、Cassandra等
Lambda架构优势
  • 容错性:批处理层可以修正流处理层的错误
  • 可扩展性:批处理和流处理可以独立扩展
  • 灵活性:支持复杂的数据处理逻辑
  • 数据完整性:批处理保证数据的最终一致性
Lambda架构挑战
  • 复杂性:需要维护两套处理逻辑
  • 一致性:批视图和实时视图的数据一致性
  • 运维成本:需要管理多个系统组件
  • 开发成本:需要实现和维护两套代码

Kappa架构

Kappa架构是Lambda架构的简化版本,只使用流处理来处理所有数据,通过重新处理历史数据来实现批处理的效果。

Kappa架构 = 流处理层 + 服务层

所有数据都通过流处理引擎处理

核心思想

设计理念

将所有数据视为事件流,使用统一的流处理引擎来处理实时数据和历史数据,通过重新处理(Reprocessing)来实现数据的修正和更新。

架构特点

统一处理
  • 只有一套处理逻辑
  • 实时和批处理使用相同代码
  • 简化系统架构
重新处理
  • 支持历史数据重新计算
  • 可以修正处理逻辑错误
  • 保证数据的最终一致性
数据存储
  • 使用日志系统存储原始数据
  • 支持数据回放和重新处理
  • 保证数据的持久性

Kappa vs Lambda

技术选型
  • 流处理引擎:Apache Kafka Streams、Apache Flink
  • 消息系统:Apache Kafka(支持数据回放)
  • 存储系统:支持流式读写的存储系统
  • 监控系统:实时监控处理状态和性能
上一章:NoSQL数据库 返回目录