Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ApacheFlink与Hadoop上的Mapreduce相比如何?_Hadoop_Mapreduce_Apache Flink - Fatal编程技术网

ApacheFlink与Hadoop上的Mapreduce相比如何?

ApacheFlink与Hadoop上的Mapreduce相比如何?,hadoop,mapreduce,apache-flink,Hadoop,Mapreduce,Apache Flink,ApacheFlink与Hadoop上的Mapreduce相比如何? 在哪些方面更好?为什么?免责声明:我是ApacheFlink的提交者和PMC成员 与Hadoop MapReduce类似,ApacheFlink是一个具有自己的API和执行引擎的并行数据处理器。Flink旨在支持Hadoop正在使用的许多用例,并与Hadoop生态系统中的许多系统(包括HDFS和Thread)进行良好的配合 我将通过区分MapReduce编程模型和MapReduce执行模型来回答您的问题 编程模型 Apache

ApacheFlink与Hadoop上的Mapreduce相比如何?
在哪些方面更好?为什么?免责声明:我是ApacheFlink的提交者和PMC成员

与Hadoop MapReduce类似,ApacheFlink是一个具有自己的API和执行引擎的并行数据处理器。Flink旨在支持Hadoop正在使用的许多用例,并与Hadoop生态系统中的许多系统(包括HDFS和Thread)进行良好的配合

我将通过区分MapReduce编程模型和MapReduce执行模型来回答您的问题

编程模型

ApacheFlink的编程模型基于MapReduce编程模型的概念,但以几种方式对其进行了概括。Flink提供Map和Reduce函数,还提供附加的转换,如连接、协同组、过滤器和迭代。这些转换可以在任意数据流中组装,包括多个源、汇、分支和合并流。Flink的数据模型比MapReduce的键值对模型更通用,允许使用任何Java(或Scala)数据类型。可以灵活地在这些数据类型上定义键

所以,Flink的编程模型是MapReduce编程模型的超集。它允许以更加方便和简洁的方式定义许多程序。我还想指出,在Flink程序中嵌入未修改的Hadoop函数(输入/输出格式、映射器、还原器)并与本机Flink函数一起执行是可能的

执行模式


在执行模型方面,Flink借用了并行关系数据库系统的许多概念。Flink以流水线处理模型为特色,减少了在本地或分布式文件系统上实现中间结果的需要(此外,这还允许Flink进行实时流处理)。此外,Flink程序的执行与程序的规范并不紧密耦合。在MapReduce中(由Apache Hadoop完成),每个MapReduce程序的执行遵循完全相同的模式。Flink程序被提供给优化器,优化器会找出一个有效的执行计划。与关系型DBMS类似,优化器选择数据传送和连接策略的方式避免了昂贵的操作,如数据洗牌和排序。我应该指出的是,Flink并没有在Hadoop运行时进行大规模的测试。我知道Flink设置最多可以运行200个节点。

Fabian的答案补充道:

另一个区别是Flink不是一个纯粹的批处理系统,但它可以同时进行低延迟流分析,并提供一个很好的API来定义流分析程序


在内部,Flink实际上是一个流媒体系统。对弗林克来说,批处理程序是流式程序的特例

hashtag在SO问题中并没有真正使用,我建议只询问您的问题并添加适当的标记。