楼主: hwayw

Storm与Spark、Hadoop相比是否有优势

[复制链接]
论坛徽章:
57
ITPUB15周年纪念
日期:2016-10-13 13:15:342017金鸡报晓
日期:2017-01-10 15:39:052017金鸡报晓
日期:2017-02-08 14:09:13秀才
日期:2017-02-22 15:14:12秀才
日期:2017-02-22 15:16:26秀才
日期:2017-02-22 15:18:00秀才
日期:2017-05-09 11:37:55秀才
日期:2017-07-11 14:19:35ITPUB18周年纪念章
日期:2018-11-13 15:31:24
11#
发表于 2014-8-12 10:05 | 只看该作者
1. Storm是什么,怎么做,如何做的更好?
Storm简单来说,就是分布式实时计算系统。按照storm作者的说法,storm对于实时计算的意义类似于had o op 对于批处理的意义 。
Storm的主要特点:
1.简单的编程模型。类似于Map Reduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
2.可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持C lojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
3.容错性。Storm会管理工作进程和节点的故障。
4.水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
5.可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
6.快速。系统的设计保证了消息能得到快速的处理。
7.本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。
2. Storm与Spark、Hadoop相比是否有优势?
对比Hadoop的批处理,Storm是个实时的、分布式以及具备高容错的计算系统。同Had o op一样Storm也可以处理大批量的数据,然而Storm在保证高可靠性的前提下还可以让处理进行的更加实时;也就是说,所有的信息都会被处理。Storm同样还具备容错和分布计算这些特性,这就让Storm可以扩展到不同的机器上进行大批量的数据处理。
  storm的网络直传、内存计算,其时延必然比 h d f s传输低得多;当计算模型比较适合流式时,storm的流式处理,省去了批处理的收集数据的时间;因为storm是服务型的作业,也省去了作业调度的时延。所以从时延上来看,storm要快于had o op。
比较:had o op是磁盘级计算,进行计算时,数据在磁盘上,需要读写磁盘;Storm是内存级计算,数据直接通过网络导入内存。读写内存比读写磁盘速度快n个数量级。使用领域不同,一个是批量处理,基于任务调度的;另外一个是实时处理,基于流。
从原理角度来讲:
1.        had o op M/R基于H D F S,需要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率较低。
2.        Storm 基于Zero M Q这个高性能的消息通讯库,不持久化数据。
storm的适用场景:
1.        流数据处理。Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。
2.        分布式r p c。由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式框架来使用。当然,其实我们的搜索引擎本身也是一个分布式r p c系统。
应用:storm被广泛用来进行实时日志处理,出现在实时统计、实时风控、实时推荐等场景中。 在淘宝个性化搜索实时分析项目中,使用time tunnel + h base + storm + ups的架构,每天可处理几十亿的用户日志信息,从用户行为发生到完成分析延迟在秒级。

3. 说说您读完试读样章后的启发
启发:Storm的特性:编程模型简单,可以快速部署开始应用。
扩展性比较好。高可靠性,对于数据处理精细到记录级操作,可达到“完全处理”。
容错性比较不错;支持多种编程语言;支持本地模式,对于开发来说,很有用。
图形化监控,体现出人性化,方面维护管理。

使用道具 举报

回复
论坛徽章:
9
2014年新春福章
日期:2014-02-18 16:49:31马上有钱
日期:2014-02-18 16:49:31itpub13周年纪念徽章
日期:2014-10-08 15:13:38马上有车
日期:2014-10-09 16:50:00暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2016-02-18 09:24:18秀才
日期:2016-02-18 09:24:30秀才
日期:2016-02-18 09:31:52
12#
发表于 2014-8-12 12:15 | 只看该作者
晚些看看,挺好的

使用道具 举报

回复
论坛徽章:
0
13#
发表于 2014-8-12 16:57 | 只看该作者
本帖最后由 花花大岁 于 2014-8-12 17:04 编辑

    Hadoop,适合大批量的数据处理,这是他诞生的原因。而Storm是个实时的、分布式以及具备高容错的计算系统;同时,Storm也可以处理大批量的数据,并且可以实时的处理进数据,这是hadoop不具备的;个人感觉storm在要求实时性统计数据较高的电商行业比较多用,传统的数据仓库、经营分析等还是hadoop较多。
    这个样章,在做了基础的概念介绍及同类流处理工具简单比对之后,主要是讲解安装,感觉还是篇幅较小,希望能阅读其后的内容。

