菜单

大数据处理

相关源文件

概述

本页面记录了后端架构师必备的大数据处理框架、架构和技术。它涵盖了批处理和流处理范式、Hadoop 和 Spark 等主要框架,以及构建可伸缩数据处理系统的架构模式。

有关通常作为大数据应用程序存储的 NoSQL 数据库的信息,请参阅数据库。有关补充大数据处理的搜索技术,请参阅搜索引擎

大数据处理架构

大数据处理系统通常遵循多层架构,以解决处理海量数据的不同方面。

通用架构层

来源:README.md:214-224

处理范式

大数据处理通常分为两种主要范式

范式特性用例关键技术
批处理以高吞吐量处理有限的、有界的数据集历史分析、ETL 作业、日报Hadoop MapReduce, Spark Batch
流处理以低延迟处理连续的、无界的数据实时分析、欺诈检测、监控Storm, Flink, Kafka Streams

Lambda 与 Kappa 架构

来源:README.md:214-224

Hadoop 生态系统

Hadoop 是一个框架,它允许使用简单的编程模型在计算机集群上分布式处理大型数据集。

来源:README.md:220-223

HDFS (Hadoop 分布式文件系统)

HDFS 是 Hadoop 应用程序使用的主要存储系统,设计用于高容错性并提供对应用程序数据的高吞吐量访问。

主要特性

  • 主从架构的分布式文件系统
  • 针对大型文件和流数据访问进行优化
  • 一次写入多次读取的访问模型
  • 内置数据复制以实现容错

架构组件

  • NameNode:管理文件系统命名空间并规范文件访问
  • DataNode:管理附加到运行它们节点的存储

来源:README.md:221

MapReduce

MapReduce 是一种基于 Java 的分布式计算编程模型和处理技术,旨在大型集群上并行处理大量数据。

关键概念:

  • Map:处理输入键/值对以生成中间键/值对
  • Shuffle & Sort:自动执行以收集所有具有相同键的对
  • Reduce:合并所有与相同键关联的中间值

来源:README.md:222

YARN (Yet Another Resource Negotiator)

YARN 是 Hadoop 生态系统中的资源管理和作业调度技术,它将资源管理与处理组件分离。

组件

  • ResourceManager:全局资源调度器
  • NodeManager:每个节点的代理,监控资源并向 ResourceManager 报告
  • ApplicationMaster:与 ResourceManager 协商资源,并与 NodeManager 协作执行任务

来源:README.md:223

流处理框架

流处理允许对连续数据流进行实时或准实时处理。

流处理框架对比

功能StormFlinkKafka Streams
处理模型逐条记录微批处理和流处理
延迟亚秒级亚秒级亚秒级
吞吐量中等中高
状态管理基础高级高级
精确一次语义通过 Trident支持支持
语言支持多选主要使用 JavaJava
集成良好优秀原生 Kafka
容错性消息确认检查点日志复制

来源:README.md:215-218

Storm

Apache Storm 是一个分布式实时计算系统,用于可靠地处理无界数据流。

关键概念:

  • Spouts:数据流的来源
  • Bolts:处理输入流并生成输出流
  • Topology:由 spouts 和 bolts 组成的网络,定义数据流

来源:README.md:216

Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。

主要功能

  • 统一的流处理和批处理
  • 精确一次状态一致性保证
  • 事件时间处理和水位线
  • 用于有状态应用程序升级的保存点
  • 高级窗口支持

来源:README.md:217

Kafka Streams

Kafka Streams 是一个客户端库,用于构建应用程序和微服务,其输入和输出数据存储在 Kafka 集群中。

主要功能

  • 轻量级库(无需集群)
  • 精确一次处理语义
  • 逐条记录处理
  • 内置容错的本地状态存储
  • 与 Kafka 安全集成

来源:README.md:218

流处理应用场景

流处理在以下场景中特别有用

  1. 实时分析:在数据到达时计算指标和统计数据
  2. 异常检测:识别连续数据中的异常模式
  3. 物联网数据处理:处理来自多个设备的传感器数据
  4. 监控:对系统行为进行持续监控
  5. 个性化:根据实时行为调整用户体验

来源:README.md:219

Spark

Apache Spark 是一个统一的用于大规模数据处理的分析引擎,内置了用于 SQL、流处理、机器学习和图处理的模块。

Spark 的关键组件

  1. Spark Core:提供分布式任务分派、调度和基本 I/O 功能的基础,通过围绕 RDD(弹性分布式数据集)抽象的 API 实现。

  2. Spark SQL:用于处理结构化数据的模块,允许通过 DataFrame API 对数据进行 SQL 查询。

  3. Spark Streaming:使用微批处理方式实现实时数据流处理。

  4. MLlib:包含常用算法和实用工具的机器学习库。

  5. GraphX:图计算引擎,基于 RDD 构建以支持图并行计算。

来源:README.md:224

Spark 与 MapReduce 对比

功能SparkMapReduce
处理速度内存处理(快 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服务器端数据处理管道日志处理

数据处理实现模式

在实现大数据处理解决方案时,已有一些模式成为最佳实践

  1. 数据湖架构:以原始格式存储原始数据
  2. 奖章架构(Medallion Architecture):通过青铜层(原始)、白银层(验证)和黄金层(聚合)处理数据
  3. 多语言持久化(Polyglot Persistence):为不同的数据类型和访问模式使用不同的存储技术
  4. 事件溯源(Event Sourcing):将应用程序状态的所有更改存储为事件序列
  5. CQRS (Command Query Responsibility Segregation):分离数据的读写操作

结论

大数据处理是现代后端架构的关键组成部分。通过理解和实现本文档中讨论的适当框架、工具和模式,后端架构师可以构建可扩展、高效的系统,以满足当今数据的数量、速度和多样性要求。

有关具体的实现细节和用例,请参阅相应技术的官方文档,并在设计大数据处理架构时考虑您的具体业务需求。