Hadoop = HDFS(分布式⽂件系统) + MapReduce(分布式计算框架) + Yarn(资源协调框架) + Common模块
1. HDFS
1.1 定义
Hadoop Distribute File System 是⼀个高可靠、高吞吐的 分布式 文件系统
1.2 原理
HDFS 面向数据存储,其核心是 基于 块机制 和 副本机制 的 数据存储策略
- 核心思想:分治
- 存入原理:数据切割 --> 制作副本 --> 分散储存
- 读取原理:获取位置 --> 分别下载 --> 数据拼接
以100T数据存储为例,利用数据切割方法,将其拆分为若干个10G大小的数据块,每个电脑节点存储一个数据块
1.3 结构
HDFS 是典型的 Master / Slave 主从节点结构
NameNode(NN)
职责:存储HDFS元数据
比如:文件名、文件目录结构、文件属性(生成时间、副本数、权限)、文件的块列表(包括块所在的DataNode)SecondaryNameNode(2NN)
NameNode的辅助程序
职责:监控HDFS状态,周期性保存HDFS元数据快照DataNode(DN)
职责:存储块数据,校验块数据
注意:NN,2NN,DN 即是角色名称、进程名称,同时也代指电脑节点名称
2. MapReduce
2.1 定义
Hadoop MapReduce 是⼀个 分布式 离线 并行计算 框架
2.2 原理
MR 面向数据计算,其核心是 并行计算策略
- 核心思想:分治
- 计算原理:分解任务 --> 并行计算 --> 汇总结果
MapReduce = Map阶段 + Reduce阶段
- Map阶段:“分” -- 并行处理输入数据
- Reduce阶段:“合” -- 对处理结果进行汇总
3. Yarn
3.1 定义
Hadoop Yarn 是⼀个 作业调度 与 集群资源管理 框架
3.2 意义
计算结果要在所有 Reduce 任务结束后才能得出,而 Reduce 任务要在所有 Map 任务结束后才能执行
因此需要对 Map 任务 和 Reduce 任务 进行合理调度,为它们分配合理的资源,才能尽快完成计算
3.3 原理
Yarn 面向集群调度,其核心是 计算资源分配策略
同样也是典型的 Master / Slave 结构
ResourceManager(RM)
身份:老板
职责:1. 处理客户端请求 -- 接生意
2. 启动 / 监控 ApplicationMaster -- 派出秘书(眼线)安插在各个部门,听取秘书报告
3. 监控 NodeManager -- 听取各部门经理的报告
2. 资源分配调度 -- 分配人力、物资ApplicationMaster(AM)
身份:秘书(老板直辖)
职责:1. 数据切分 -- ?
2. 为应用程序申请资源 -- 向老板汇报
3. 将申请到的资源分配给内部任务、任务监控与容错NodeManager(NM)
身份:经理
职责:1. 负责单个节点的资源管理 -- 管理自己的部门
2. 处理 ResourceManager 的命令 -- 听老板的指挥
3. 处理 ApplicationMaster 的命令 -- 听老板秘书的指挥Container
虚拟资源:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息
4. Common
Hadoop Common 是支持其他模块的工具模块(包括:Configuration、RPC、序列化机制、日志操作等)