美国队长
作者美国队长·2016-04-08 14:13
研发工程师·Alibaba

论hadoop MR执行原理

字数 799阅读 2123评论 0赞 0

最近看了一些关于hadoop的文章,想借此机会谈谈自己谈谈对hadoop的理解。如有不对的,还请各位看过不吝赐教,等等,我先戴个头盔,:)

熟悉hadoop的人都知道hadoop的两个重要特性hdfs跟mapreduce,hdfs是分布式文件管理跟传统的共享文件方式有所区别,他主动备份容错存储均衡;mapreduce是用户根据自己的实际场景对指定文件内容进行逐行操作,当然这里涉及一些代码写法的优化(网上比较多我就不啰嗦了).

 整体介绍完之后,谈谈hadoop内部实现原理吧当然不会细化到具体某一行代码。先举个例子,如果现在有个文件10G大小,需要统计一下包含字母“OK”的行数,首先想到的方法就是读取文件然后逐行处理并且是在单机上,这样你的机器内存可能撑不下去,这个时候可能你会想如果不一次性把10G文件全部加载到内存中,而是分开加载呢,这就遇到了得对文件进行分割,手动复制分割?还是通过代码分割呢?最好是通过代码,不然你10G的文件在本地打开就得“半天”,提到代码必然想到java中的RandomAccessFile通过偏移量对文件进行分割生成多个文件,至此虽然生成了多个小文件但是还是在一台机器上执行,如果得用多个机器怎么办呢而且我只想通过一台机器上点个按钮啥所有机器都执行然后最后汇总内容,有点分布式计算的味道了,看官别急且听我继续YY。多个机器执行第一步你得把刚刚分好的文件拷贝到多个机器上吧,然后对每台机器状态得有个“机器头头”负责监督吧不然有机器偷懒或者有机器累死会影响最后的汇总的结果,接着每个机器在收到他们的头头发送是指令之后开始逐个执行,最后将结果写成一个个的临时小文件,最后文件合并生成最后的结果。

看了上面的简单介绍相信你对hadoop的mapreduce的过程有个粗滤的了解,我这里只是个抛砖引玉的作用,如果各位看官有任何疑问可以直接给我回复,我会逐一回答。。。。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广