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

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

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

Hadoop是基于Map/Reduce模型的,处理海量数据的离线分析工具。
Storm是分布式的、实时数据流分析工具,数据是源源不断产生的,例如Twitter的Timeline。

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


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

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

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

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

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


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


Hadoop M/R基于HDFS,需要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率较低。

Storm 基于ZeroMQ这个高性能的消息通讯库,不持久化数据。

你可能感兴趣的:(为什么 Storm 比 Hadoop 快?是由哪几个方面决定的?)