大数据架构师:hadoop、Storm该选哪一个

首先整体认识: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

时间: 2025-01-09 06:09:57

大数据架构师:hadoop、Storm该选哪一个的相关文章

大数据架构师基础:hadoop家族,Cloudera产品系列等各种技术

大数据我们都知道hadoop,可是还会各种各样的技术进入我们的视野:Spark,Storm,impala,让我们都反映不过来.为了能够更好的架构大数据项目,这里整理一下,供技术人员,项目经理,架构师选择合适的技术,了解大数据各种技术之间的关系,选择合适的语言. 我们可以带着下面问题来阅读本文章: 1.hadoop都包含什么技术 2.Cloudera公司与hadoop的关系是什么,都有什么产品,产品有什么特性 3. Spark与hadoop的关联是什么? 4. Storm与hadoop的关联是什么

深入大数据架构师之路,问鼎40万年薪视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

系统架构师(java)和大数据架构师

架构师不是一个职业工种,而是一种能力,而且架构师也分很多种,不同领域的架构师是不一样的.比如互联网架构师和物联网架构师,没有什么可对比的.架构要考虑什么1.考虑系统能做什么,不能做什么,就是常说的系统边界2.确定架构内部的模块与模块之间的关系,以及module与外部是什么关系3.确定非功能性需要,架构的可扩展性,可用性,可维护性以及安全性4.架构确定以后要能够指导开发人员根据架构思想去设计和演化,确保开发出来的东西和架构的规划是一致的.Java系统架构师 系统的技术选型以及可行性评估 分布式技术

北风网大数据架构师课程怎么样?

北风网大数据架构师的课程还是挺不错的,之前报名过一套,现在给大家发点视频,有需要的可以联系我QQ:375537364    链接:http://pan.baidu.com/s/1bPl5aY 密码:ymmi 北风网大数据架构师的课程还是挺不错的,之前报名过一套,现在给大家发点视频,有需要的可以联系我QQ:375537364    链接:http://pan.baidu.com/s/1bPl5aY 密码:ymmi 北风网大数据架构师的课程还是挺不错的,之前报名过一套,现在给大家发点视频,有需要的可

迈向大数据架构师 - 架构师转型方法与架构设计理论

迈向大数据架构师 - 架构师转型方法与架构设计理论课程学习地址:http://www.xuetuwuyou.com/course/233课程出自学途无忧网:http://www.xuetuwuyou.com课程摘自<大数据系统架构分析师成长之路>:http://www.xuetuwuyou.com/course/200 1.课程目标通过本课程的学习,让学员了解到什么是系统架构师,什么大数据系统架构师,两者的区别与联系,程序员与架构师的不同,程序员如何向架构师转型,一个架构师工作日常及必须修炼的

【ZZ】大数据架构师基础:hadoop家族,Cloudera系列产品介绍

http://www.36dsj.com/archives/17192 大数据我们都知道hadoop,可是还会各种各样的技术进入我们的视野:Spark,Storm,impala,让我们都反映不过来.为了能够更好的架构大数据项目,这里整理一下,供技术人员,项目经理,架构师选择合适的技术,了解大数据各种技术之间的关系,选择合适的语言. 我们可以带着下面问题来阅读本文章:1.hadoop都包含什么技术?2.Cloudera公司与hadoop的关系是什么,都有什么产品,产品有什么特性?3.Spark与h

大数据架构师技能图谱

大数据通用处理平台 Spark Flink Hadoop 分布式存储 HDFS 资源调度 Yarn Mesos 机器学习工具 Mahout Spark Mlib TensorFlow (Google 系) Amazon Machine Learning DMTK (微软分布式机器学习工具) 数据分析/数据仓库(SQL类) Pig Hive kylin Spark SQL, Spark DataFrame Impala Phoenix ELK 8.1 ElasticSearch 8.2Logsta

阿里大数据架构师必备技能,你“佩奇”了嘛?

这两天真的是被<啥是佩奇>这支广告片刷屏了.佩奇明明是个喜剧角色,却把所有人都给看哭了! 中间的剧情,小孙子一句:"想要佩奇",结果爷爷就开始了满村子的寻找佩奇,到最后寻找到了小编认为是最好看的佩奇 不知道大家看了之后是什么感觉,反正我看了之后的感觉是非常感动了.不过经过几天的发酵,"佩奇"这两个字似乎有了更多的含义了!各种"佩奇"齐出不穷,女人的"佩奇"是什么样的?程序员的"佩奇"是什么样的?

黑马12期大数据教程(hadoop,storm,kafka,hbase,hive,sqoop)

课程目录:weekend110-第1天 01-hadoop职位需求状况 02-hadoop课程安排 03-hadoop应用场景 04-hadoop对海量数据处理的解决思路 05-hadoop版本选择和伪分布式安装 06-hadoop版本选择和伪分布式安装2 07-hdfs&mapreduce测试 08-hdfs的实现机制初始 09-hdfs的shell操作 10-hadoop集群搭建的无密登陆配置weekend110-第2天 01-NN元数据管理机制 02-NN工作机制2 03-DN工作原理 0