大数据实时处理平台市场上产品众多,本文着重讨论spark与storm的比对,最后结合适用场景进行选型。

一、spark与storm的比较

比较点

Storm

Spark Streaming

实时计算模型

纯实时,来一条数据,处理一条数据

准实时,对一个时间段内的数据收集起来,作为一个RDD,再处理

实时计算延迟度

毫秒级

秒级

吞吐量

事务机制

支持完善

支持,但不够完善

健壮性 / 容错性

ZooKeeper,Acker,非常强

Checkpoint,WAL,一般

动态调整并行度

支持

不支持

二、Spark Streaming与Storm的应用场景

适用Storm的场景:

1、需要纯实时,不能忍受1秒以上延迟的场景下使用,比如实时金融系统,要求纯实时进行金融交易和分析

2、对于实时计算的功能中,要求可靠的事务机制和可靠性机制,即数据的处理完全精准,一条也不能多,一条也不能少,也可以考虑使用Storm

3、若还需要针对高峰低峰时间段,动态调整实时计算程序的并行度,以最大限度利用集群资源(通常是在小型公司,集群资源紧张的情况),也可以考虑用Storm

4、如果一个大数据应用系统,它就是纯粹的实时计算,不需要在中间执行SQL交互式查询、复杂的transformation算子等,那么用Storm是比较好的选择

适用Spark Streaming的场景:

1、如果对上述适用于Storm的三点,一条都不满足的实时场景,即:不要求纯实时,不要求强大可靠的事务机制,不要求动态调整并行度,那么可以考虑使用Spark Streaming

  1. vi config/server.www.douniu178.com   properties
  2. broker.id=0
  3. num.partitions=3
  4. zookeeper.www.feifanyule.cn/ www.ysgj1688.com connect=focuson1:www.089188.cn 2181,focuson2:2181,focuson3:2181
  • 启动,在三个节点分别执行:
  1. nohup .www.baohuayule.net  /bin/kafka-server-start.sh config/server.properties &
  • 创建一个topic并查看所有的topic,可指定该topic的分区,副本数量
  1. [root@focuson1 kafka_2.11-1.1.0]# bin/kafka-topics.sh --create --zookeeper focuson1:2181 --replication-factor 2 --partitions 3 --topic focuson_test1
  2. WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
  3. Created topic "focuson_test1".
  4. [root@focuson1 kafka_2.11-1.1.0]# bin/kafka-topics.sh --list --zookeeper focuson2:2181
  5. focuson_test1

2、考虑使用Spark Streaming最主要的一个因素,应该是针对整个项目进行宏观的考虑,即:如果一个项目除了实时计算之外,还包括了离线批处理、交互式查询等业务功能,而且实时计算中,可能还会牵扯到高延迟批处理、交互式查询等功能,那么就应该首选Spark生态,用Spark Core开发离线批处理,用Spark SQL开发交互式查询,用Spark Streaming开发实时计算,三者可以无缝整合,给系统提供非常高的可扩展性 Spark Streaming与Storm的优劣分析事实上,Spark Streaming绝对谈不上比Storm优秀。

总之,这两个框架在实时计算领域都很优秀,只是擅长的细分场景并不相同。Spark Streaming仅仅在吞吐量上比Storm要优秀,而吞吐量这一点,也是历来挺Spark Streaming贬Storm的人着重强调的。但是问题是,是不是在所有的实时计算场景下,都那么注重吞吐量?不尽然。因此,通过吞吐量说Spark Streaming强于Storm,不靠谱。事实上,Storm在实时延迟度上,比Spark Streaming就好多了,前者是纯实时,后者是准实时。而且,Storm的事务机制、健壮性 / 容错性、动态调整并行度等特性,都要比Spark Streaming更加优秀。Spark Streaming,有一点是Storm绝对比不上的,就是:它位于Spark生态技术栈中,因此Spark Streaming可以和Spark Core、Spark SQL无缝整合,也就意味着,我们可以对实时处理出来的中间数据,立即在程序中无缝进行延迟批处理、交互式查询等操作。这个特点大大增强了Spark Streaming的优势和功能。

最新文章

  1. DIV+CSS布局中主要CSS属性介绍
  2. 弹性盒子布局flexbox
  3. PHP利用Curl实现多线程抓取网页和下载文件
  4. [Outlook] outlook如何实现自动CC和BCC邮件发送
  5. C# Cookie工具类
  6. [tp3.2.1]数据模型 - 简单的模型连接
  7. UIActionSheet 这样写为什么显示为空白 ???
  8. HTTP长连接(Comet)实现方式示例
  9. PKUSC 模拟赛 day1 上午总结
  10. Base64的用法
  11. C#修改 Excel指定单元格的值
  12. MySQL 存储过程和函数(转)
  13. 通过浏览器navigator判断浏览器版本或者手机类型&&判断微信访问
  14. mtime,ctime,atime
  15. asp.net web api 构建api帮助文档
  16. Java RSA 公钥加密私钥解密
  17. python安装代码包提示缺少 VC++ 14 控件的处理方式
  18. openwrt添加自动启动项
  19. mysql四大特性与四种隔离级别
  20. MySQL5.7免安装版配置详细教程

热门文章

  1. iOS网络图片缓存详解
  2. C++声明之CV限定符
  3. CentOS使用yum安装drbd
  4. rsync + git发布项目
  5. openldap完整版本搭建记录
  6. MyFirstDay_答案_1.**猫(自己整理)
  7. 陌生又熟悉的数据库之ID增加
  8. 10,python开发之virtualenv与virtualenvwrapper
  9. 2 Mongodb基本操作
  10. AOP的两种实现方式