使用道具 举报

回复
论坛徽章:
82
2013系统架构师大会纪念章
日期:2015-07-31 17:48:20探花
日期:2015-08-17 14:58:32榜眼
日期:2015-08-17 14:59:28进士
日期:2015-08-17 15:00:55举人
日期:2015-08-17 15:00:55秀才
日期:2015-08-19 09:36:37秀才
日期:2015-08-20 08:50:41嫦娥
日期:2015-08-21 09:11:54秀才
日期:2015-08-24 09:48:07进士
日期:2015-08-17 14:58:18
14#
发表于 2014-8-13 22:54 | 只看该作者
1. Storm是什么,怎么做,如何做的更好?
一个开源的分布式实时计算系统,可以简单、可靠地处理大量的数据流;支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快;可以使用任意编程语言来开发应用

2. Storm与Spark、Hadoop相比是否有优势?


3. 说说您读完试读样章后的启发
前两张是概念性的介绍和安装部署过程,期待看到更多的,以及与spark和hadoop的对比

使用道具 举报

回复
论坛徽章:
2
15#
发表于 2014-8-16 18:25 | 只看该作者
本帖最后由 ssxssx 于 2014-8-26 08:56 编辑

一  Storm是什么,怎么做,如何做的更好?
如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统。按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义。我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美。同样,storm也为实时计算提供了一些简单优美的原语.
我们来看一下storm的适用场景。
1.流数据处理。Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。
2.分布式rpc。由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。当然,其实我们的搜索引擎本身也是一个分布式rpc系统。
storm的一些概念。
    1.Nimbus:负责资源分配和任务调度。
    2.Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。
    3.Worker:运行具体处理组件逻辑的进程。
    4.Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor

二    Storm与Spark、Hadoop相比是否有优势?

Storm: 分布式实时计算,强调实时性,常用于实时性要求较高的地方 Hadoop:分布式批处理计算,强调批处理,常用于数据挖掘、分析
spark是内存数据库,对机器要求配置比较高
   1. 简单编程
在大数据处理方面相信大家对hadoop已经耳熟能详,基于Google Map/Reduce来实现的Hadoop为开发者提供了map、reduce原语,使并行批处理程序变得非常地简单和优美。同样,Storm也为大数据的实时计算提供了一些简单优美的原语,这大大降低了开发并行实时处理的任务的复杂性,帮助你快速、高效的开发应用。
   2. 多语言支持
除了用java实现spout和bolt,你还可以使用任何你熟悉的编程语言来完成这项工作,这一切得益于Storm所谓的多语言协议。多语言协议是Storm内部的一种特殊协议,允许spout或者bolt使用标准输入和标准输出来进行消息传递,传递的消息为单行文本或者是json编码的多行。
Storm支持多语言编程主要是通过ShellBolt, ShellSpout和ShellProcess这些类来实现的,这些类都实现了IBolt 和 ISpout接口,以及让shell通过java的ProcessBuilder类来执行脚本或者程序的协议。
可以看到,采用这种方式,每个tuple在处理的时候都需要进行json的编解码,因此在吞吐量上会有较大影响
   3.支持水平扩展
在Storm集群中真正运行topology的主要有三个实体:工作进程、线程和任务。Storm集群中的每台机器上都可以运行多个工作进程,每个工作进程又可创建多个线程,每个线程可以执行多个任务,任务是真正进行数据处理的实体,我们开发的spout、bolt就是作为一个或者多个任务的方式执行的。
因此,计算任务在多个线程、进程和服务器之间并行进行,支持灵活的水平扩
   4.容错性强
如果在消息处理过程中出了一些异常,Storm会重新安排这个出问题的处理单元。Storm保证一个处理单元永远运行(除非你显式杀掉这个处理单元)。
   5.可靠的消息保证
  Storm可以保证spout发出的每条消息都能被“完全处理”,这也是直接区别于其他实时系统的地方,如S4。
   6.快速的消息处理
  用ZeroMQ作为底层消息队列, 保证消息能快速被处理
  7.本地模式,支持快速编程测试
  Storm有一种“本地模式”,也就是在进程中模拟一个Storm集群的所有功能,以本地模式运行topology跟在集群上运行topology类似,这对于我们开发和测试来说非常有用。

三  说说您读完试读样章后的启发

