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

“快”这个词是不清晰的,专业归于点有两个层面:

  1. 时延 , 指数据从发生到运算发生成果的时刻,题主的“快”应该主要指这个。
  2. 吞吐, 指体系单位时刻处理的数据量。

首要清晰一点,在耗费资源相同的情况下,一般来说Storm的延时低于mapreduce。可是吞吐也低于mapreduce。

为什么说Storm比Hadoop快?(请详细描述hadoop与storm的区别)  Storm Hadoop 大数据 第1张

storm的网络直传、内存核算,当时延必定比Hadoop的经过hdfs传输低得多;当核算模型比较合适流式时,storm的流式处理,省去了批处理的搜集数据的时刻;由于storm是服务型的作业,也省去了作业调度的时延。所以从时延上来看,storm要快于hadoop。

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

假定运用hadoop,则需求先存入hdfs,按每一分钟切一个文件的粒度来算(这个粒度现已极点的细了,再小的话hdfs上会一堆小文件),hadoop开端核算时,1分钟现已曩昔了,然后再开端调度使命又花了一分钟,然后作业运转起来,假定机器特别多,几钞钟就算完了,然后写数据库假定也花了很少的时刻,这样,从数据发生到***能够运用现已曩昔了至少两分多钟。

而流式核算则是数据发生时,则有一个程序去一向监控日志的发生,发生一行就经过一个传输体系发给流式核算体系,然后流式核算体系直接处理,处理完之后直接写入数据库,每条数据从发生到写入数据库,在资源足够时能够在毫秒等级完结。

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

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做的流核算体系。

转载请说明出处
知优网 » 为什么说Storm比Hadoop快?(请详细描述hadoop与storm的区别)

发表评论

您需要后才能发表评论