Spark和Flink的区别

  Flink是可扩展的批处理和流式数据处理的数据处理平台,支持增量迭代计算。Flink在进行集合的迭代转换时可以是循环或是迭代计算处理,这使得Join算法、对分区的链接和重用以及排序可以选择最优算法。Flink的流式处理是真正的流处理,流式数据一旦进入就实时进行处理,允许流数据灵活地在操作窗口。它甚至可以在使用水印的流数中处理数据。此外,Flink的代码执行引擎还对现有使用Storm,MapReduce等有很强的兼容性。
  Spark是一种快速、通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作。用户也可以让Spark保留一个RDD在内存中,使其能在并行操作中被有效的重复使用。

流式计算比较
它们都支持流式计算,Flink是一行一行处理,而Spark是基于数据片集合(RDD)进行小批量处理,所以Spark在流式处理方面,不可避免增加一些延时。Flink的流式计算跟Storm性能差不多,支持毫秒级计算,而Spark则只能支持秒级计算。

与Hadoop兼容

  • 计算的资源调度都支持YARN的方式
  • 数据存取都支持HDFS、HBase等数据源
  • Flink对Hadoop有着更好的兼容,如可以支持原生HBase的TableMapper和TableReducer,唯一不足是现在只支持老版本的MapReduce方法,新版本的MapReduce方法无法得到支持,Spark则不支持TableMapper和TableReducer这些方法

SQL支持
都支持,Spark对SQL的支持比Flink支持的范围要大一些,另外Spark支持对SQL的优化,而Flink支持主要是对API级的优化。

计算迭代
delta-iterations,这是Flink特有的,在迭代中可以显著减少计算

猜你喜欢

转载自blog.csdn.net/ThreeAspects/article/details/106046417