storm被广泛用来进行实时日志处理,出现在实时统计、实时风控、实时推荐等场景中。一般来说,我们从类kafka的metaQ或者基于hbase的timetunnel中读取实时日志消息,经过一系列处理,最终将处理结果写入到一个分布式存储中,提供给应用程序访问。如果以后我们每天的实时消息量从几百万到几十亿不等,数据总量达到TB级。对于我们来说,storm往往会配合分布式存储服务一起使用从用户行为发生到完成分析延迟在秒级,这将使得我们的实时处理变得非常方便,从而更好的从海量数据里分析出有效的信息




使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
16#
发表于 2014-8-16 22:07 | 只看该作者
1分布式实时计算系统,优点是全内存计算,实时计算响应快,但是离线计算还是hadoop和spark更好。
3讲解了安装与部署,还看不出过人之处,但是阿里系出品,值得一看,很想了解在实际阿里系统中storm有何实际的应用场景,哪些是它的短板。

使用道具 举报

回复
论坛徽章:
16
奥运会纪念徽章:花样游泳
日期:2008-10-24 13:28:54咸鸭蛋
日期:2012-11-29 00:23:19奥运会纪念徽章:体操
日期:2012-10-25 00:22:23ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512011新春纪念徽章
日期:2011-04-13 21:06:552011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:06:12生肖徽章2007版:猪
日期:2009-05-21 23:20:14生肖徽章2007版:虎
日期:2009-04-25 15:17:39生肖徽章2007版:龙
日期:2009-03-10 21:27:46
17#
发表于 2014-8-18 10:02 | 只看该作者
1. Storm是什么,怎么做,如何做的更好?
storm是一个开源的分布式实时计算系统?可以简单、可靠地处理大量的数据流。Storm有很多实用场景?如实时分析、在线机器学习、持续计算、分布式RPC、ETL等等。Storm支持水平扩展?具有高容错性?保证每个消息都会得到处理?而且处理速度很快?在一个小集群中?每个结点每秒可以处理数以百万计的消息?。Storm的部署和运维都很便捷?而且更为重要的是可以使用任意编程语言来开发应用
2. StormSparkHadoop相比是否有优势?
从整体设计上讲:
Hadoop是磁盘级计算,进行计算时,数据在磁盘上,需要读写磁盘;Storm是内存级计算,数据直接通过网络导入内存。读写内存比读写磁盘速度快n个数量级。磁盘访问延迟约为内存访问延迟的75000倍。所以Storm更快。
storm的网络直传、内存计算,其时延必然比hadoop的通过hdfs传输低得多;当计算模型比较适合流式时,storm的流式处理,省去了批处理的收集数据的时间;因为storm是服务型的作业,也省去了作业调度的时延。所以从时延上来看,storm要快于hadoop。
从原理上讲:
Hadoop M/R基于HDFS,需要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率较低。
Storm 基于ZeroMQ这个高性能的消息通讯库,不持久化数据。
         看看典型的应用场景:
1)几千个日志生产方产生日志文件,需要进行一些ETL操作存入一个数据库。
假设利用hadoop,则需要先存入hdfs,按每一分钟切一个文件的粒度来算(这个粒度已经极端的细了,再小的话hdfs上会一堆小文件),hadoop开始计算时,1分钟已经过去了,然后再开始调度任务又花了一分钟,然后作业运行起来,假设机器特别多,几钞钟就算完了,然后写数据库假设也花了很少的时间,这样,从数据产生到最后可以使用已经过去了至少两分多钟。
而流式计算则是数据产生时,则有一个程序去一直监控日志的产生,产生一行就通过一个传输系统发给流式计算系统,然后流式计算系统直接处理,处理完之后直接写入数据库,每条数据从产生到写入数据库,在资源充足时可以在毫秒级别完成。
2)如果一个大文件的wordcount,把它放到storm上进行流式的处理,等所有已有数据处理完才让storm输出结果,这时候,你再把它和hadoop比较快慢,这时,其实比较的不是时延,而是比较的吞吐了。
3. 说说您读完试读样章后的启发
最主要的方面:Hadoop使用磁盘作为中间交换的介质,而storm的数据是一直在内存中流转的。
两者面向的领域也不完全相同,一个是批量处理,基于任务调度的;另外一个是实时处理,基于流。
以水为例,Hadoop可以看作是纯净水,一桶桶地搬;而Storm是用水管,预先接好(Topology),然后打开水龙头,水就源源不断地流出来了。

