(4)hadoop学习——mapreduce已死?

来源:互联网 发布:人工智能机器人 编辑:程序博客网 时间:2024/05/23 18:32

Hadoop的另一个核心,就是MapReduce,简单来说四个字:分而治之。
举个例子,我开了一家面馆,一开始知名度不够,每天也就卖个十几二十碗,一个人工作还感觉很闲。随着时间推移,知道我家面馆的人越来越多,十里八方的人都赶来吃,没办法,味道好呀!销量从几十变成了几百,甚至要上千碗。一个人肯定忙不过来了,那就招人吧,十个人揉面,十个人煮面,十个人拌酱,十个人擦桌端碗,这样勉强能服务得过来。
上面的例子中,每个人其实就是一个map或者一个reduce,客人的需求好比现在的市场,"面"好比现在爆炸性的数据。数据分析界有一句话:我们不需要数据,我们只需要结果。因为数据很多,但最主要的是通过数据你能得出什么结果。当然啦,其实数据也异常重要,百度首席科学家——吴恩达,前不久刚离职。业界议论纷纷,说是出去自己搞无人车自动驾驶了,但据“知情人士”爆料,百度内部其实分两个研发团体,一个是李彦宏亲自扶持的吴恩达团队,另一个是存在已久的搜索团队。吴恩达拿不到搜索团队的数据,模型想要出结果自然困难,可以看出数据对于一个模型是多么重要。
扯远了,回到MapReduce。前面的文章已经介绍过hdfs,它是一个分布式存储系统,大数据量的文本存储在上面

会被分成块,存在不同节点上。相当于把一大坨面分成好几十坨面,一个人揉不了,分几十个人揉,总能揉了吧?既然

数据已经在hdfs上了,要计算的时候直接在节点上计算,速度也就加快了。hadoop提倡“移动计算比移动数据高效。”,
即尽量在数据节点上跑MR程序。
所以MR适合做一些大文本的处理工作,比如计算大型网站日志中各个ip地址出现的次数,或者从哪个网页跳转到
淘宝的次数最多,只需开启MR,在每个数据节点上计算,计算完之后再合并结果,速度比直接计算大文件快很多(直接计算很有可能都跑不起来)。
MapReduce分Map阶段和Reduce阶段,Map是各个数据节点的计算,Reduce是合并Map结果的阶段。
看一个wordcount的图片,比较好理解一些。
下一篇讲hive,对于MR,大家了解一下便好,不用刻意去写,因为,它可能要被淘汰了(真正编写mr程序的公司很少,因为hive能帮助我们解决很多问题,再加上spark的流行,mr的地位岌岌可危)。

                                             
0 0
原创粉丝点击