分享

Apache Flink和Apache Spark有什么异同?它们的发展前景分别怎样?

 昵称11935121 2018-04-25

最近的实时流处理已经获得了发展势头,启用它的主要工具是Apache Spark和Apache Fink。通过数据处理、数据流、数据管理和使用这些工具的案例研究来学习。

对更快的数据处理的需求不断增加,实时流数据处理似乎是答案。虽然Apache Spice仍在很多组织中用于大数据处理,但Apache FLink已经成为一种替代方案。事实上,许多人认为它有可能取代Apache SCAP,因为它能够实时处理流数据。当然,关于弗林克能否取代火花的陪审团仍在进行中,因为弗林克尚未被广泛接受。但是实时处理和低数据延迟是其定义特征的两个方面。同时,这需要考虑Apache SCAP可能不会因为它的批处理能力将仍然相关而不受欢迎。


流数据处理实例


对于基于批处理的所有优点,实时流数据处理似乎有一个强有力的例子。流数据处理使得数据仓库的建立和加载成为可能。具有低数据延迟的流处理器提供了对数据的更快的洞察力。所以,你有更多的时间去了解正在发生的事情。除了更快的处理,还有一个显著的好处:你有更多的时间来设计一个适当的事件响应。例如,在异常检测的情况下,较低的延迟和更快的检测使您能够识别最佳的响应,这是防止在诸如安全网站或工业设备损坏的欺骗性攻击的情况下防止损坏的关键。所以,你可以防止实质性的损失。


什么是Apache Fink?


APACHE FLink是一种大规模的数据处理工具,它以大数据量的低数据延迟和高容错性快速处理大数据。它的定义特征是它能够实时处理流数据。

Apache Fink开始作为一个学术开源项目,在那时,它被称为平流层。后来,它成为Apache软件基金会孵化器的一部分。为了避免与另一个项目的名称冲突,将名称更改为弗林克。弗林克的名字是恰当的,因为它意味着敏捷。即使是选择的标志,松鼠也是合适的,因为松鼠代表敏捷、灵活和速度的优点。

因为它被添加到Apache软件基金会,它作为一个大的数据处理工具迅速崛起,在八个月内,它开始吸引更多的观众的注意力。人们对Flink的兴趣越来越多,反映在2015年一些与会者的人数上。许多人参加了弗林克在2015年5月在伦敦召开的地层会议和2015年6月在圣若泽的Hadoop峰会上的会议。超过60人参加了海湾地区Apache Fink会议在2015年8月在圣若泽的MAPR总部举办。

下面的图像给出了FLink的lambda架构。


spark与flink之间的比较

虽然spark和flink之间有一些相似之处,例如API和组件,但在数据处理方面,它们的相似性并不重要。下面给出的是flink和spark的比较。

数据处理

flink在批处理模式下处理数据,而Fink实时处理流数据。火花处理数据块,称为RDDS,而FLink可以实时处理行数据之后的行。因此,虽然最小的数据延迟总是在spark上存在,但spark却不是这样。

迭代

spark支持批处理中的数据迭代,但弗林克可以通过使用流式架构来对其数据进行迭代迭代。下面的图像显示了迭代处理是如何发生的。

内存管理

FLink可以自动适应不同的数据集,但spark需要手动优化和调整其作业到单个数据集。spark也进行手动分区和缓存。因此,期待一些延迟处理。

数据流

FLink在需要时能够在数据处理上提供中间结果。spark遵循过程编程系统,FLink遵循分布式数据流方法。因此,每当需要中间结果时,广播变量被用来将预先计算的结果分发给所有的工作者节点。

数据可视化

弗林克提供了一个提交和执行所有作业的Web界面。星火和弗林克都与Apache齐柏林飞船集成,并提供数据摄取、数据分析、发现、协作和可视化。Apache Zeppin还提供了一个多语言后端,允许您提交和执行FLink程序。

加工时间

下面的段落提供了flink和spark在不同工作中所花费的时间的比较。

为了进行公平的比较,flink和spark都以机器规格和节点配置的形式提供了相同的资源。

如上面的图像所示,以红色突出显示的区域指示FLink和spark处理器的节点配置。

FLink由于流水线执行而处理得更快。为了处理数据,火花花了2171秒,而FLink花费了1490秒。

当具有不同数据大小的TeraSort被执行时,结果如下:

对于10GB的数据,flink花了157秒的时间与Skp887秒相比。

对于160GB的数据,flink花了3127秒与火花的427秒相比。

基于批处理或流数据-哪个过程更好?

这两种方法都有优点,适用于不同的情况。尽管很多人声称基于批次的工具不受欢迎,但它不会在不久的将来发生。要了解它们的相对优势,请参见以下比较:

流批处理

数据或输入以特定的顺序以记录的形式到达。数据或输入根据记录的数量或时间分为批。

尽可能快地要求输出,但不能比验证序列所需的时间更早。输入是根据要求给出的,但保留一定数量的批。

输出在写入后不需要修改,记录新的状态和输出的所有行的细节。

也可以做批处理的数据无法做批量处理的数据

个别情况下,flink和批处理都是有用的。以每天滚动月度销售计算为例。在这个活动中,需要的是计算每天的销售总额,然后累积起来。在这样的用例中,可能不需要流式数据处理。数据的批量处理可以根据日期来处理单个批次的销售数字,然后添加它们。在这种情况下,即使存在一些数据延迟,当以后的潜在数据被添加到以后的批次中时,它总是可以稍后进行。

也有类似的用例需要流式处理。以计算每个访问者在网站上的滚动月度时间为例。在网站的情况下,访问次数可以更新,每小时,每分钟,甚至每天。但这种情况下的问题是定义会话。定义会话的开始和结束可能是困难的。此外,很难计算或识别不活动的时期。因此,在这种情况下,没有合理的界限来定义会话甚至是不活动的周期。在这样的情况下,需要实时地进行流数据处理。

总结

虽然spark在批量数据处理方面有很多优势,但它仍有许多用例可以迎合,看来弗林克正在迅速获得商业牵引力。事实上,FLink也可以进行批量处理,这对其有利。当然,这需要考虑到FLink的批处理能力可能与spark不一样。所以,火花仍然有一段时间。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多