最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[综合] Storm概念解读以及特点分析

[复制链接]
跳转到指定楼层
楼主
发表于 2015-10-4 11:40:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

 Storm是什么如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统。按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义。我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美。同样,storm也为实时计算提供了一些简单优美的原语。

  我们来看一下storm的适用场景。

  1.流数据处理。Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。

  2.分布式rpc。由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。当然,其实我们的搜索引擎本身也是一个分布式rpc系统。

  Storm概念

  Storm是一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。GitHub上的最新版本是Storm 0.8.0,基本是用Clojure写的。

  Storm为分布式实时计算提供了一组通用原语,可被用于"流处理"之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm也可被用于"连续计算"(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于"分布式RPC",以并行的方式运行昂贵的运算。 Storm的主工程师Nathan Marz表示:

  Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm用于实时处理,就好比 Hadoop 用于批处理。Storm保证每个消息都会得到处理,而且它很快--在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。

  Storm的主要特点如下:

  简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。

  可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。

  容错性。Storm会管理工作进程和节点的故障。

  水平扩展。计算是在多个线程、进程和服务器之间并行进行的。

  可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。

  快速。系统的设计保证了消息能得到快速的处理,使用ØMQ作为其底层消息队列。

  本地模式。Storm有一个"本地模式",可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

  Storm与Hadoop、Spark对比

  Hadoop,Spark和Storm是目前最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据处理,Spark常用于离线的快速的大数据处理,而Storm常用于在线的实时的大数据处理。

  问题:为什么 Storm 比 Hadoop 快?是由哪几个方面决定的?

  回答(一)

  这里的快主要是指的时延。

  storm的网络直传、内存计算,其时延必然比hadoop的通过hdfs传输低得多;当计算模型比较适合流式时,storm的流式处理,省去了批处理的收集数据的时间;因为storm是服务型的作业,也省去了作业调度的时延。所以从时延上来看,storm要快于hadoop。

  说一个典型的场景,几千个日志生产方产生日志文件,需要进行一些ETL操作存入一个数据库。

  假设利用hadoop,则需要先存入hdfs,按每一分钟切一个文件的粒度来算(这个粒度已经极端的细了,再小的话hdfs上会一堆小文件),hadoop开始计算时,1分钟已经过去了,然后再开始调度任务又花了一分钟,然后作业运行起来,假设机器特别多,几钞钟就算完了,然后写数据库假设也花了很少的时间,这样,从数据产生到最后可以使用已经过去了至少两分多钟。

  而流式计算则是数据产生时,则有一个程序去一直监控日志的产生,产生一行就通过一个传输系统发给流式计算系统,然后流式计算系统直接处理,处理完之后直接写入数据库,每条数据从产生到写入数据库,在资源充足时可以在毫秒级别完成。

  当然,跑一个大文件的wordcount,本来就是一个批处理计算的模型,你非要把它放到storm上进行流式的处理,然后又非要让等所有已有数据处理完才让storm输出结果,这时候,你再把它和hadoop比较快慢,这时,其实比较的不是时延,而是比较的吞吐了。

  回答(二)

  首先要明白Storm和Hadoop的应用领域,注意加粗、标红的关键字。

  Hadoop是基于Map/Reduce模型的,处理海量数据的离线分析工具。

  Storm是分布式的、实时数据流分析工具,数据是源源不断产生的,例如Twitter的Timeline。

  再回到你说的速度问题,只能说Storm更适用于实时数据流,Map/Reduce模型在实时领域很难有所发挥,不能简单粗暴的说谁快谁慢。

  回答(三)

  “快”这个词是不明确的,专业属于点有两个层面:

  1. 延时 , 指数据从产生到运算产生结果的时间,题主的“快”应该主要指这个。

  2. 吞吐, 指系统单位时间处理的数据量。

  首先明确一点,在消耗资源相同的情况下,一般来说storm的延时低于mapreduce。但是吞吐也低于mapreduce。 @张云聪已经给了比较好的介绍,我再补充一下。storm是典型的流计算系统,mapreduce是典型的批处理系统。下面对流计算和批处理系统流程

  真个数据处理流程来说大致可以分三个阶段:

  1. 数据采集与准备

  2. 数据计算(涉及计算中的中间存储), 题主中的“那些方面决定”应该主要是指这个阶段处理方式。

  3. 数据结果展现(反馈)

  1)数据采集阶段,目前典型的处理处理策略:数据的产生系统一般出自页面打点和解析DB的log,流计算将数据采集中消息队列(比如kafaka,metaQ,timetunle)等。批处理系统一般将数据采集进分布式文件系统(比如HDFS),当然也有使用消息队列的。我们暂且把消息队列和文件系统称为预处理存储。二者在延时和吞吐上没太大区别,接下来从这个预处理存储进入到数据计算阶段有很大的区别,流计算一般在实时的读取消息队列进入流计算系统(storm)的数据进行运算,批处理一系统一般会攒一大批后批量导入到计算系统(hadoop),这里就有了延时的区别。

  2)数据计算阶段,流计算系统(storm)的延时低主要有一下几个方面(针对题主的问题)

  A: storm 进程是常驻的,有数据就可以进行实时的处理

  mapreduce 数据攒一批后由作业管理系统启动任务,Jobtracker计算任务分配,tasktacker启动相关的运算进程

  B: stom每个计算单元之间数据之间通过网络(zeromq)直接传输。

  mapreduce map任务运算的结果要写入到HDFS,在于reduce任务通过网络拖过去运算。相对来说多了磁盘读写,比较慢

  C: 对于复杂运算

  storm的运算模型直接支持DAG(有向无环图)

  mapreduce 需要肯多个MR过程组成,有些map操作没有意义的

  3)数据结果展现

  流计算一般运算结果直接反馈到最终结果集中(展示页面,数据库,搜索引擎的索引)。而mapreduce一般需要整个运算结束后将结果批量导入到结果集中。

  实际流计算和批处理系统没有本质的区别,像storm的trident也有批概念,而mapreduce可以将每次运算的数据集缩小(比如几分钟启动一次),facebook的puma就是基于hadoop做的流计算系统。



楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-29 22:03

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表