目录
一、常识
二、MapReduce的计算流程
三、MapReduce 的架构
四、MapReduce 案例分析
五、MapReduce 源码分析
六、面试题
一、常识
-
mapreduce必须构建在hdfs之上一种大数据离线计算框架
-
计算向数据靠拢,将计算传递给有数据的节点上进行工作
-
mapreduce不会马上得到结果,他会有一定的延时
2.1复述过程
-
从HDFS上拉取Block用于计算,可能Block小于计算节点的数量,为了动态的调整本次参数计算的节点的数据,为了使得计算块的数量和集群的计算能力匹配,对Block进行split切片 *** 作,split是一种逻辑概念,在不改变现在数据存储的情况下,可以控制参与计算的节点数目。一般切片大小为Block块的整数倍(1/2倍 ,2倍等)。
-
一个split切片对应一个map,及一个MapTask。Map开始从对应的切片读取数据,最终读取的是Block的数据,默认的读取器每次从Block读取一行数据,读到内存中,根据自己写的map方法的逻辑对数据进行拆分计算,这样就会在内存中产生大量的临时文件,产生的临时文件存放在内存的环形数据缓存区中,可以循环利用这个缓冲区,减少数据溢写时的map的停止时间。缓冲区数据到达80%时,数据会经过分区,分区内进行排序然后溢写到磁盘上,然后以溢写的小文件进行合并成一个大的文件。等到ReduceTask来拉取所需要的文件。
-
ReduceTask不同分区拉取道对应的文件后,先进行排序合并 *** 作,合并成为一个大文件后,对这个文件进行reduce *** 作。最后输出对应的计算结果。
2.2MapTask过程
-
包含切分之后的Read,Map,Collect,Spill,Merger五个步骤
-
Hadoop默认为行读取器,读取对应split切片的一行的数据。
-
循环执行用户编写的map(),生成对应的结果,知道读取完毕。
-
map()产生的结果,会被OutputCollector.collect()方法收集,并写入一个环形缓冲区内。
-
环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件,需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等 *** 作。先通过key进行分区,然后分区内排序。ReduceTask拉取时,只需知道数据头,与长度就可以直接拉取到分区对应的数据,不需要排序。
-
Merge(Combine)阶段:当所有数据处理完成后,MapTask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。
2.3ReduceTask过程
-
包含切分之后的Copy,Merge ,Sort ,Spill,Reduce 四个步骤
-
Copy阶段,Reduce不同分区从每一个Map生成的大文件中拉取对应分区的数据。如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。
-
Merger阶段,reduce从每个map生成的的大文件中拉取一段需要的文件,或拉取map的数量个文件。对拉取的所有小文件,进行合并,合并为一个大文件,为了更好的计算与管理。
-
Sort阶段,各个 MapTask 已经实现对自己的处理结果进行了局部排序,因此,ReduceTask 只需对所有数据进行一次归并排序即可。
-
Reduce 阶段:执行自己编写的reduce()函数,将计算结果写到 HDFS 上。
2.4MapReduce 中 shuffle 阶段
-
Shuffle是MapReduce的核心,它分布在map阶段和reduce阶段。一般将Map产生输出开始到Redeuce获得数据作为输入之前的过程叫做shuffle。Shuffle描述着数据从map task流向reduce task的这段过程。
-
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环境上,需要自己开发自己的资源调度框架。
-
-
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动态分配的
-
-
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
-
https://download.csdn.net/download/Iron_M_a_n/70564435
六、面试题-
请说下 MR 中 Map Task 的工作机制
-
请说下 MR 中 Reduce Task 的工作机制
-
请说下 MR 中 shuffle 阶段
-
shuffle 阶段的数据压缩机制了解吗
-
在写 MR 时,什么情况下可以使用规约
-
yarn 集群的架构和工作原理知道多少
-
yarn 的任务提交流程是怎样的
-
yarn 的资源调度三种模型了解吗
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)