Hadoop

Hadoop 是 Apache 开源的分布式计算框架,核心解决海量数据的存储与计算问题。采用主从架构,将数据分散存储在普通商用服务器集群上,通过 MapReduce 编程模型实现并行计算。

核心组件:HDFS(分布式文件系统)、MapReduce(计算引擎)、YARN(资源调度)。


核心架构

Client
  │
  ├── YARN ResourceManager(资源总调度)
  │     └── NodeManager × N(各节点资源管理)
  │
  └── HDFS NameNode(元数据管理)
        └── DataNode × N(实际数据存储)

YARN 资源调度

角色职责
ResourceManager全局资源分配,接收作业提交
NodeManager单节点资源上报,启动 Container
ApplicationMaster单个作业的任务拆分与协调
Container实际运行 Map/Reduce Task 的沙箱

MapReduce 计算模型

将计算分为两个阶段:

输入数据
  │
  ▼
Map(并行处理,输出 key-value 对)
  │
  ▼ Shuffle(按 key 排序、分组,网络传输)
  │
  ▼
Reduce(聚合同 key 的数据,输出结果)
  │
  ▼
输出到 HDFS

WordCount 示例逻辑:

Map:   "hello world" → (hello,1), (world,1)
Reduce: (hello,[1,1]) → (hello,2)

集群搭建(伪分布式)

# 配置免密登录
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 
# 格式化 NameNode(首次运行)
hdfs namenode -format
 
# 启动集群
start-dfs.sh
start-yarn.sh
 
# 验证进程(应看到 NameNode DataNode SecondaryNameNode ResourceManager NodeManager)
jps

核心配置文件:

文件作用
core-site.xml指定默认 HDFS 地址
hdfs-site.xml副本数、数据目录
mapred-site.xml指定计算框架为 yarn
yarn-site.xmlResourceManager 地址

常用命令

# 提交 MapReduce 作业
hadoop jar hadoop-mapreduce-examples.jar wordcount /input /output
 
# 查看集群健康状态
hadoop fsck /
 
# 列出所有 NodeManager
yarn node -list
 
# 查看作业历史
mapred job -list

版本演进

版本特点
Hadoop 1.xJobTracker + TaskTracker,单点瓶颈
Hadoop 2.x引入 YARN,计算与资源管理分离
Hadoop 3.x支持纠删码(节省 50% 存储)、NameNode HA 增强

相关链接

  • HDFS — Hadoop 分布式文件系统,负责数据持久化存储
  • Hive — 基于 Hadoop 的 SQL 查询引擎
  • Spark — 内存计算引擎,可替代 MapReduce
  • Flume — 日志采集,数据流入 HDFS 的管道
  • Flink — 实时流计算框架