跳到主要内容

Apache Hadoop 教程

欢迎学习 Apache Hadoop!本教程将带你从零基础开始,全面掌握 Hadoop 的核心知识和技能。

什么是 Apache Hadoop?

Apache Hadoop 是一个开源的分布式计算平台框架,由 Apache 软件基金会开发。它能够在普通商用服务器集群上存储和处理大规模数据,是大数据技术生态的核心基石。

Hadoop 的核心设计理念是将计算推向数据,而非传统方式中将数据推向计算。这种设计使得 Hadoop 能够高效处理 PB 级别的海量数据。

核心定义

从技术角度来看,Hadoop 实现了分布式系统的三大核心能力:

  1. 分布式存储:通过 HDFS 将海量数据分散存储在集群节点上
  2. 分布式计算:通过 MapReduce 实现数据的并行处理
  3. 资源管理:通过 YARN 统一管理和调度集群资源

Hadoop 与传统数据处理系统的区别

特性Hadoop传统数据处理系统
数据规模PB 级别TB 级别
硬件要求普通商用服务器高端专用服务器
扩展方式水平扩展(加机器)垂直扩展(升级硬件)
容错机制自动故障恢复需要人工干预
数据模型先存储后定义模式先定义模式后存储
处理模式批处理为主实时处理为主

Hadoop 的应用场景

1. 数据仓库与离线分析

Hadoop 可以作为企业级数据仓库的基础平台:

  • 存储历史业务数据,支持复杂的数据分析
  • 构建数据集市,支撑 BI 报表和决策分析
  • 数据挖掘和机器学习的数据准备

2. 日志处理与分析

集中收集和处理各类日志数据:

  • 服务器日志、应用日志的集中存储和分析
  • 用户行为日志的采集和处理
  • 系统监控日志的聚合和分析

3. 推荐系统

支撑大规模推荐系统的数据处理:

  • 用户行为数据的收集和处理
  • 特征工程和数据清洗
  • 推荐模型的训练数据准备

4. 搜索引擎

构建大规模搜索引擎的后端:

  • 网页数据的抓取和存储
  • 倒排索引的构建
  • 搜索结果的排序和计算

5. 数据湖

构建企业级数据湖:

  • 统一存储结构化和非结构化数据
  • 支持多种数据访问方式
  • 数据治理和元数据管理

Hadoop 核心组件

Hadoop 由三大核心组件构成,它们各司其职又紧密协作:

HDFS(Hadoop Distributed File System)

HDFS 是 Hadoop 的分布式文件存储系统,设计目标是在普通硬件上提供高吞吐量的数据访问。

核心特性:

  • 高容错性:通过数据多副本机制保证可靠性
  • 高吞吐量:针对大规模数据访问进行优化
  • 适合大文件:设计用于存储 GB 到 TB 级别的大文件
  • 流式访问:一次写入,多次读取的数据访问模式

MapReduce

MapReduce 是 Hadoop 的分布式计算框架,采用分而治之的思想处理大规模数据。

核心特性:

  • 简单编程模型:开发者只需实现 Map 和 Reduce 函数
  • 自动并行化:框架自动将任务分配到集群节点执行
  • 容错机制:自动处理节点故障和任务重试
  • 数据本地化:计算任务在数据所在节点执行

YARN(Yet Another Resource Negotiator)

YARN 是 Hadoop 2.x 引入的资源管理系统,负责集群资源的统一管理和调度。

核心特性:

  • 资源统一管理:CPU、内存等资源的统一调度
  • 多框架支持:支持 MapReduce、Spark、Flink 等多种计算框架
  • 隔离性:不同应用程序之间的资源隔离
  • 可扩展性:支持大规模集群部署

Hadoop 版本演进

主要版本对比

版本发布时间主要特性
Hadoop 1.x2011HDFS + MapReduce,资源管理与计算耦合
Hadoop 2.x2013引入 YARN,实现资源调度与计算分离;HDFS 高可用
Hadoop 3.x2017纠删码存储优化、多 NameNode 支持、容器化优化

Hadoop 3.x 新特性(推荐使用)

Hadoop 3.x 相比 2.x 版本带来了重大改进:

存储优化:

  • 纠删码(Erasure Coding):相比多副本机制节省约 50% 存储空间
  • 异构存储:支持 SSD、内存、磁盘等多种存储介质

高可用增强:

  • 支持多个 NameNode(2.x 最多 2 个,3.x 可以更多)
  • Observer NameNode:提供读操作的负载均衡

性能提升:

  • MapReduce 任务级优化
  • YARN 容器资源自动调整

容器化支持:

  • 原生支持 Docker 容器
  • Kubernetes 集成优化

Hadoop 生态系统

Hadoop 生态系统包含众多组件,共同构建完整的大数据处理平台:

数据采集层

组件功能说明
Flume日志采集从多种数据源收集日志数据传输到 HDFS
Sqoop数据迁移关系型数据库与 Hadoop 之间的数据传输
Kafka消息队列高吞吐量的分布式消息系统

数据存储层

组件功能说明
HDFS文件存储分布式文件系统,存储大文件
HBaseNoSQL 数据库基于 HDFS 的分布式列式存储
Hive数据仓库提供 SQL 接口查询 HDFS 数据

计算引擎层

组件功能说明
MapReduce批处理离线批处理计算框架
Spark内存计算快速的大数据处理引擎
Flink流处理实时流处理框架

协调服务

组件功能说明
ZooKeeper分布式协调提供配置管理、分布式锁、集群管理等功能

教程目录

基础入门

HDFS 分布式文件系统

MapReduce 分布式计算

YARN 资源管理

高级主题

学习建议

1. 理解分布式思想

Hadoop 的核心是分布式系统的设计思想。学习时要重点关注:

  • 数据如何分片和分布存储
  • 计算如何并行执行
  • 故障如何检测和恢复
  • 一致性如何保证

2. 动手实践

理论学习必须结合实践:

  • 搭建单机和伪分布式环境
  • 编写 MapReduce 程序
  • 操作 HDFS 文件系统
  • 配置 YARN 资源调度

3. 关注生态整合

Hadoop 很少单独使用,需要了解:

  • Hive 如何将 SQL 转换为 MapReduce
  • HBase 如何利用 HDFS 存储数据
  • Spark 如何运行在 YARN 上

4. 阅读官方文档

官方文档是最权威的参考资料:

参考资料

准备好开始学习了吗?让我们从 Hadoop 架构概述开始你的学习之旅。