Hadoop-MapReduce知识点总结

Hadoop-MapReduce知识点总结,第1张

Hadoop-MapReduce知识点总结

目录

一、常识

二、MapReduce的计算流程

三、MapReduce 的架构

四、MapReduce 案例分析

五、MapReduce 源码分析

六、面试题


一、常识
  • mapreduce必须构建在hdfs之上一种大数据离线计算框架

  • 计算向数据靠拢,将计算传递给有数据的节点上进行工作

  • mapreduce不会马上得到结果,他会有一定的延时

二、MapReduce的计算流程

2.1复述过程

  1. 从HDFS上拉取Block用于计算,可能Block小于计算节点的数量,为了动态的调整本次参数计算的节点的数据,为了使得计算块的数量和集群的计算能力匹配,对Block进行split切片 *** 作,split是一种逻辑概念,在不改变现在数据存储的情况下,可以控制参与计算的节点数目。一般切片大小为Block块的整数倍(1/2倍 ,2倍等)。

  2. 一个split切片对应一个map,及一个MapTask。Map开始从对应的切片读取数据,最终读取的是Block的数据,默认的读取器每次从Block读取一行数据,读到内存中,根据自己写的map方法的逻辑对数据进行拆分计算,这样就会在内存中产生大量的临时文件,产生的临时文件存放在内存的环形数据缓存区中,可以循环利用这个缓冲区,减少数据溢写时的map的停止时间。缓冲区数据到达80%时,数据会经过分区,分区内进行排序然后溢写到磁盘上,然后以溢写的小文件进行合并成一个大的文件。等到ReduceTask来拉取所需要的文件。

  3. ReduceTask不同分区拉取道对应的文件后,先进行排序合并 *** 作,合并成为一个大文件后,对这个文件进行reduce *** 作。最后输出对应的计算结果。

2.2MapTask过程

  1. 包含切分之后的Read,Map,Collect,Spill,Merger五个步骤

  2. Hadoop默认为行读取器,读取对应split切片的一行的数据。

  3. 循环执行用户编写的map(),生成对应的结果,知道读取完毕。

  4. map()产生的结果,会被OutputCollector.collect()方法收集,并写入一个环形缓冲区内。

  5. 环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件,需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等 *** 作。先通过key进行分区,然后分区内排序。ReduceTask拉取时,只需知道数据头,与长度就可以直接拉取到分区对应的数据,不需要排序。

  6. Merge(Combine)阶段:当所有数据处理完成后,MapTask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。

2.3ReduceTask过程

  1. 包含切分之后的Copy,Merge ,Sort ,Spill,Reduce 四个步骤

  2. Copy阶段,Reduce不同分区从每一个Map生成的大文件中拉取对应分区的数据。如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。

  3. Merger阶段,reduce从每个map生成的的大文件中拉取一段需要的文件,或拉取map的数量个文件。对拉取的所有小文件,进行合并,合并为一个大文件,为了更好的计算与管理。

  4. Sort阶段,各个 MapTask 已经实现对自己的处理结果进行了局部排序,因此,ReduceTask 只需对所有数据进行一次归并排序即可。

  5. Reduce 阶段:执行自己编写的reduce()函数,将计算结果写到 HDFS 上。

2.4MapReduce 中 shuffle 阶段

  1. Shuffle是MapReduce的核心,它分布在map阶段和reduce阶段。一般将Map产生输出开始到Redeuce获得数据作为输入之前的过程叫做shuffle。Shuffle描述着数据从map task流向reduce task的这段过程。

