设为首页 收藏本站
查看: 1042|回复: 0

hadoop mr的数据流程交互简单描述

[复制链接]

尚未签到

发表于 2015-11-11 12:18:30 | 显示全部楼层 |阅读模式
  一、概述
  文章可能会重新编辑,如果想浏览最新内容请访问原创博客:http://blog.iyunv.com/bxyz1203/article/details/8074248。由于作者个人知识面有限,如果描述有错误或者遗留之处敬请谅解,再欢迎指出,我们共同进步。
  二、计算流程
  MR计算框架发展到1.0.3左右,计算框架没有发展大的变化。在《hadoop  The Definitive Guide》中有张经典的图可以说明问题,如图1所示。
DSC0000.png

图1

图1大致说明了我们计算的任务流程,不过并没有深入内部讲述代码的一些细节。所有细节也非常繁细,我整理出一幅大致的数据流程图交互图来说明问题(此图主要我理清楚思路,可能有所欠缺及不完善,主要强调任务数据流转)。如图2:所示:

DSC0001.jpg

图2


图2简单说明:

大致分为上下两个部分:

上部分主要是JobTracker的一些内部数据结构。在JobTracker主要是JobInProgress的初始化,初始化的时候会确定每个JobInProgress会包含两个JobSetup、JobCleanup、一些map、及一些reduce任务。这些会合理地分配到taskTracker机器上面。上图主要给出的部分就是:setup及cleanup与map\reduce的调度是分开的。反馈部分图中没有涉及,此处就省去了。

下部分主要是taskTracker部分:

1、Action有两部分程序处理:taskTracker自己就能处理的是KillJobAction及KillTaskAction,这些action最后会把Child进程干掉(如果有child进程)。

交给Child处理的是LaunchTaskAction,因为这些都会涉及到用户自定义的代码(如:map\reduce 对于jobSetup及JobClean 最终调用的OutputCommitter,这些抽象类用户也是可以自定义的。),可能会造成进程挂掉。

2、可以看出对于slot,对于Map与Reduce是分开的。分别有两个TaskLauncher守护线程处理。

3、对于单个的Task,后在初始化过程中直接启动相关的LaunchTaskWorker来localizeJob,再启动TaskRunner来准备一些参数及启动一个Child进程。

4、 Child调用接口TaskUmbilicalProtocol,此可以获取任务的详细信息、反馈一些状态、最后报告任务完成。

三、思考

我们可以多想想作者为什么这么设计hadoop。此设计的hadoop即使是jobtracker是单点的,在5000左右的机器数目也能胜任,再往上,可能需要别的设计方案,如:Yarn。

1、由于是分布式的程序肯定会有网络不稳定等情况发生,所以对于处理异常情况是必不可少的。如:KillJobAction等

2、由于很多的模块用户可以自定义,为了保护守护进程,我们通常会重新启动一个进程来隔离。如:JobSetup都需要启动一个进程来处理。

3、由于我们需要拥塞控制及容量控制,我们就需要队列,最起码的是在接受到新任务需要一个有限的队列,不可能无限线程处理任务,或者一个线程处理任务。

4、一个很重要的原则是:简单很重要。如:我们为什么需要分开控制map reduce的个数,及为什么存在物理的jobtracker。这个话题其实具有时效性,目前Yarn的方案正在处理这个问题。简单也是有针对性的。物理单点可以解除或者压力小很多,map reduce slots可以合并。

5、分布式的线程之间需要同步状态及阻塞控制,那我们就需要强悍的工具。如:concurrent包。

6、对于一些软件的设计的一些基本思想,我们需要时常是回顾,勿忘根本。

等等。。。

         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137882-1-1.html 上篇帖子: hive中删除表的错误Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Met 下篇帖子: 运用hadoop计算TF-IDF续-支持中文读取-支持文件输出控制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表