使用道具 举报

回复
论坛徽章:
16
奥运会纪念徽章:花样游泳
日期:2008-10-24 13:28:54咸鸭蛋
日期:2012-11-29 00:23:19奥运会纪念徽章:体操
日期:2012-10-25 00:22:23ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512011新春纪念徽章
日期:2011-04-13 21:06:552011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:06:12生肖徽章2007版:猪
日期:2009-05-21 23:20:14生肖徽章2007版:虎
日期:2009-04-25 15:17:39生肖徽章2007版:龙
日期:2009-03-10 21:27:46
18#
发表于 2014-8-18 10:04 | 只看该作者
1. Storm是什么,怎么做,如何做的更好?
storm是一个开源的分布式实时计算系统?可以简单、可靠地处理大量的数据流。Storm有很多实用场景?如实时分析、在线机器学习、持续计算、分布式RPC、ETL等等。Storm支持水平扩展?具有高容错性?保证每个消息都会得到处理?而且处理速度很快?在一个小集群中?每个结点每秒可以处理数以百万计的消息?。Storm的部署和运维都很便捷?而且更为重要的是可以使用任意编程语言来开发应用
2. StormSparkHadoop相比是否有优势?
从整体设计上讲:
Hadoop是磁盘级计算,进行计算时,数据在磁盘上,需要读写磁盘;Storm是内存级计算,数据直接通过网络导入内存。读写内存比读写磁盘速度快n个数量级。磁盘访问延迟约为内存访问延迟的75000倍。所以Storm更快。
storm的网络直传、内存计算,其时延必然比hadoop的通过hdfs传输低得多;当计算模型比较适合流式时,storm的流式处理,省去了批处理的收集数据的时间;因为storm是服务型的作业,也省去了作业调度的时延。所以从时延上来看,storm要快于hadoop。
从原理上讲:
Hadoop M/R基于HDFS,需要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率较低。
Storm 基于ZeroMQ这个高性能的消息通讯库,不持久化数据。
         看看典型的应用场景:
1)几千个日志生产方产生日志文件,需要进行一些ETL操作存入一个数据库。
假设利用hadoop,则需要先存入hdfs,按每一分钟切一个文件的粒度来算(这个粒度已经极端的细了,再小的话hdfs上会一堆小文件),hadoop开始计算时,1分钟已经过去了,然后再开始调度任务又花了一分钟,然后作业运行起来,假设机器特别多,几钞钟就算完了,然后写数据库假设也花了很少的时间,这样,从数据产生到最后可以使用已经过去了至少两分多钟。
而流式计算则是数据产生时,则有一个程序去一直监控日志的产生,产生一行就通过一个传输系统发给流式计算系统,然后流式计算系统直接处理,处理完之后直接写入数据库,每条数据从产生到写入数据库,在资源充足时可以在毫秒级别完成。
2)如果一个大文件的wordcount,把它放到storm上进行流式的处理,等所有已有数据处理完才让storm输出结果,这时候,你再把它和hadoop比较快慢,这时,其实比较的不是时延,而是比较的吞吐了。
3. 说说您读完试读样章后的启发
最主要的方面:Hadoop使用磁盘作为中间交换的介质,而storm的数据是一直在内存中流转的。
两者面向的领域也不完全相同,一个是批量处理,基于任务调度的;另外一个是实时处理,基于流。
以水为例,Hadoop可以看作是纯净水,一桶桶地搬;而Storm是用水管,预先接好(Topology),然后打开水龙头,水就源源不断地流出来了。

使用道具 举报

回复
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:42:02秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:51:162015年中国系统架构师大会纪念徽章
日期:2015-09-16 12:54:392014系统架构师大会纪念章
日期:2015-09-16 12:54:392013系统架构师大会纪念章
日期:2015-09-16 12:54:392012系统架构师大会纪念章
日期:2015-09-16 12:54:392011系统架构师大会纪念章
日期:2015-09-16 12:54:392010系统架构师大会纪念
日期:2015-09-16 12:54:39秀才
日期:2015-12-25 15:31:10
19#
发表于 2014-8-22 08:01 | 只看该作者
集体的著作啊,2楼的写的真不错。

使用道具 举报

回复
论坛徽章:
0
20#
发表于 2014-8-26 10:18 | 只看该作者
支撑,

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表