三、MapReduce 的架构
  1. MapReduce1.x

    • 客户端Client

      • 客户端发送mr任务到集群

    • JobTracker

      • 接受客户端的mr任务,选择一个资源丰富的TaskTracker去执行任务,并且给这个任务分配资源,资源的单位为Slot。

    • TaskTracker

      • 向JobTracker汇报DataNode节点上的资源情况,接到到JobTracker分配资源的指令后,分配对应的资源给Task,监控Task执行情况,并汇报。

    • Slot(槽)

      • 属于JobTracker分配的资源,包括,计算能力,IO等等

      • Slot的资源是恒定的,不灵活但是好管理

    • Task(MapTask--ReduceTask)

    • 1.X架构的缺点

      • 单点故障

      • 内存扩展

      • 业务瓶颈

      • 只能执行MR的 *** 作,如果其他框架需要运行在Hadoop环境上,需要自己开发自己的资源调度框架。

  2. MapReduce2.x

    • 2.X开始,MapReducek开始使用Yarn资源调度框架,更加灵活,不同的框架运行在Hadoop上都可以通过yarn框架进行资源管理分配。

    • ResourceManager资源管理者

      • 资源协调框架的管理者

      • 主备模式,防止单点故障,执行过程与NameNode主备模式一致,主备的切换基于Zookeeper进行管理

      • 当有外部框架要使用资源的时候直接访问ResourceManager即可

      • 有MR任务,先去ResourceManager申请资源,ResourceManager根据汇报相对灵活分配资源

    • NodeManager资源执行者

      • 资源协调框架的执行者

      • 每一个DataNode上默认有一个NodeManager,NodeManager汇报自己的信息到ResourceManager

    • ApplicationMaster

      • Job任务的主导者

      • ResourceManager创建一个任务,分配一个ApplicationMaster

      • 负责调度本次被分配的资源Container

      • 当所有的节点任务全部完成,application告诉ResourceManager请求杀死当前ApplicationMaster线程

    • Container

      • 2.x资源的代名词

      • Container动态分配的

四、MapReduce 案例分析

  • WordCount

  • 天气信息

  • 好友推荐

    • 首先组合直接好友关系,然后组合间接好友关系

    • 判断已经为好友时,分数为0,判断还不为好友,分数加一

    • map就是将关系拆分的过程,分为直接好友,与间件好友,确定好友的顺序,保证可以存放到相同的Reduce

    • reduce 就是,判断已经为好友时,分数为0,判断还不为好友,分数加一

  • PageRank

    • 衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度

    • 过程

      • 首先每个网站默认的权重是一样的

      • 然后将网站的权重平分给当前网站的所有出链

      • 如果一个网站有多个入链,就将本次所有的入链得分累加到一起

      • 那么本次的得分会用于计算下次出链的计算

      • 重复迭代上面的过程,慢慢达到一个收敛值

      • 收敛标准是衡量本次计算精度的有效方法(超过99.9%的网站pr值和上次一样 ,所有的pr差值(本次和上次)累加求平均值不超过 0.01)

      • 停止运算

      • 修正:闭环,只进不出,只出不进的问题

        • 增加阻尼系数

        • 缺点

          • 没有区分站内导航链接

          • 没有过滤广告链接和功能链接

          • 对新网页不友好

        • map:map过程就是拆分的过程,map的输入就是上次reduce的输出

        • redeuce:计算新的PR值,把新的pr值和计算之前的pr比较,循环执行mapReduce,知道到达收敛指标

  • TFIDF

    • IF,词频,一个词对一篇文章的重要程度

    • 公式

    • IDF,逆向文件频率,多篇文章中,一个词语出现的次数越多反而越不重要

    • 公式

    • TFIDF,这个值的大小能够体现它在文本集合中的某一个文档里的重要性。

    • 公式

    • 代码分为三个步骤,计算TF,计算IDF,计算TFIDF

五、MapReduce 源码分析

https://download.csdn.net/download/Iron_M_a_n/70564435

六、面试题
  1. 请说下 MR 中 Map Task 的工作机制

  2. 请说下 MR 中 Reduce Task 的工作机制

  3. 请说下 MR 中 shuffle 阶段

  4. shuffle 阶段的数据压缩机制了解吗

  5. 在写 MR 时,什么情况下可以使用规约

  6. yarn 集群的架构和工作原理知道多少

  7. yarn 的任务提交流程是怎样的

  8. yarn 的资源调度三种模型了解吗

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5683313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存