本页面记录了后端架构师必备的大数据处理框架、架构和技术。它涵盖了批处理和流处理范式、Hadoop 和 Spark 等主要框架,以及构建可伸缩数据处理系统的架构模式。
有关通常作为大数据应用程序存储的 NoSQL 数据库的信息,请参阅数据库。有关补充大数据处理的搜索技术,请参阅搜索引擎。
大数据处理系统通常遵循多层架构,以解决处理海量数据的不同方面。
来源:README.md:214-224
大数据处理通常分为两种主要范式
| 范式 | 特性 | 用例 | 关键技术 |
|---|---|---|---|
| 批处理 | 以高吞吐量处理有限的、有界的数据集 | 历史分析、ETL 作业、日报 | Hadoop MapReduce, Spark Batch |
| 流处理 | 以低延迟处理连续的、无界的数据 | 实时分析、欺诈检测、监控 | Storm, Flink, Kafka Streams |
来源:README.md:214-224
Hadoop 是一个框架,它允许使用简单的编程模型在计算机集群上分布式处理大型数据集。
来源:README.md:220-223
HDFS 是 Hadoop 应用程序使用的主要存储系统,设计用于高容错性并提供对应用程序数据的高吞吐量访问。
主要特性
架构组件
来源:README.md:221
MapReduce 是一种基于 Java 的分布式计算编程模型和处理技术,旨在大型集群上并行处理大量数据。
关键概念:
来源:README.md:222
YARN 是 Hadoop 生态系统中的资源管理和作业调度技术,它将资源管理与处理组件分离。
组件
来源:README.md:223
流处理允许对连续数据流进行实时或准实时处理。
| 功能 | Storm | Flink | Kafka Streams |
|---|---|---|---|
| 处理模型 | 逐条记录 | 微批处理和流处理 | 流 |
| 延迟 | 亚秒级 | 亚秒级 | 亚秒级 |
| 吞吐量 | 中等 | 高 | 中高 |
| 状态管理 | 基础 | 高级 | 高级 |
| 精确一次语义 | 通过 Trident | 支持 | 支持 |
| 语言支持 | 多选 | 主要使用 Java | Java |
| 集成 | 良好 | 优秀 | 原生 Kafka |
| 容错性 | 消息确认 | 检查点 | 日志复制 |
来源:README.md:215-218
Apache Storm 是一个分布式实时计算系统,用于可靠地处理无界数据流。
关键概念:
来源:README.md:216
Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。
主要功能
来源:README.md:217
Kafka Streams 是一个客户端库,用于构建应用程序和微服务,其输入和输出数据存储在 Kafka 集群中。
主要功能
来源:README.md:218
流处理在以下场景中特别有用
来源:README.md:219
Apache Spark 是一个统一的用于大规模数据处理的分析引擎,内置了用于 SQL、流处理、机器学习和图处理的模块。
Spark Core:提供分布式任务分派、调度和基本 I/O 功能的基础,通过围绕 RDD(弹性分布式数据集)抽象的 API 实现。
Spark SQL:用于处理结构化数据的模块,允许通过 DataFrame API 对数据进行 SQL 查询。
Spark Streaming:使用微批处理方式实现实时数据流处理。
MLlib:包含常用算法和实用工具的机器学习库。
GraphX:图计算引擎,基于 RDD 构建以支持图并行计算。
来源:README.md:224
| 功能 | Spark | MapReduce |
|---|---|---|
| 处理速度 | 内存处理(快 10-100 倍) | 基于磁盘的处理 |
| 编程模型 | 具有丰富 API 的函数式编程 | Map 和 Reduce 函数 |
| 实时处理 | 通过 Spark Streaming 支持 | 不支持 |
| 迭代算法 | 通过内存缓存高效处理 | 由于磁盘 I/O 效率低下 |
| 易用性 | 高级 API,多语言支持 | 更复杂,主要使用 Java |
| 恢复 | 基于血缘的恢复 | 基于复制的恢复 |
| 内存需求 | 较高 | 较低 |
来源:README.md:222-224
高效的大数据处理需要可靠的数据摄取工具来收集、处理和传输数据从源到处理系统。
| 工具 | 描述 | 最佳用途 |
|---|---|---|
| Apache Kafka | 分布式流平台 | 高吞吐量实时数据管道 |
| Apache Flume | 用于收集、聚合和移动日志数据的分布式服务 | 日志聚合 |
| Apache Sqoop | 用于在 Hadoop 和关系型数据库之间传输数据的工具 | 数据库集成 |
| Apache NiFi | 用于自动化系统间数据移动的数据流系统 | 复杂的 ETL 工作流 |
| Logstash | 服务器端数据处理管道 | 日志处理 |
在实现大数据处理解决方案时,已有一些模式成为最佳实践
大数据处理是现代后端架构的关键组成部分。通过理解和实现本文档中讨论的适当框架、工具和模式,后端架构师可以构建可扩展、高效的系统,以满足当今数据的数量、速度和多样性要求。
有关具体的实现细节和用例,请参阅相应技术的官方文档,并在设计大数据处理架构时考虑您的具体业务需求。