前哨站/第1章 Hadoop基础知识
第1章 Hadoop基础知识

第1章 Hadoop基础知识

Hadoop 是什么、为什么能处理海量数据、生态里都有谁,以及它和 Spark 的分工。

概念生态应用场景

本章学习目标

  • 能说出 Hadoop 的定义、发展历程与版本变迁
  • 能画出 Hadoop 生态圈的主要组件并说明各自职责
  • 能对比 Hadoop 与 Spark 的差异,判断选型
  • 能举出 Hadoop 在互联网、通信、交通领域的典型应用

本章导览

核心内容

1.1

Hadoop概述

Hadoop 是 Apache 基金会下的一个分布式计算与存储框架,核心解决"海量数据存不下、算不动"的问题。

教材按"什么是 Hadoop → 产生与发展 → 版本变迁 → 基本特性"四步展开,这是理解后续所有组件的前提。

1.1.1

什么是Hadoop

Hadoop 是一个由 Apache 基金会开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。

  • Hadoop 实现了分布式文件系统 HDFS:解决海量数据"存得下"的问题
  • Hadoop 实现了分布式计算框架 MapReduce:解决海量数据"算得快"的问题
  • 两者合起来,让普通 PC 服务器组成的集群具备处理 TB/PB 级数据的能力
一句话记忆:Hadoop = 分布式存储(HDFS)+ 分布式计算(MapReduce)+ 资源调度(YARN)。
1.1.2

Hadoop的产生与发展

Hadoop 最早源于 Google 的三篇论文(GFS、MapReduce、BigTable)与 Apache Nutch 项目。2006 年,Doug Cutting 将 Nutch 中的分布式存储与计算模块独立出来,命名为 Hadoop。

  • 2003–2004 年:Google 发表 GFS 与 MapReduce 论文,奠定理论基础
  • 2006 年:Hadoop 从 Nutch 中独立,成为 Apache 顶级项目
  • 2008 年:Hadoop 在 900 节点集群上刷新 TeraSort 世界纪录
  • 2011 年:Hadoop 1.0 发布,引入 YARN 的前身
  • 2013 年至今:Hadoop 2.x / 3.x,YARN 成为独立资源调度层

💡 这三个论文对应的开源实现就是 HDFS、MapReduce 与 HBase,正好串起本教材第 4、6、8 章。

1.1.3

Hadoop的版本变迁

Hadoop 的版本号变化对应架构的重大调整,理解它才能看懂网上的教程为什么"对不上"。

版本核心特征说明
Hadoop 1.xHDFS + MapReduceMapReduce 既算又管资源,集群规模受限
Hadoop 2.xHDFS + YARN + MapReduceYARN 接管资源调度,可运行 Spark、Storm 等
Hadoop 3.xHDFS + YARN + MapReduce支持纠删码、多 Namenode、Java 8+,本课程使用
本课程使用 Hadoop 3.x。教材第 2 章的集群搭建与高可用配置均基于 3.x。
1.1.4

Hadoop的基本特性

  • 高可靠性:数据多副本(默认 3 份),节点故障自动切换
  • 高扩展性:可在不停机的情况下线性扩展集群节点
  • 高效性:数据并行处理,适合批处理场景
  • 高容错性:任务失败自动重试,数据损坏自动恢复

但 Hadoop 也有明显短板:不适合低延迟的实时查询,不适合大量小文件,不适合频繁修改的数据——这些正是 Hive、HBase、Spark 要补的位。

1.2

Hadoop生态系统

教材用一个"生态圈"把 Hadoop 周边组件串起来。考试和面试最常问的是"每个组件解决什么问题"。

Hadoop 生态圈主要组件
层次组件作用
存储HDFS / HBaseHDFS 存文件;HBase 存随机读写的列式数据
计算MapReduce / Spark / Tez批处理与内存计算
资源调度YARN统一管理 CPU 与内存,让多框架共用一个集群
数据仓库Hive用 SQL 分析 HDFS 上的数据
数据采集Flume / SqoopFlume 采日志流;Sqoop 在关系库与 HDFS 间搬运
协调服务ZooKeeper分布式锁、选主、配置管理,HA 集群的基础
1.2.1

生态圈各组件分工

记住一条判断法则:<b>存数据找 HDFS/HBase,算数据找 MapReduce/Spark,调度找 YARN,用 SQL 找 Hive,搬数据找 Sqoop/Flume。</b>

💡 本课程的实验顺序就是按这个生态展开的:先装集群(第2章),再学 HDFS(第4章),然后 MapReduce(第6章)、Hive(第7章)、HBase(第8章)、Spark(第9章)。

1.3

Hadoop与Spark对比分析

教材专门用一节做对比,因为"什么时候用 Hadoop、什么时候用 Spark"是选型的核心问题。

对比项MapReduceSpark
计算模型磁盘迭代,两阶段(Map/Reduce)内存计算,DAG 有向无环图
速度相对慢(中间结果落 HDFS)快 10~100 倍(中间结果在内存)
适用场景大批量离线批处理迭代计算、交互式查询、流计算
易用性需写 Map/Reduce 类提供算子 API(map/filter/reduceByKey)
容错任务重算,天然容错RDD 血缘重算
二者不是替代关系:Spark 通常< b>跑在 YARN 上,数据仍存在 HDFS 中。
1.4

Hadoop的应用场景

  • 互联网:用户行为日志分析、搜索索引构建、推荐系统的离线特征
  • 通信:通话详单分析、基站流量统计、用户画像
  • 交通:卡口过车数据、公交刷卡分析、路况与客流预测

这些场景的共同点是:<b>数据量大、一次写入多次读取、允许分钟级延迟</b>——正好是 Hadoop 的舒适区。

本章小结

本章从"什么是 Hadoop"出发,梳理了它的产生背景、版本演进与四大特性,用生态圈图讲清了 HDFS、YARN、MapReduce、Hive、HBase、Spark、ZooKeeper、Sqoop 等组件各自的职责,并通过与 Spark 的对比说明选型思路,最后给出互联网、通信、交通三类典型应用场景。

思考与练习 先自己做,再点开答案

01

Hadoop 的两个核心组件分别解决什么问题?

查看参考答案

HDFS 解决海量数据分布式存储问题(数据切块、多副本、跨节点存放);MapReduce 解决海量数据分布式计算问题(把计算搬到数据所在节点,分而治之)。

02

为什么说 Hadoop 不适合处理大量小文件?

查看参考答案

HDFS 中每个文件、目录、数据块在 NameNode 内存中都约占 150 字节元数据。大量小文件会让 NameNode 内存被元数据撑爆,同时每个小文件都会启动一个 Map 任务,任务启动开销远大于数据处理本身。

03

Hadoop 1.x 与 2.x 的主要区别是什么?

查看参考答案

1.x 中 MapReduce 既负责计算又负责资源调度(JobTracker/TaskTracker),集群规模受限、只支持 MapReduce;2.x 引入 YARN 专门做资源调度,MapReduce 只负责计算,从此一个集群可以同时运行 MapReduce、Spark、Storm 等多种框架。

04

Spark 比 MapReduce 快的主要原因?

查看参考答案

① 中间结果放内存而不是落磁盘;② 用 DAG 统一优化整个作业,减少不必要的 Shuffle;③ 提供更丰富的算子,避免拆成多轮 MapReduce。