1.Hadoop是什么

Hadoop 是 Apache 基金会推出的一套 开放源码的分布式系统基础设施。它通过普通硬件组成的计算机集群提供分布式存储和计算能力,使得用户能够在廉价的服务器上处理海量数据。狭义上的 Hadoop 指其核心项目:HDFS、YARN 和 MapReduce;广义上还包括围绕这三大核心项目形成的大数据生态系统


2.Hadoop的特点

Hadoop 之所以成为海量数据处理的主流平台,离不开以下特性

  1. 可扩展性(Scalable):采用分布式架构,可以通过增加普通服务器的方式横向扩展到数百甚至数千个节点,在没有停机时间的情况下应对数据增长。
  2. 经济性(Economical):使用商品硬件并通过网络复制数据,使数据具备冗余安全性,避免昂贵的专有存储设备。
  3. 可靠性(Reliable):数据块会存储多个副本,当某个节点发生故障时,系统能够自动重新部署任务并从其他副本恢复数据,保证计算任务稳定运行
  4. 高效率(Efficient):对大数据进行分块并在多个节点上并行处理,每个节点只处理分配到的部分,显著缩短任务完成时间

3.Hadoop三大发行版本

主流发行版包括 Apache Hadoop、Cloudera CDH 和 Hortonworks HDP

  • Apache Hadoop:Apache 基金会提供的原生开源版本,功能完善,适合学习和开发者使用。
  • Hortonworks HDP:强调开放性和兼容性,提供了丰富的文档和培训,后来与 Cloudera 合并
  • Cloudera CDH:集成了大量大数据组件,提供完整的企业级解决方案,是企业部署大数据平台的常见选择

4.Hadoop组成

Hadoop 的核心由三大组件构成

  • HDFS(分布式文件系统):负责数据存储。
  • MapReduce(分布式计算框架):负责计算任务的编排与执行。
  • YARN(资源管理调度系统):负责集群资源管理和任务调度。

下面分别介绍各个组件的核心概念。

4.1 HDFS

HDFS(Hadoop Distributed File System)是 Hadoop 的基础存储系统,它通过分布式文件系统实现对海量数据的底层存储支持。一个 HDFS 集群由一个 NameNode 和多个 DataNode 组成:

  • DataNode:在各自的本地文件系统中保存数据块以及数据块的校验码。每个 DataNode 会向 NameNode 定期发送心跳信息和块报告,以告知其持有的块信息。
  • NameNode:存储文件的元数据,例如文件名、目录结构、创建时间、副本数量以及每个文件的块列表等。它充当主服务器,负责管理文件系统的命名空间并处理客户端对文件的访问请求。

NameNode 和 DataNode 配合实现数据的分片、存储和副本管理。数据被分割成固定大小的块并存储在不同 DataNode 上,NameNode 负责维护块到节点的映射,保证数据的冗余和可靠性。

4.2 YARN架构

YARN(Yet Another Resource Negotiator)是 Hadoop 的资源管理和任务调度框架。

它将资源管理与作业调度/监控相分离,主要包括以下组件

Container:YARN 中的资源抽象,封装了某个节点上的一段计算资源(如 CPU、内存、磁盘和网络),任务将在容器中运行。

ApplicationMaster(AM):每个应用程序对应一个 AM,它负责将应用划分为任务、向 ResourceManager 申请资源并分配给具体任务,同时监控任务执行进度和处理失败重试

NodeManager(NM):运行在每个工作节点上,负责管理节点资源、执行来自 ResourceManager 的命令,并为 ApplicationMaster 启动和监控任务容器

ResourceManager(RM):集群的资源管理者,负责处理客户端的作业请求、监控各个 NodeManager、启动和监控 ApplicationMaster,并根据队列设置分配资源

通过 ResourceManager 与多个 NodeManager 的协作,YARN 实现了统一的资源管理和灵活的调度,为 MapReduce、Spark、Flink 等应用提供了通用的运行平台。

4.3 MapReduce架构概述

MapReduce 是一种用于大规模数据处理的 编程模型

它将计算分为两个阶段

  1. Map 阶段:将输入数据拆分成多个数据片段,各个 Map 任务在不同节点上并行处理这些数据,生成中间键值对。
  2. Reduce 阶段:按照键对 Map 阶段的输出进行归并和汇总,将相关的数据聚合为最终结果

MapReduce 的核心思想是“分而治之”。输入数据经过 Map 阶段分块并并行处理,随后 Reduce 阶段对中间结果汇总,最终输出得到所需结果。这种模式使程序员可以专注于业务逻辑,由框架负责任务的分发和容错。

5.大数据技术生态体系

除了 Hadoop 核心组件,周围还发展出丰富的生态系统。下表按图中序号简述常见工具及其作用。

编号 工具 作用描述
1 Sqoop 用于在传统关系数据库(如 MySQL、Oracle)和 HDFS 之间高效迁移数据,可将关系型数据导入或导出到 HDFS。
2 Flume 一个分布式、可靠的日志数据采集系统,通常用于收集和传输日志、事件等数据至 Hadoop 集群。
3 Kafka 高吞吐的分布式消息队列,提供发布/订阅功能,可用于异步通信和数据缓冲,在大数据架构中常用于解耦生产者和消费者。
4 Spark 基于内存计算的通用分布式计算框架,支持批处理、流处理、机器学习和图计算,可运行在 Hadoop 集群上。
5 Flink 以实时流处理见长的大数据计算引擎,支持低延迟的数据流和事件驱动应用。
6 Oozie 一个工作流调度系统,用于管理和协调 Hadoop 平台上的各种作业,如 MapReduce、Hive、Pig 等。
7 HBase 构建在 HDFS 上的分布式、列式存储数据库,适用于非结构化或半结构化数据的存储。
8 Hive 数据仓库工具,提供类似 SQL 的查询语言 HiveQL,可以将 SQL 查询转换为 MapReduce 作业执行。
9 ZooKeeper 一个开源的分布式协调服务,常用于维护配置信息、分布式锁和命名服务,为大数据集群提供统一的协调机制。

这些工具与 Hadoop 核心框架共同组成了大数据技术生态体系,提供了从数据采集、存储、计算到分析、调度和协调的完整能力。