继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Hadoop入门教程之分布式计算框架MapReduce

秋名山车神
关注TA
已关注
手记 52
粉丝 1.9万
获赞 4701

说明

这个技术在如今,有一定的使用场景,但是使用场景已经不多,仅当做了解就可以了。因为现在的Spark比MapReduce强太多了,所以学习的重心应当放在Spark上面。

什么是MapReduce?

源自于Google的MapReduce论文

实际上HBase也是源自于Google的论文

发表于2004年12月,Hadoop MapReduce是Google MapReduce的克隆版

MapReduce的特点

1.易于编程

因为它是一个分布式的框架,如果手工开发一个分布式的应用框架,那么需要考虑的东西就是非常多的。比如输入数据是怎么拆分的,数据的本地性,以及容错性。但是MapReduce就不一样了,我们只需要实现它API中的Map方法Reduce方法就可以了。

2.良好的扩展性

只要增加机器,性能就会提升。

3.高容错性

在计算的时候,会就近去副本来处理,当前在计算的任务,如果挂掉了,会自动转移到其他的节点去运行。

4.海量数据的离线处理

数据量多大都没关系,只要节点能跟得上就行了。执行速度对时效性要求不高,因为MapReduce的设计模型就注定了,不可能用它来进行实时处理,只能做离线处理。

离线处理:

如,今天获取的数据,需要明天才能看到结果,并不能立刻把结果计算出来。相当于去淘宝购物,买了东西以后,第二天才能分析出你喜欢的商品类型来给你智能推荐。

实时计算:

反之,实时计算就是,立刻计算出结果,当你点击淘宝商品的时候,就立刻根据大数据计算出你可能喜欢的其他商品来给你实时推荐。

MapReduce不擅长的场景:

1.实时计算

比如在我们的web系统中,在搜索框中输入内容以后,推荐的结果都是秒级别或者是毫秒级别的。这种对于实时性的要求是非常高的,但是MapReduce会编译成MapTask和ReduceTask来进行计算。这两个Task都是进程级别的,每次都要启动一个GBS进程,对于进程开启和最终执行完的销毁,耗费的时间是非常大的,所以MapReduce是不适合做实时计算的,只能用来做离线处理。

2.流式计算

MapReduce的输入数据是静态的,在计算之前数据是要进行拆分的,不能是动态的,只要开始计算,再新增数据也是没用的。

解决方案

如果想要做实时流式处理的话,需要借助Storm和Spark Streaming这些框架来完成统计分析操作。

3.DAG计算

什么是DAG?

多个应用程序存在依赖关系,A作业执行完以后执行B作业,B作业执行完以后执行C作业。对于这种,不太适合使用MapReduce来计算。

总结

MapReduce就是来做离线批处理的,时效性和延迟性是非常高的,不能立刻得到结果。

打开App,阅读手记
7人推荐
发表评论
随时随地看视频慕课网APP

热门评论

请问作者,你那里有没有mapreduce实现流计算的框架的资料呀。

查看全部评论