跳到主要内容

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 架构概述开始你的学习之旅。