博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapReduce的那些事
阅读量:6277 次
发布时间:2019-06-22

本文共 1619 字,大约阅读时间需要 5 分钟。

hot3.png

1.mapreduce简介

这里写图片描述

2.MapReduce的工作原理

2.1 wordcount测试

在执行wordcount时,首先将文件上传到hdfs上,运行jar开启Runjar进程,然后开启MRAppMaster进程,此进程管理任务,充当老大。然后再计算时由YarnChild进程计算,执行完则向MRAppMaster汇报,其中RunJar代表客户端进程,ResourceManager代表服务端进程,而ResourceManage负责将任务分给下属NodeManager,NodeManager领导任务会开启一个进程执行任务,此进程为YarnChild

2.2工作机制
首先客户端与服务端在通信的时候,服务端会返回给客户端一个路径,然后客户端根据这个路径将文件上传到hdfs上,客户端领到任务,然后客户端将任务描述发给服务端(jar包存放在那里,任务的ID是什么等信息),ResourceManager将任务初始化,然后NodeManager会主动去领任务,会将机器的cpu 内存等信息发送给ResourceManager,如果这些信息被ResourceManager认为这台机器很忙了,则这个任务不派送,分给其他的空闲机器,这里面有一种“心跳机制”,相当于隔多长时间跳一次,多长时间去领次任务,NodeManager去hdfs下载class文件,这时候yarnchild会切分任务,map负责切分与执行任务,而reduce负责写回任务
ResourceManager不会主动分配任务,NodeManager领取任务可以提高工作效率,如果每次都是老大分配任务,小弟干完了活没事干 ,整个项目效率低下
这里写图片描述

3.任务处理

3.1map

这里写图片描述
3.2reduce
这里写图片描述

4.MR流程

4.1.代码编写

4.2.作业配置
可配置全局的作业(mared-site.xml),或者针对个别的设置,如reduce可设置多个任务
4.3.提交作业
提交jar包的描述信息到resourcemanager(RPC机制)
4.4.初始化作业
客户端构建一个对象(服务端代理对象),可以RPC通信,将jar包写入到hdfs,将jar包描述信息提交给resourcemanager,然后进行初始化,任务放入到调度器,nodemanager到resourcemanager领取任务
4.5.分配任务
心跳机制:nodemanager每隔一段时间询问,resourcemanager进行任务分配
4.6.执行任务
nodemanager下载hdfs的jar包,然后启动yarnChild进程,
4.7. 更新任务的状态
4.8.回写信息

5.作业提交的源码分析

submit()->connect():客户端跟服务端进行连接,cluster(集群)作为Job的成员变量

5.1构建cluster
clientProtocol client;
client作为cluster的成员变量,clientProtocol作为一个接口代理类,拥有 必须的versionID字段,将代理对象赋给client,cluster拥有服务端代理对象,Job又持有cluster的引用
5.2返回作业路径
是通过mr的一些常量拼接的,一些jar包会放入到这个路径中,会隔一段时间清理jar包
,然后创建作业存放路径,使用服务端代理对象获得的jobid与上面获得的路径(前缀)拼接,形成一个作业对应唯一的一个路径
配置job可设置副本,默认为10,在mared-site.xml中,在mr的core包下,可直接用configration设置setInt();将jar包写入到hdfs上
5.3作业提交到resourcemanager
将jobid和提交的路径,并进行resourcemanager的初始化

转载于:https://my.oschina.net/lzhaoqiang/blog/547607

你可能感兴趣的文章
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
RestTemplate 使用总结
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
C++零基础教程(一)——何谓编程
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
使用rsync的文件和目录排除列表
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
设置 SecureCRT RZ 默认目录
查看>>
逆波兰表达式求值 javascript版
查看>>
SO_KEEPALIVE
查看>>