搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
博客
群组
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云
»
专题
›
交流区
›
技术交流
›
MapReduce
›
转发,MapReduce的工作机制
0
0
1
分享
转发,MapReduce的工作机制
chuyuan_zhou
发表于 2014-12-8 17:57:25
[显示全部楼层]
只看大图
阅读模式
关闭右栏
0
8486
MapReduce作业的运行过程如图6-1所示。包含4个独立的实体:(1)Client:提交MapReduce作业,(2)JobTracker:协调作业的运行。(3)TaskTracker:运行作业划分后的Map任务或Reduce任务。(4)Shared FileSystem(一般为HDFS),用来在其他实体间共享作业文件。
1.作业的提交
Job的waitForCompletion(true)方法所实现的作业提交过程如下:向jobtracker请求一个新的作业ID,见步骤2。检查作业的输出说明。计算作业的InputSplit。将运行作业所需要的资源(包括作业JAR文件、配置文件和计算所得的输入文件)复制到一个以作业ID命名的目录下jobtracker的文件系统。作业JAR的副本由mapred.submit.replication属性控制(默认值为10),见步骤3。告知jobtracker作业准备执行,见步骤4。
2.作业初始化
JobTracker会把作业放入一个内部队列中,交由job scheduler进行调度,并对其进行初始化(见步骤5)。为了创建任务运行列表,作业调度器首先从共享文件系统中获取Job已计算好的InputSplit的信息(见步骤6)。然后为每个InputSplit创建一个map任务。
3.任务的分配
TaskTracker定期发送“心跳”(heartbeat)给JobTracker.“心跳”告知jobtracker,tasktracker是否还存活,同时也充当两者之间的消息通道(见步骤7)。在jobtracker为tasktracker选择任务之前,jobtracker必须先选定任务所在的作业。在Hadoop中,MapReduce的调度器可以选择,默认的调度器是原始的基于队列的FIFO调度器,还有两个多用户调度器,分别名为Fair Scheduler和 Capacity Scheduler。一旦选择好作业,jobtracker就可以为该作业选定一个任务。
对于map任务和reduce任务,tasktracker有固定数量的任务槽。
4.任务的执行
tasktracker已经被分配一个任务,下一步是运行该任务。第一步,通过从共享文件系统把作业的JAR文件复制到tasktracker所在的文件系统。同时,tasktracker将应用程序所需要的全部文件从分布式缓存复制到本地磁盘(见步骤8)。第二步,tasktracker为任务新建一个本地工作目录,并把JAR文件中的内容解压到这个文件夹下。第三步,tasktracker新建一个TaskRunner实例来运行该任务。
TaskRunner启动一个新的child JVM(见步骤9)来运行每个任务。
shuffle和排序
map函数开始产生输出时,它利用缓冲的方式写到内存,并处于效率的考虑进行预排序。图6-4展示了这个过程。
每个map任务都有一个环形内存缓冲区,用于存储任务的输出。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
没找到任何评论,期待你打破沉寂
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
chuyuan_zhou
中级会员
关注
1
主题
89
帖子
3
粉丝
TA的主题
转发,MapReduce的工作机制
2014-12-8
24小时热文
哈佛通识教育红皮书 (北大高等教育文库·大
代码精进之路:从码农到工匠
为什么面试难!一文帮我们看透本质,拿捏of
程序员薪资排名,AI位居榜首,平均年薪277
Django实战:Python Web典型模块与项目开发
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