Hadoop 的核心(2)—— MapReduce & YARN

MapReduce 简介

MapReduce 是一种编程模型,是一种编程方法,是抽象的理论。

YARN 概念

YARN 是 Hadoop 2.0 版本以后的资源管理器,即 MapReduce 2.0,相比于 1.0 版本,架构中的各个模块分工明确,在性能和稳定性上都有所提升。YARN 负责整个集群资源的管理和调度,也就是说所有的 MapReduce 都需要通过它来进行调度,支持多种计算框架。

Hadoop 的核心(2)—— MapReduce & YARN_第1张图片

YARN 的几个概念:

  • ResourceManager
  • ApplicationMaster
  • NodeManager

1、ResourceManager

  • 负责接受客户端提交的 job,分配和调度资源
  • 启动 ApplicationMaster,判断 job 所需资源
  • 监控 ApplicationMaster,在其失败的时候进行重启
  • 监控 NodeManager

2、ApplicationMaster

  • 为 MapReduce 类型的程序申请资源,并分配任务
  • 负责相关数据的切分
  • 监控任务的执行及容错

3、NodeManager

  • 管理单个节点的资源,向 ResourceManager 进行汇报
  • 接收并处理来自 ResourceManager 的命令
  • 接收并处理来自 ApplicationMaster 的命令

MapReduce 编程模型

  • 场景:输入一个大型文件,通过 split 将其分成多个文件分片
  • Map:每个文件分片由单独的机器进行处理,这就是 Map 方法
  • Reduce:将各个机器的计算结果进行汇总,得到最终的结果,这就是 Reduce 方法

Map 任务处理

  1. 读取输入文件的内容,解析成键值对,把文件的每一行解析成键值对,每个键值对调用一次 map 函数;(Input)
  2. 写自定义的逻辑,对输入的键值对进行处理,转换成新的键值对输出;(Map)
  3. 对不同分区的数据,按照键(key)进行排序和分组,key 相同的值(value)放到一个集合中;(Sort -> Combine)
  4. 把输出的键值对(此时只是中间结果)按照 key 的范围进行分区处理;(Partition)
  5. 分组后的数据进行 reduce 处理。

Reduce 任务处理

  1. 对多个 map 任务的输出,按照不同分区,通过网络 copy 到不同的 reduce 节点;
  2. 对多个 map 任务的输出进行合并和排序,自定义 reduce 函数的逻辑,对输入的键(key)和值(value)进行处理,转换成新的键值对输出;(Reduce)
  3. 把 reduce 的输出保存到文件中。(Output)

MapReduce 的整个工作流程可以归结为:

Input -> Map -> Sort -> Combine -> Partition -> Reduce -> Output

 

欢迎关注我的知乎专栏【数据池塘】,专注于分享机器学习、数据挖掘干货:https://zhuanlan.zhihu.com/datapool

 

⬇️ 微信公众号 ⬇️

你可能感兴趣的:(数据科学)