Hadoop 是一个由 Apache 基金会开发的开源分布式系统基础架构,主要用于存储和处理海量数据。它的核心优势在于能够将大规模数据集分布在普通服务器组成的集群中进行分布式处理,具有高可靠性、高扩展性和高容错性等特点。Hadoop 是大数据技术生态的基石,被广泛用于离线数据分析、日志处理、数据仓库、机器学习等各种大数据场景。
一、Hadoop 的核心组成模块
Hadoop 的主要架构包括以下三大核心组件:
1. HDFS(Hadoop Distributed File System)——分布式文件系统
-
作用:负责将大文件切分成块(block),分布式存储在集群的各个节点上。
-
特点:
-
高容错性:自动保存多个副本(默认3个);
-
高吞吐量:适合批量处理而非随机读写;
-
主从架构:NameNode(管理元数据)+ DataNode(存储实际数据)。
-
2. MapReduce —— 分布式计算框架
-
作用:一种编程模型,用于大规模数据集的并行运算。
-
原理:
-
Map 阶段:将输入数据分割成独立小块,并行处理产生中间结果;
-
Reduce 阶段:对中间结果进行汇总,得到最终结果。
-
-
特点:
-
易于编程(只需实现 Map 和 Reduce 函数);
-
高扩展性,适合处理 PB 级别数据;
-
容错性强,节点失效自动重新调度任务。
-
3. YARN(Yet Another Resource Negotiator)—— 集群资源管理和任务调度系统
-
作用:负责整个集群的资源(CPU、内存等)管理和作业调度。
-
架构:
-
ResourceManager:全局资源管理者;
-
NodeManager:单个节点的资源管理器;
-
ApplicationMaster:每个应用的管理者,负责任务协调。
-
-
优势:
-
支持多种计算框架(如 MapReduce、Spark、Flink 等);
-
更好的资源隔离与调度能力。
-
二、Hadoop 的特点
|
特性 |
描述 |
|---|---|
|
高可靠性 |
数据自动备份,节点宕机不影响整体运行 |
|
高容错性 |
自动检测失败任务并重新调度 |
|
高扩展性 |
可通过简单地增加节点线性扩展存储和计算能力 |
|
低成本 |
可运行在普通商用硬件上,无需昂贵设备 |
|
开源生态 |
拥有丰富的大数据组件支持(如 Hive、HBase、Spark、ZooKeeper 等) |
三、Hadoop 的适用场景
-
海量数据的离线批处理(如日志分析、用户行为分析)
-
构建数据仓库(结合 Hive、Pig 等工具)
-
ETL(抽取-转换-加载)数据处理管道
-
搜索引擎索引构建(如早期百度、Google 使用 Hadoop)
-
机器学习模型训练的数据预处理
四、Hadoop 生态圈常见组件(扩展)
|
组件 |
功能说明 |
|---|---|
|
Hive |
数据仓库工具,提供 SQL-like 查询语言(HQL),底层转为 MapReduce 执行 |
|
Pig |
数据流处理语言(Pig Latin),适合简化 MapReduce 编程 |
|
HBase |
分布式 NoSQL 列存储数据库,适合实时读写大规模稀疏数据 |
|
Spark |
基于内存的分布式计算引擎,兼容 Hadoop,速度更快 |
|
Zookeeper |
分布式协调服务,管理集群配置、命名、同步等 |
|
Flume |
日志收集与聚合工具 |
|
Sqoop |
用于在 Hadoop 与传统数据库(如 MySQL、Oracle)之间传输数据 |
|
Oozie |
工作流调度系统,用于管理 Hadoop 作业的执行顺序和时间 |
五、Hadoop 的部署模式
|
模式 |
说明 |
|---|---|
|
本地模式 |
所有进程运行在单个 JVM 中,用于调试,不涉及分布式 |
|
伪分布式模式 |
所有守护进程运行在本机不同进程中,模拟集群环境 |
|
完全分布式模式 |
多台机器组成集群,各自运行不同守护进程,用于生产环境 |
六、Hadoop 的优缺点
✅ 优点:
-
适合处理大规模数据(TB/PB 级);
-
良好的横向扩展能力;
-
社区活跃,文档丰富,生态成熟;
-
错误容忍能力强,适合长时间运行的批处理任务。
❌ 缺点:
-
不适合低延迟、实时查询场景(需用 HBase、Spark 弥补);
-
批处理模型较重,启动开销大;
-
对小文件处理效率低(NameNode 内存压力大);
-
编程模型较老,MapReduce 编写复杂(可用 Hive/Pig 简化)。
七、简单示例:WordCount 程序(MapReduce)
WordCount 是 Hadoop 的经典入门案例,用于统计文本中每个单词出现的次数。
Mapper 阶段(伪代码):
map(String key, String value):
for each word in value.split(" "):
emit(word, 1)
Reducer 阶段(伪代码):
reduce(String key, Iterator<int> values):
int sum = 0
for each v in values:
sum += v
emit(key, sum)
运行后输出每个单词及其出现次数。
八、Hadoop 的发展趋势
随着技术的发展,虽然 Spark、Flink 等新一代计算引擎在实时性和性能上更具优势,但 Hadoop 依然在以下方面保持重要地位:
-
作为大数据平台的存储底座(HDFS);
-
与 YARN 集成,作为统一资源调度平台;
-
支撑数据仓库、离线分析等传统大数据场景;
-
企业已有大量基于 Hadoop 构建的系统,迁移成本高。
因此,Hadoop 正在从“全能主力”演变为“稳定基石”,与新一代技术共存互补。
九、总结
|
项目 |
内容摘要 |
|---|---|
|
是什么 |
开源分布式系统基础架构,用于处理大规模数据 |
|
核心组件 |
HDFS(存储)、MapReduce(计算)、YARN(资源管理) |
|
特点 |
可靠、容错、扩展、低成本、适合批处理 |
|
适用场景 |
离线分析、日志处理、数据仓库、ETL、搜索引擎等 |
|
生态丰富 |
Hive、HBase、Spark、Zookeeper、Flume、Sqoop 等构成完整生态 |
|
发展趋势 |
仍是大数据基础设施核心,与 Spark/Flink 等协同构建现代数据平台 |

692

被折叠的 条评论
为什么被折叠?



