本文共 1645 字,大约阅读时间需要 5 分钟。
大数据计算系统
一、大数据批处理计算框架
Hadoop 是一个开源的、可靠的、可扩展的分布式并行计算框架,主要包括 MapReduce 离线大数据分析计算引擎、HDFS 分布式文件系统、YARN 任务执行调度资源管理框架、HBase NoSQL 数据库、Hive 分布式数据仓库等。
适用场景
批处理,适用于对大容量静态数据集进行分析,计算过程完成后返回结果。
框架特点
- Map-Reduce 函数模型:并行处理的基本过程包括数据划分、任务分配、执行、结果汇总等。
- API:通过重载 MapReduce 函数实现,例如 wordcount 案例。
- 系统架构:包括客户端节点、JobTracker(主节点)、TaskTracker(工作节点)。
- 运行流程:初始化、作业调度、任务分配、Shuffle、Reduce 等。
- 数据存储机制:基于 HDFS,支持大规模数据存储和读写。
- 事务处理:通过容错机制确保计算过程的正确性。
容错机制
- 节点容错:主节点周期性设置检查点,工作节点失效后重新调度任务。
- 任务容错:TaskTracker 黑名单机制,监控任务执行状态。
二、大数据实时计算框架
1. Storm
适用场景
数据流处理,实时分析新数据和更新数据库,兼具容错性和可扩展性。
框架特点
- Spout 水龙头:从外部数据源读取数据并封装为 Tuple 格式。
- Bolt 状态转换:处理 Tuple,执行过滤、函数操作、Join 等。
- Topology 网络拓扑:Spout 和 Bolt 组成网络,实现流转换。
API
通过定义 Spout 和 Bolt 实现用户逻辑,例如 wordcount 案例。
系统架构
包括 Nimbus(主节点)、Zookeeper(分布式协调组件)、Supervisor(工作节点)、Worker(任务进程)等。
流程优化
基于 Topology 组织流式计算,Bolt 任务通过 Acker 跟踪消息处理结果。
容错机制
- 任务级失败:Bolt、Spout、Acker 等任务失效导致消息处理失败。
- 节点级故障:Worker、Supervisor、Nimbus 等节点失效后重新调度任务。
2. Spark Streaming
适用场景
实时流数据处理,高吞吐量和容错能力强。
框架特点
- DStream 数据流:将实时流分成小批处理作业,每批数据转换为 RDD。
- RDD 操作:基于 Spark Core 的批处理引擎,支持高效的流数据处理。
系统架构
基于 Spark 集群,通过 DStream 操作实现流式计算。
容错机制
- 批量数据复制:数据存储在多个工作节点内存中,容错能力强。
- 检查点机制:定期保存计算状态,支持重新计算。
三、大图计算框架
1. Pregel
概念
图并行计算框架,支持大规模图的高效处理。
框架特点
- Superstep 并行模型:图并行模式,节点间信息传输异步处理。
- 流程优化:从节点聚合消息并发送,减少消息流量。
- 数据存储:持久化数据存储在分布式存储系统中,临时数据存储在本地磁盘。
容错机制
- 检查点机制:定期保存图状态,支持快速恢复。
- 从节点故障恢复:主节点重新分配失效节点的任务。
2. GraphX(基于 Spark)
概念
基于 Spark 的大图计算框架,支持图算法实现。
框架特点
- 顶点表和边表:将图数据存储为两张表,支持高效操作。
- 路由表:通过 RDD 实现高效路由计算。
- 流程优化:基于 Spark Core 的 RDD 操作,实现高效图算法。
容错机制
- 检查点机制:定期保存图状态,支持快速恢复。
- 容错处理:通过数据复制和任务重新分配确保计算正确性。
总结
大数据计算框架根据任务特点和性能需求,提供不同的解决方案。Hadoop 适用于批处理,Storm 和 Spark Streaming 适用于实时计算,而 Pregel 和 GraphX 则专注于大图处理。每种框架都通过容错机制确保计算的可靠性和高效性。
转载地址:http://xaoiz.baihongyu.com/