博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据流处理框架:Spark Streaming与Storm
阅读量:4074 次
发布时间:2019-05-25

本文共 1504 字,大约阅读时间需要 5 分钟。

大数据计算的第一代框架Hadoop,是致力于解决离线计算的问题而产生的,在离线批处理上性能优异,但是在实时流处理上,一直被诟病。Hadoop之后,Spark和Storm在流处理上成为对手。今天的大数据入门分享,我们就主要来讲讲,流处理框架Spark Streaming与Storm。

Apache Spark流处理

Spark框架的出现,是在Hadoop MapReduce基础上继承研发而来,本质上来说,还是采用的批处理的思想,但是对于数据计算的中间流程做了优化,由此提升了数据处理效率,得到了比原生的MapReduce更优的计算性能。

Spark Streaming是核心Spark API的一个扩展,其流处理思想,是在处理前按时间间隔预先将其切分为一段一段的批处理作业。

Spark针对持续性数据流的抽象称为DStream(DiscretizedStream),一个DStream是一个微批处理(micro-batching)的RDD(弹性分布式数据集);而RDD则是一种分布式数据集,能够以两种方式并行运作,分别是任意函数和滑动窗口数据的转换。

虽然目前Spark Streaming已经停止更新,Spark的重点也放到了Structured Streaming,但由于Spark版本过低或者其他技术选型问题,可能还是会选择Spark Streaming。Spark Streaming在企业级平台当中的应用,还是不少。

Apache Storm流处理

Storm作为分布式实时大数据处理系统,可以是首次实现了真正意义上的流处理。Storm具有高可靠、高容错、高扩展的特点,有很高的数据吞吐能力,Storm本身是无状态的,通过ZooKeeper管理分布式集群环境和集群状态。

Storm侧重于低延迟的流处理,以近实时方式处理源源不断的流数据。Storm的基本思想是使用spout拉取stream(数据),并使用bolt进行处理和输出,Storm数据处理延时可以达到亚秒级。

在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。

一个拓扑中包括spout和bolt两种角色,其中spout发送消息,负责将数据流以tuple元组的形式发送出去;而bolt则负责转换这些数据流,在bolt中可以完成计算、过滤等操作,bolt自身也可以随机将数据发送给其他bolt。由spout发射出的tuple是不可变数组,对应着固定的键值对。

Storm与Spark streaming的应用场景

Storm:

Storm需要纯实时的环境,不能忍受1秒以上的延迟环境,比如银行类的金融系统。如果在实时计算中要保证事务性的话,同样还是银行,数据要非常精准,需要最大限度的利用集群资源,也可以考虑Storm。

Spark streaming:

不要求纯实时,不要求强大可靠的事务机制,不要求动态调整并行度,那么可以考虑使用Spark Streaming。

考虑使用Spark Streaming最主要的一个因素,应该要针对整个项目进行宏观的考虑,如果一个项目除了实时计算之外,还包括了其他业务功能.就要考虑使用Sparkstreaming。

关于大数据流处理框架,Spark Streaming与Storm,以上就为大家做了简单的介绍了。在流处理领域,目前来说,Storm的市场份额不大,主流更多集中在Spark和Flink上,但是相应的了解还是有必要的。

转载地址:http://vhkni.baihongyu.com/

你可能感兴趣的文章
如何用好碎片化时间,让思维更有效率?
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
Encoding Schemes
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
linux和windows内存布局验证
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
搞定Java面试中的数据结构问题
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>