首先整体认识:Hadoop是磁盘级计算,进行计算时,数据在磁盘上,需要读写磁盘;Storm是内存级计算,数据直接通过网络导入内存。读写内存比读写磁盘速度快n个数量级。根据Harvard CS61课件,磁盘访问延迟约为内存访问延迟的75000倍。所以Storm更快。
注释:
1. 延时 , 指数据从产生到运算产生结果的时间,“快”应该主要指这个。
2. 吞吐, 指系统单位时间处理的数据量。
storm的网络直传、内存计算,其时延必然比hadoop的通过hdfs传输低得多;当计算模型比较适合流式时,storm的流式处理,省去了批处理的收集数据的时间;因为storm是服务型的作业,也省去了作业调度的时延。所以从时延上来看,storm要快于hadoop。
从原理角度来讲:
-
Hadoop M/R基于HDFS,需要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率较低。
-
Storm 基于ZeroMQ这个高性能的消息通讯库,不持久化数据。
为什么storm比hadoop快,下面举一个应用场景
说一个典型的场景,几千个日志生产方产生日志文件,需要进行一些ETL操作存入一个数据库。
假设利用hadoop,则需要先存入hdfs,按每一分钟切一个文件的粒度来算(这个粒度已经极端的细了,再小的话hdfs上会一堆小文件),hadoop开始计算时,1分钟已经过去了,然后再开始调度任务又花了一分钟,然后作业运行起来,假设机器特别多,几钞钟就算完了,然后写数据库假设也花了很少的时间,这样,从数据产生到最后可以使用已经过去了至少两分多钟。
而流式计算则是数据产生时,则有一个程序去一直监控日志的产生,产生一行就通过一个传输系统发给流式计算系统,然后流式计算系统直接处理,处理完之后直接写入数据库,每条数据从产生到写入数据库,在资源充足时可以在毫秒级别完成。
同时说一下另外一个场景:
如果一个大文件的wordcount,把它放到storm上进行流式的处理,等所有已有数据处理完才让storm输出结果,这时候,你再把它和hadoop比较快慢,这时,其实比较的不是时延,而是比较的吞吐了。
--------------------------------------------------------------------------------------------------------------------------------------------------
最主要的方面:Hadoop使用磁盘作为中间交换的介质,而storm的数据是一直在内存中流转的。
两者面向的领域也不完全相同,一个是批量处理,基于任务调度的;另外一个是实时处理,基于流。
以水为例,Hadoop可以看作是纯净水,一桶桶地搬;而Storm是用水管,预先接好(Topology),然后打开水龙头,水就源源不断地流出来了。
---------------------------------------------------------------------------------------------------------------------------------------------------
Storm的主工程师Nathan Marz表示: Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。
Storm的主要特点如下:
1.简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
2.可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
3.容错性。Storm会管理工作进程和节点的故障。
4.水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
5.可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
6.快速。系统的设计保证了消息能得到快速的处理,使用ØMQ作为其底层消息队列。
7.本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
在消耗资源相同的情况下,一般来说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做的流计算系统。
思考:什么项目适合hadoop,什么项目适合Storm
http://my.oschina.net/sphl520/blog/312111
http://www.linuxidc.com/Linux/2015-02/114046.htm
相关推荐
《大数据架构师指南》是一本深入探讨大数据领域中架构设计与实践的专业书籍,旨在帮助读者理解和掌握大数据系统的核心概念、架构设计原则以及实际操作技巧。这本书的高清pdf版本提供了清晰的阅读体验,使得学习者...
- **Apache Kafka**:一个分布式的流处理平台,常用于构建实时数据管道。 - **Apache Storm**:适用于实时计算场景,可以实现低延迟的数据处理。 - **Apache Flink**:提供了流处理和批处理两种模式,支持状态管理和...
大数据平台架构设计方案是...总结来说,构建一个全面的大数据平台架构需要考虑数据的采集、清洗、挖掘分析和治理等多个层面。这样的平台能够帮助企业充分利用大数据的潜力,提升业务洞察力,推动创新并优化决策过程。
大数据架构师是信息技术领域中一个至关重要的角色,他们负责设计和实施能够处理大规模数据的系统。以下是基于给定文件内容的几个大数据架构师的主要职责和要求的详细解释: 1. **系统规划与架构设计**: - 大数据...
大数据架构师是负责构建和维护大数据系统的技术领导者,需要具备深厚的行业知识、技术选型能力、资源调度理解、数据处理经验以及安全治理意识。以下是根据给定文件内容整理出的关于大数据架构师应具备的知识点: 1....
总结起来,大数据架构师是一个综合性强、技术要求高的职位,他们需要具备广泛的技术知识和实践经验,能够处理复杂的系统集成,设计高效的数据架构,并领导团队实现大数据解决方案的开发和优化。
大数据架构师是信息技术领域中一个至关重要的角色,主要负责规划、设计和实施大规模数据处理和分析的架构。在这个职位上,大数据架构师需要具备广泛的技术知识和深厚的业务理解,以便有效地管理和利用公司数据资源,...
在大数据架构师的岗位上,主要职责涵盖了系统规划、数据整合、架构设计、性能优化以及团队领导等多个方面。 首先,大数据架构师需要参与公司的数据平台系统规划和架构设计,确保项目的质量与关键性能指标得以实现。...
大数据架构师是IT行业中负责构建和管理...总的来说,大数据架构师是一个涉及广泛技术和业务知识的综合性角色,他们需要具备强大的技术实力,创新思维,以及卓越的团队领导和项目管理能力,以应对大数据时代的各种挑战。
在大数据资源及安全管理方面,YARN(Yet Another Resource Negotiator)作为一个资源调度平台,负责为运算程序提供服务器资源,其架构设计为Master和StandBy模式,支持多种计算框架如Spark、Storm等。数据隐私脱敏...
【大数据架构师职责与技能】 ...总之,大数据架构师是连接技术与业务的桥梁,他们需要精通技术选型、平台搭建、数据安全与质量、团队管理等多个方面,确保大数据平台能够高效、安全地服务于企业的决策和运营。
大数据架构师是IT行业中至关重要的角色,他们负责构建和维护能够处理海量数据的系统,以支持业务决策和洞察。以下是对大数据架构师岗位职责的详细说明: 1. 架构设计与研发: - 大数据架构师需设计并实现大数据...
大数据架构师是当前技术领域中的关键角色,负责设计、实施和优化大规模数据处理和分析系统。这份技能整理涵盖了大数据架构师所需掌握的核心技术和工具,包括但不限于大数据处理平台、分布式存储、资源调度、机器学习...
首先,Hadoop是Apache基金会的一个开源项目,其核心由HDFS(分布式文件系统)和MapReduce(并行计算模型)组成。HDFS提供了高容错性的分布式存储,允许数据在集群中的多台服务器上冗余存储,确保即使硬件故障也能...
大数据架构师在金融科技行业中扮演着至关重要的角色,他们不仅要具备深厚的技术功底,还需要有卓越的团队管理和战略规划能力。以下是对该岗位的详细解读: **大数据架构师岗位职责** 1. **团队建设和管理**:...
通过上述职责和任职要求的详述,我们可以清晰地了解到大数据架构师这一职位不仅需要具备深厚的技术功底,还需要具备出色的项目管理和团队协作能力,以及持续的学习和创新能力。在当今数据驱动的时代背景下,大数据...
综上所述,大数据架构师是一项高度技术性的职位,不仅要求具备深厚的技术功底,还需要拥有丰富的实战经验和良好的团队协作能力。随着大数据技术的不断发展,这一职位的重要性也在日益凸显,对于企业和个人而言都极具...
大数据架构师是IT行业中至关...大数据架构师的角色涵盖了从技术实现到团队管理的多个层面,他们的工作对于企业的数据战略和竞争优势具有深远影响。因此,他们需要不断更新知识,适应快速变化的大数据技术和业务需求。
Cloudera提供了CDH(Cloudera Distribution Including Apache Hadoop),这是一个增强版的Hadoop发行版,相比Apache Hadoop具有更好的兼容性、安全性和稳定性。 - Cloudera Manager是一个强大的集群管理工具,能够...