Shu*_*Shu 9 hadoop mapreduce apache-flink
Apache Flink与Hadoop上的Mapreduce相比如何?它以什么方式更好,为什么?
Fab*_*ske 14
免责声明:我是Apache Flink的提交者和PMC成员.
与Hadoop MapReduce类似,Apache Flink是一个具有自己的API和执行引擎的并行数据处理器.Flink旨在支持Hadoop正在使用的许多用例,并与Hadoop生态系统中的许多系统(包括HDFS和YARN)很好地配合使用.
我将通过区分MapReduce编程模型和MapReduce执行模型来回答您的问题.
编程模型
Apache Flink的编程模型基于MapReduce编程模型的概念,但以多种方式进行概括.Flink提供Map和Reduce功能,还提供其他转换,如Join,CoGroup,Filter和Iterations.这些转换可以在任意数据流中组合,包括多个源,接收器以及分支和合并流.Flink的数据模型比MapReduce的键值对模型更通用,并允许使用任何Java(或Scala)数据类型.可以灵活地在这些数据类型上定义密钥.
因此,Flink的编程模型是MapReduce编程模型的超级集合.它允许以更方便和简洁的方式定义许多程序.我还想指出,可以在Flink程序中嵌入未修改的Hadoop函数(Input/OutputFormats,Mapper,Reducers),并与本机Flink函数一起执行它们.
执行模型
查看执行模型,Flink从并行关系数据库系统借用了许多概念.Flink采用流水线处理模型,减少了在本地或分布式文件系统上实现中间结果的需要(此外,这也允许Flink进行实时流处理).而且,Flink程序的执行并没有与程序的规范紧密耦合.在MapReduce中(由Apache Hadoop完成),每个MapReduce程序的执行遵循完全相同的模式.Flink程序被提供给优化器,该优化器计算出有效的执行计划.与关系DBMS类似,优化器选择数据传输和连接策略,以避免昂贵的操作,例如数据混洗和排序.我应该指出,Flink尚未经过Hadoop运行的大规模扩展测试.我知道在最多200个节点上运行的Flink设置.
添加到Fabian的答案:
另外一个区别是Flink并不是纯粹的批处理系统,但可以同时进行低延迟流分析,并提供了一个不错的API来定义流分析程序。
在内部,Flink实际上是一个流系统。对于Flink,批处理程序是流式程序的一种特殊情况。
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |