MapReduce与Spark和Flink三者的比较
作者介绍:TNTEVE,狐小E资深开发工程师,专注移动协同办公平台的SAAS软件开发以及轻应用开发
最近开发了一款移动办公软件狐小E
MapReduce
MapReduce是编程模型,也是计算框架。开发人员基于MapReduce编程模型进行编程开发,然后将程序通过MapReduce计算框架分发到Hadoop集群中运行。
MapReduce编程模型只包含Map和Reduce两个过程,map的主要输入是一对<Key, Value>值,经过map计算后输出一对<Key, Value>值;然后将相同Key合并,形成<Key, Value集合>,再将这个<Key, Value集合>输入reduce,经过计算输出零个或多个<Key, Value>对。
MapReduce运行的时候,会通过Mapper运行的任务读取数据文件,然后调用自己的方法,处理数据,最后输出。Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到相应的文件中。
因为MapReduce采用了多进程模型。多进程模型便于细粒度控制每个任务占用的资源,但会消耗较多的启动时间,不适合运行低延迟类型的作业,具体流程如下:
Input => MapReduce ==> Output ==> MapReduce ==> Output
在MapReduce流程里&