大数据系统的构建与高效运行,离不开一系列成熟、稳定且相互协作的基础软件服务。它们是整个数据架构的基石,负责资源的调度、数据的存储、计算任务的执行以及系统的协调与管理。本篇笔记将概述大数据生态中最为核心的几类基础软件服务。
1. 分布式文件系统:海量数据的存储基石
大数据处理的第一个挑战是如何可靠、高效地存储PB乃至EB级别的海量数据。传统的单机文件系统无法满足这一需求,因此,分布式文件系统应运而生。
- 核心代表:Hadoop Distributed File System (HDFS)
- 设计思想:将大文件分割成多个数据块(Block,默认128MB),并将这些块分散存储在一个集群的多个普通商用服务器上。通过多副本机制(默认3副本)来保证数据的可靠性与高可用性。
- NameNode:主节点,负责管理文件系统的命名空间(如目录树、文件元数据)以及数据块到DataNode的映射。它是系统的“大脑”。
- DataNode:从节点,负责存储实际的数据块,并定期向NameNode报告其状态。
- 特点:提供高吞吐量的数据访问,适合一次写入、多次读取的场景,为后续的批处理计算奠定了存储基础。
2. 资源管理与调度系统:集群的“操作系统”
当多个计算框架(如MapReduce、Spark)需要共享同一个庞大的硬件集群时,需要一个“操作系统”来统一管理和分配集群的计算资源(CPU、内存等),这就是资源管理与调度系统。
- 核心代表:Apache YARN (Yet Another Resource Negotiator)
- 角色:YARN将Hadoop 1.0中JobTracker的资源管理和作业调度/监控功能分离开来,成为一个通用的集群资源管理层。
- ResourceManager (RM):全局主节点,负责整个集群的资源管理和分配。
- NodeManager (NM):每个节点上的代理,负责管理单个节点上的资源(启动容器)并报告给RM。
- ApplicationMaster (AM):每个应用程序特有的“管家”,由RM启动,负责向RM申请资源,并与NM协作来执行和监控具体的计算任务。
- 意义:YARN使得Hadoop从单一的计算模式(MapReduce)演变为一个多租户、多应用的数据操作系统,可以同时运行批处理、交互式查询、流处理等多种计算框架。
3. 分布式计算框架:数据价值的挖掘引擎
存储和资源管理之上,是直接对数据进行处理分析的计算框架。根据数据处理时效性的不同,主要分为批处理和流处理两大类。
- 批处理框架:处理静态的、已经存在的大量数据,追求高吞吐量。
- Apache Hadoop MapReduce:经典模型,将计算过程分为Map(映射)和Reduce(归约)两个阶段,编程模型简单,但中间结果需落盘,I/O开销较大。
- Apache Spark:新一代内存计算框架。通过引入弹性分布式数据集(RDD)及其上的丰富算子(Transformations和Actions),将中间结果尽可能保存在内存中,极大地提升了迭代计算和交互式查询的性能。它兼容YARN,并提供了Spark SQL、Spark Streaming等高级模块。
- 流处理框架:处理连续不断产生的实时数据流,追求低延迟。
- Apache Storm:早期的流处理框架,强调消息处理的“至少一次”语义和低延迟。
- Apache Flink:真正意义上的流处理优先框架,将批处理视为有界流。它提供了精确一次(Exactly-once)的状态一致性保证,并在流处理性能上表现优异。
- Apache Spark Streaming:基于Spark的微批处理(Micro-batch)模型,将流数据切成小批次进行处理,易于与批处理代码集成。
4. 协调与治理服务:系统的“神经中枢”
在分布式环境中,各个服务节点需要协同工作,进行配置管理、命名服务、集群同步和领导选举等,这需要分布式协调服务。
- 核心代表:Apache ZooKeeper
- 角色:一个分布式的、开放源码的协调服务,用于维护配置信息、命名、提供分布式同步和提供组服务。
- 数据模型:采用类似文件系统的树形层次结构(ZNode),可以存储少量数据。
- 核心特性:通过Zab协议保证顺序一致性和原子性广播,为客户端提供可靠的分布式锁、领导者选举、配置管理等功能。HDFS的NameNode高可用、YARN的ResourceManager高可用、Kafka的Broker协调等都依赖于ZooKeeper。
###
大数据基础软件服务构成了一个层次化的生态体系:
- HDFS 提供海量、可靠的底层存储。
- YARN 对集群的物理资源进行统一管理和调度。
- MapReduce、Spark、Flink 等计算框架利用YARN分配的资源,对HDFS或其它数据源中的数据进行处理。
- ZooKeeper 作为“粘合剂”,为上述所有分布式组件提供关键的协调与一致性服务。
理解这些基础服务的定位、原理与相互关系,是深入学习大数据技术、构建和优化大数据平台的必经之路。后续笔记将深入探讨这些组件的原理、架构与编程实践。