关于 MapReduce 和 Spark 来讲,这些数据是一少量数据,也称之为有界数据,对这些数据的计算就称为批计算。
随着移动互联网、物联网的兴起,每分每秒都在发生少量的数据,例如传感器发生的数据、订单买卖数据、用户行为记载等。这些无时不刻都在发生的数据,咱们称之为无界数据或流数据。通常被用于用户行为剖析启动实时介绍、开售数据实时剖析启动营销战略调整等场景。
MapReduce 和 Spark 这样的批计算系统就满足不了实时计算的需求。所以就降生了 Storm、Spark Streaming、Flink这些流计算系统。
批计算和流计算全体上班流程大体分歧,都有义务调度、计算结果聚合等环节。只不过由于数据源的要素,口头细节上会有所不同。这里有几个概念须要启动辨别,防止混杂:
批计算是对一批数据启动一次性计算,所以在每次调度计算义务时调配资源,计算成功后,对应的资源就会被监禁,下次在口头时从新调配资源。
流计算是对实时流进系统的数据启动不连续的计算,所以计算资源会一次性调配成功,后续的计算义务会不时运转,直到程序意外义务中止才会监禁资源。
由于 Spark Streaming 是建设在 Spark 基础上,所以义务口头还是 Spark 的逻辑,所以 Spark Streaming 算是一个“伪”流计算系统,属于批计算这一波。
便捷来说 Spark Streaming 经过很小的时时期隔(例如1秒)将实时数据搜集为“微批”数据,而后而后交给 Spark 处置。
Spark Streaming 微批数据
由于是距离一段时期再去计算,所以在实时性方面,Spark Streaming 就不如 Flink,如今说起流计算基本上就是在探讨 Flink 了。不过两者的架构和概念有很多相似的中央,也都是函数式编程。假设把握了 Spark ,学习 Flink 也就十分便捷轻松了。
至于 Storm ,作为早期的实时计算引擎并不允许有形态计算和exactly-once的语义,以及编码相对复杂,所以如今也缓缓被大家忘记。
假设有“Spark Streaming 搜集的数据是怎样分区的?”、“什么是有形态计算和exactly-once语义?”、“Flink 是如何做到数据、计算本地化?”
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/6620.html