陌涂 2019-06-28
本文的内容是对本人近期学习hadoop系统过程的总结和思考,接触的通用计算框架有限,错误在所难免,欢迎指正和讨论
我接触的hadoop中的通用计算框架主要是mapreduce和spark。其中mapreduce在hadoop 2.0中被简化,将资源管理的功能抽象、独立出来,形成了yarn,一个通用的资源管理框架。而mapreduce则成为一个存粹的计算框架。随着spark的流行,mapreduce由于框架的限制、性能等原因被使用的越来越少了。
mapreduce于2006提出,由于其大大简化了分布式计算的程序的编写,而迅速流行起来。在我能读懂mapreduce的论文之后(论文发表N年后),让我惊讶的是mapreduce提出的运行方式与我工作中的程序运行方式有很大不同:
由此也可以看出大数据系统与互联网应用的异同。而将数据分批分片执行的操作也是我之前看不懂mapreduce的主要原因(另一个原因是贫穷限制了我的想象力,当时不明白为什么需要那么多机器)。
mapreduce将计算过程分为map和reduce两个阶段,在当时能够满足大部分的需求,但随着人工智能和实时计算的兴起,mapreduce的局限越来越大。mapreduce主要有两个局限:
由于mapreduce框架本身的缺陷,已经不能适应当前对大数据计算的需求,因此逐渐地被spark等框架取代。
spark作为新一代的通用计算平台,解决了mapreduce中存在的固有问题:
据说apache flink使用了不同的数据抽象,更能满足对实时性的要求,不过我还没用过flink。有熟悉的欢迎指教。
未来,新的分布式计算平台主要还是看如何对数据进行抽象,以满足各种计算需求。对于使用大数据计算平台的公司,根据公司的规模以及开发的周期可以采取如下几种方式不断改进计算任务:
这几种方式可以并行进行,也可能是层层递进的。比如在大量的短期优化计算任务后,将通用的部分提出来改进计算平台。多次改进计算平台后使用计算平台有了新的理解,开发出属于自己的分布式计算平台。
(广告,我正在学习Hadoop系统,包括读书和读源码,希望能和正在学习的小伙伴一起交流,如果你也有这样的想法,并且愿意经常分享你的所学,欢迎扫码进群)