📊 大数据架构
掌握大数据处理流程、架构模式和核心技术,构建高效的大数据处理系统
学习目标
- 理解大数据处理的基本流程和挑战
- 掌握数据采集、存储、处理和分析的核心技术
- 学习Lambda架构和Kappa架构的设计原理
- 了解大数据生态系统的主要组件和工具
大数据处理流程
大数据处理是一个复杂的端到端流程,涉及数据的采集、存储、处理、分析和可视化等多个环节。每个环节都有其特定的技术挑战和解决方案。
Volume(体量):数据量巨大,从TB到PB级别
Velocity(速度):数据产生和处理速度快
Variety(多样性):数据类型多样,结构化、半结构化、非结构化
Veracity(真实性):数据质量和可信度的挑战
典型处理流程
数据采集 → 数据存储 → 数据处理 → 数据分析 → 数据可视化
每个阶段都需要选择合适的技术栈和架构模式
数据采集
数据采集是大数据处理的第一步,需要从多种异构数据源中高效、可靠地收集数据。采集系统需要处理不同的数据格式、传输协议和数据量级。
采集方式分类
- 流式数据采集
- 事件驱动采集
- 消息队列采集
- API实时拉取
- 定时任务采集
- 数据库同步
- 文件批量导入
- ETL工具采集
常用采集工具
- Apache Flume:分布式日志采集系统,支持多种数据源
- Apache Kafka:高吞吐量的分布式消息系统
- Logstash:数据收集引擎,支持多种输入输出
- Filebeat:轻量级日志采集器
- Sqoop:Hadoop和关系数据库之间的数据传输工具
- 数据一致性:确保数据在采集过程中不丢失、不重复
- 性能优化:处理高并发、大流量的数据采集
- 容错处理:应对网络故障、系统异常等情况
- 数据格式:处理多种数据格式和编码方式
数据存储
大数据存储需要解决海量数据的存储、管理和访问问题。不同类型的数据和应用场景需要选择不同的存储方案。
存储类型
- HDFS(Hadoop分布式文件系统)
- Amazon S3
- Google Cloud Storage
- Azure Blob Storage
- 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
处理框架对比
- Hadoop MapReduce:成熟稳定的批处理框架,适合大规模数据处理
- Apache Spark:内存计算框架,支持批处理和流处理,性能优异
- Apache Flink:低延迟流处理框架,支持事件时间处理
- Apache Storm:实时流处理框架,保证数据处理的可靠性
数据分析
数据分析是从大数据中提取价值的关键步骤,包括描述性分析、预测性分析和处方性分析等不同层次。
分析类型
回答"发生了什么"的问题
- 数据统计和汇总
- 趋势分析
- 报表生成
回答"将会发生什么"的问题
- 机器学习模型
- 时间序列预测
- 风险评估
回答"应该做什么"的问题
- 优化算法
- 决策支持
- 自动化决策
分析工具和平台
- Apache Spark MLlib:分布式机器学习库
- TensorFlow:深度学习框架
- Apache Mahout:可扩展的机器学习库
- R/Python:数据科学编程语言
- Jupyter Notebook:交互式数据分析环境
Lambda架构
Lambda架构是一种大数据处理架构,通过批处理和流处理两条路径来处理数据,旨在同时满足低延迟和高吞吐量的需求。
Lambda架构 = 批处理层 + 流处理层 + 服务层
架构组成
- 处理全量历史数据
- 生成批视图(Batch Views)
- 保证数据的准确性和完整性
- 通常使用Hadoop、Spark等
- 处理实时数据流
- 生成实时视图(Real-time Views)
- 提供低延迟的数据处理
- 通常使用Storm、Flink等
- 合并批视图和实时视图
- 响应用户查询请求
- 提供统一的数据访问接口
- 通常使用HBase、Cassandra等
- 容错性:批处理层可以修正流处理层的错误
- 可扩展性:批处理和流处理可以独立扩展
- 灵活性:支持复杂的数据处理逻辑
- 数据完整性:批处理保证数据的最终一致性
- 复杂性:需要维护两套处理逻辑
- 一致性:批视图和实时视图的数据一致性
- 运维成本:需要管理多个系统组件
- 开发成本:需要实现和维护两套代码
Kappa架构
Kappa架构是Lambda架构的简化版本,只使用流处理来处理所有数据,通过重新处理历史数据来实现批处理的效果。
Kappa架构 = 流处理层 + 服务层
所有数据都通过流处理引擎处理
核心思想
将所有数据视为事件流,使用统一的流处理引擎来处理实时数据和历史数据,通过重新处理(Reprocessing)来实现数据的修正和更新。
架构特点
- 只有一套处理逻辑
- 实时和批处理使用相同代码
- 简化系统架构
- 支持历史数据重新计算
- 可以修正处理逻辑错误
- 保证数据的最终一致性
- 使用日志系统存储原始数据
- 支持数据回放和重新处理
- 保证数据的持久性
Kappa vs Lambda
- 简化性:Kappa架构更简单,只需维护一套处理逻辑
- 一致性:避免了批处理和流处理结果不一致的问题
- 实时性:所有处理都是实时的,没有批处理的延迟
- 适用场景:适合对实时性要求高、数据量相对较小的场景
- 流处理引擎:Apache Kafka Streams、Apache Flink
- 消息系统:Apache Kafka(支持数据回放)
- 存储系统:支持流式读写的存储系统
- 监控系统:实时监控处理状态和性能