Spark streaming vs JStorm

简介:

大部分时候大家在选择技术方案的时候还是比较迷茫,是该选择JStorm还是Spark Streaming?


一般会流于一些并不重要问题的讨论,最后做出目光非常短浅的选择,几个月之后再改变技术方案。造成严重的开发量的浪费,甚至拖延关键产品的上线,或者上线后问题层出不穷,不断和业务方妥协谈判。所以,明确这两个最主流的流计算框架的应用场景至关重要,下面我说下经验之谈,避免更多的人走弯路。

Spark Streaming和JStorm的本质区别是想要解决的问题不同:

Spark Streaming是批量处理的Spark向流计算多迈了一步;

JStorm是真正的流式流水线计算向批量计算(trident可以有部分的批量处理)多迈出了一步。

使得看似毫不相关的两个问题有了交集。这个交集让很多人困惑。其实根本的问题是真正理解流计算本质的项目负责人少之又少。流计算不是实时计算。实时计算和离线计算对应,是计算的场景,是需求。流计算和批量计算对应是计算的方式。流计算的本质是:无状态性!批量计算的本质是有状态计算,或者说没有状态性的批量计算根本就是流计算只是把时间维度的计算变成了空间维度的计算。而有状态的流计算本质也是批量计算,只是把状态的需求藏在流式之外的闭包中。这么看了,一切了然,根本没什么交集,判断自己的项目使用哪种技术方案根本不需要问询需求方:你要多少的延迟?如果你只是需要低延迟,那你只是在挑战现在计算机的计算能力。真正你要关心的是业务计算的逻辑是不是主要是无状态的。

下面举一个使用流计算的主要场景:

用户行为log的基本sum,count,distinct需求: 这里的log数据量巨大,如果技术方案不对,将对公司资源造成极大浪费。这个需求中,sum,count都是无状态的计算,但是distinct确是有状态的计算,所以最好的解决方案是sum,count在JStorm中计算,distinct在Spark中计算。但是两个系统同时存在会带来很多问题,数据落地拉起的延迟,这在阿里还是很大的瓶颈。但如果不考虑数据落地拉起,那么Storm接Spark是最好的技术方案之一。

其实还有很多项目都存在大量的状态保存的需求,都是需要使用Spark Streaming来计算的。其实就算使用Spark和Storm的混合架构,数据两次进内存(进程间数据流)也是对网络带宽的浪费,所以如果在不考虑很高的实时要求的情况下,对于有状态运算的项目完全可以用Spark Streaming取代掉Storm。对于没有状态的项目,当然可以完全用JStorm了。,













本文转自里冲51CTO博客,原文链接:http://blog.51cto.com/coollast/1901331 ,如需转载请自行联系原作者
相关文章
|
30天前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
38 0
|
30天前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
75 0
|
30天前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
55 0
|
30天前
|
SQL 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
29 0
|
30天前
|
存储 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
41 0
|
30天前
|
SQL 分布式计算 大数据
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(一)
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(一)
30 0
|
30天前
|
SQL 分布式计算 大数据
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(二)
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(二)
27 0
|
30天前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
28 0
|
30天前
|
消息中间件 分布式计算 Kafka
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
37 0
|
2月前
|
分布式计算 Java Apache
Apache Spark Streaming技术深度解析
【9月更文挑战第4天】Apache Spark Streaming是Apache Spark生态系统中用于处理实时数据流的一个重要组件。它将输入数据分成小批次(micro-batch),然后利用Spark的批处理引擎进行处理,从而结合了批处理和流处理的优点。这种处理方式使得Spark Streaming既能够保持高吞吐量,又能够处理实时数据流。
69 0