08 | MapReduce如何让数据完成一次旅行?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
MapReduce是一种用于大数据计算的编程模型和计算框架,通过将计算过程切分为Map和Reduce两个阶段,实现了复杂的大数据计算程序的开发。文章介绍了MapReduce计算框架的运行机制和数据合并与连接机制。在MapReduce作业启动和运行机制中,通过JobTracker和TaskTracker进程的协作,实现了作业的调度和监控,将计算任务分布在整个集群中运行。而在数据合并与连接机制中,通过shuffle过程将不同服务器上的相关数据合并到一起进行下一步计算,实现了数据的内在关系和价值的呈现。这些机制使得MapReduce能够在分布式的大规模服务器集群上并行执行,发挥大数据的作用。文章通过详细解释MapReduce的运行过程和shuffle过程,帮助读者深入理解了大数据计算的核心原理。 MapReduce框架的运行机制和数据合并与连接机制是本文的重点内容。通过JobTracker和TaskTracker进程的协作,MapReduce实现了作业的调度和监控,将计算任务分布在整个集群中运行。同时,shuffle过程将不同服务器上的相关数据合并到一起进行下一步计算,展现了数据的内在关系和价值。这些机制使得MapReduce能够在分布式的大规模服务器集群上并行执行,发挥大数据的作用。文章通过详细解释MapReduce的运行过程和shuffle过程,帮助读者深入理解了大数据计算的核心原理。
《从 0 开始学大数据》,新⼈⾸单¥68
全部留言(75)
- 最新
- 精选
- 张贝贝有个问题,为什么mapper计算完的结果要放到硬盘呢?那再发送到reducer不是还有个读取再发送的过程吗?这中间不就有一个重复的写和读的过程吗?
作者回复: 是的,主要为了可靠性,spark就不写硬盘,所以快。
2018-11-152114 - 冬冬老师您好,有个问题,当某个key聚集了大量数据,shuffle到同一个reduce来汇总,考虑数据量很大的情况,这个会不会把reduce所在机器节点撑爆?这样任务是不是就失败了?
作者回复: 会的,数据倾斜,会导致任务失败。严重的数据倾斜可能是数据本身的问题,需要做好预处理
2018-11-162102 - 格非MapReduce的思想有点类似分而治之,将一个大任务分割成小任务,分发给服务器去处理,然后汇总结果,这是MapReduce的优势,但是MapReduce也就限制在了只能处理这种可以分割的任务上,比如,统计文本中的不同单词的个数,不知道我这种想法是否正确,还想请老师指教,另外,能否分享一下MapReduce这种技术的局限性呢?
作者回复: 是的,比如MapReduce没法计算斐波那契数列,因为不能分片计算。 但是大数据场景几乎都是可以分片计算的。
2018-11-15372 - still0007有一个疑问,之前讲到“移动计算而不是移动数据”,但是在shuffle的过程中,涉及到大量的移动数据,这又是为什么呢?
作者回复: 移动计算主要是map阶段,reduce阶段数据还是要移动数据合并关联,不然很多计算无法完成
2018-11-15544 - 星凡请问一下,map和reduce有绝对的先后关系吗,还是说可以一边map一边reduce
作者回复: 绝对先后关系,一个reduce必须要他前置的所有map执行完才能执行。 MapReduce框架会在85%的map程序执行完成时,开始启动reduce程序,reduce程序一边shuffle已完成的map数据,一边等待未完成的map继续执行,直到全部map完成,reduce才开始执行计算。
2019-10-05240 - hua168实际操作中是不是通过hive去完成MapReduce 的? 如果有一台机子一直卡在那里,整个job就差它一个返回数据,是不是整个job在等待状态?这种怎么处理?
作者回复: 如果是SQL操作,就用hive,不用自己编程MapReduce。 如果机器故障导致某个任务很慢,MapReduce框架会启动多个任务进程在多个服务器同时计算同一个数据块,那个算完输出那个,不会一直等。 需要一直等的是数据偏移,某个key聚集了太多数据,大量数据shuffle到一个reduce计算,job一直等这个任务。
2018-11-15438 - 臣馟飞扬看其他资料上介绍,shuffle过程从map的输入就已经开始了,与老师介绍的好像不太一致哦,这个过程应该是什么样?
作者回复: 对于单个map任务,必须要map结束才能开始shuffle,因为map计算之后,还有个combine,数据还没完全准备好,不能shuffle。 对于整个作业,可以在大部分map任务完成后,也就是80%的map任务完成后启动shuffle,但是能进行shuffle的必须是已经完成的map任务的输出数据,没完成的map任务不能shuffle。
2020-02-26421 - Goku请问JobTracker和之前讲到的NameNode是在同一个服务器上的吗?
作者回复: 通常不会
2018-12-28220 - slam想问下,在Hadoop上跑计算任务,在极端异常的条件下(数据机器down,网络隔离,namenode切换),能保证计算要么返回失败要么给出可信的结果吗?背景是这样的,考量在大数据平台上做资金的清算,非程序的错误,计算结果不能有错有漏,在单机db上这个肯定ok,不考虑事务前提下,Hadoop计算是否也毫无问题?可能考量数据一致性、任务状态一致性等方面,我了解太浅,想请教下老师,这种要求绝对计算准确的场景,hadoop目前胜任吗?
作者回复: 没有问题,一般宕机也能计算完成,MapReduce有容错能力。计算结果不会有问题。
2018-11-1520 - hunterlodge老师,您给出的Partitioner的代码所反映的算法不会影响集群的扩展性吗?为什么不是采用一致性哈希算法呢?
作者回复: 不会,调用partitioner是一个job的任务分配,动态的,结束了就完成了,不存在扩展性问题。
2018-11-1919