大きなデータストリームを処理嵐、スパーク三のフレームのFLINK比較

嵐、ストリーミングスパーク、FLINKは、オープン分散システム、低レイテンシ、耐障害性とスケーラビリティ利点である、割り当てタスクはフォールトトレラントコンピュータのシリーズと並行して実行するには、データ・ストリームのコードを実行することができますこれは、基本的な実装の複雑さを簡素化するための単純なAPIを提供します。

Apacheの嵐

嵐の中で、最初はリアルタイムで計算図のための構造を設計するために、我々はトポロジー(トポロジー)を呼び出します。このトポロジは、コード、ワーカーノードに割り当てタスク(ワーカーノード)実行を配布するために、クラスタマスターノード(マスターノード)によってクラスタに提出されます。トポロジーは、ボルトを含み、二つの役割は、タプルのタプルの形式で送信されたデータストリームを担うスパウトメッセージ送信、前記注ぎ口;ボルトは、データストリームを変換するための責任があるが、ボルトは、例えば濾過、ボルトのような計算で行うことができ自身がランダムに他のボルトにデータを送信することができます。スパウト群から出射されたタプルが固定ペアに対応し、変数ではありません。

Apacheのスパーク

スパークAPIストリーミングスパークは、以前にバッチジョブのセクションに切断する前に、それは嵐のようなストリームが、処理時間間隔としてデータを処理しない、コアの拡張です。連続データの抽象スパークマイクロバッチDSTREAMは(マイクロバッチ)であり、DSTREAM(DiscretizedStream)と呼ばれるストリームRDD(弾性分散データセット)と、RDDは、データの分散セットである、とすることができます二つの方法、すなわち、任意の関数の変換、データのスライディングウインドウに並列に動作します。

ApacheのFLINK

Flink 是一个针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句话说,Flink 会把所有任务当成流来处理,这也是其最大的特点。Flink 可以支持本地的快速迭代,以及一些环形的迭代任务。并且 Flink 可以定制化内存管理。在这点,如果要对比 Flink 和 Spark 的话,Flink 并没有将内存完全交给应用层。这也是为什么 Spark 相对于 Flink,更容易出现 OOM 的原因(out of memory)。就框架本身与应用场景来说,Flink 更相似与 Storm。

Flink 的架构图。

对比图:

(比较源自大牛的PPT,现在新版storm有很多改进,比如自动反压机制之类,另外storm trident API也能提供有状态操作与批处理等)

怎么选择

如果你想要的是一个允许增量计算的高速事件处理系统,Storm会是最佳选择。

如果你必须有状态的计算,恰好一次的递送,并且不介意高延迟的话,那么可以考虑Spark Streaming,特别如果你还计划图形操作、机器学习或者访问SQL的话,Apache Spark的stack允许你将一些library与数据流相结合(Spark SQL,Mllib,GraphX),它们会提供便捷的一体化编程模型。尤其是数据流算法(例如:K均值流媒体)允许Spark实时决策的促进。
Flink支持增量迭代,具有对迭代自动优化的功能,在迭代式数据处理上,比Spark更突出,Flink基于每个事件一行一行地流式处理,真正的流式计算,流式计算跟Storm性能差不多,支持毫秒级计算,而Spark则只能支持秒级计算。

 

参考链接:https://blog.csdn.net/jichuang123/article/details/86777577

おすすめ

転載: www.cnblogs.com/xiohao/p/12158361.html