深入理解MapReduce架构

总结下MapReduce(不断扩展吧)

      MapReduce架构是一种分布式编程架构,它本质上是将任务划分,然后归并。它是以数据为中心的编程架构,相比与分布式计算和并行计算等,它更看重的是吞吐率。它处理的数据是PB级的数据,它并不是新技术,而是一个总结。在数据存储和处理上,它曾经被质疑,被认为是数据库技术的一个倒退,数据库的3个经验:

1.结构描述是好的

2.将结构从程序中分离是好的

3.高阶的访问语言是好的

      它一个都不具备,MR编程者需要用到c等低阶语言来处理低阶数据的问题。MR不具备数据斜交的问题,比如数据库中多表查询的能力。

      它的优势应该在于它的容错能力和可扩展性。它的优秀的扩展能力是使它的地位不断攀高的主要因素,强大的容错性也使得它稳定性很高。其实,MR很容易理解,正象google一直倡导的用最简单的方式处理问题往往是最高效的。它的思想可以总结为将处理的文件分割成多份,从而划分任务,然后将任务归并起来完成任务。就是一个分-聚的过程,它可以完成很多类型的任务,但不是所有的。

       MR中reduce任务采用拉的方式,数据的获取在多任务的情况下可能会造成磁盘效率非常低下,这种情况是磁盘的读取引起的,当然它也有它的优势,它可以减少系统资源(推的过程必须知道要推到哪里,也就是说map阶段未完成,reduce阶段就要开启,很好理解,就是要知道推给谁)。

       MR是对数据的一种批处理,没有事务、索引之类数据库支持,可以说在数据的处理上是一种倒退,但是通过象bigtable和hbase的补充,这种倒退可以说是减少了很多。MR是对大数据量数据处理模型,对于小型或者计算密集性完全无用武之地。

     一直有个疑问,mapreduce为什么要有sort阶段,因为这是一个即费时又用处不大的阶段,因为不是所有的应用都用到sort,如果说只是为了方面一些应用,那大可不必,当然,google的应用大多数都需要排序。我是考虑如果扩展mapreduce编程模型,可以考虑去掉sort阶段。

     shuffle阶段是mapreduce的核心,它能够左右性能,因为划分任务有两次。一次是任务开始时,一次是任务归并时。任务开始时,由输入数据进行划分,是个固定的办法,但任务归并时,需要机群来处理,这时候shuffle起到了至关重要的作用,就象是任务调度一样,也是个核心的阶段。

    随便吐槽,谢谢

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值