当前位置:首页 » 存储配置 » storm存储数据

storm存储数据

发布时间: 2022-05-18 17:09:52

① 什么是Storm,它可以用来做什么

直接网络啊,storm其实就是做实时流式处理的,而hadoop做的一般是批处理,实时性跟不上。当你需要实时就可以用storm来处理你的数据,当然实时流式计算还有spark之类的可以做。可以去官网看看文档http://storm.apache.org/

② 1.2.2 Storm怎么使用这些元数据

1.2.2Storm怎么使用这些元数据
了解了存储在ZooKeeper中的数据,我们自然想知道Storm是如何使用这些元数据的。例如,这些数据何时被写入、更新或删除,这些数据都是由哪种类型的节点(Nimbus、Supervisor、Worker或者Executor)来维护的。接下来,我们就简单介绍一下这些关系,希望读者能对Storm的整体设计实现有更深一层的认识。带上这些知识,能让你的Storm源码之路变得更加轻松愉快。
首先来看一下总体交互图,如图1-4所示。

这个图描述了Storm中每个节点跟ZooKeeper内元数据之间的读写依赖关系,详细介绍如下。
1. Nimbus
Nimbus既需要在ZooKeeper中创建元数据,也需要从ZooKeeper中获取元数据。下面简述图1-4中箭头1和箭头2的作用。
箭头1表示由Nimbus创建的路径,包括:

a. /storm/workerbeats/<topology-id> b. /storm/storms/<topology-id> c. /storm/assignments/<topology-id>

其中对于路径a,Nimbus只会创建路径,不会设置数据(数据是由Worker设置的,后面会介绍);对于路径b和c,Nimbus在创建它们的时候就会设置数据。a和b只有在提交新Topology的时候才会创建,且b中的数据设置好后就不再变化,c则在第一次为该Topology进行任务分配的时候创建,若任务分配计划有变,Nimbus就会更新它的内容。
箭头2表示Nimbus需要获取数据的路径,包括:

a. /storm/workerbeats/<topology-id>/node-port b. /storm/supervisors/<supervisor-id> c. /storm/errors/<topology-id>/<component-id>/e<sequential-id>

Nimbus需要从路径a读取当前已被分配的Worker的运行状态。根据该信息,Nimbus可以得知哪些Worker状态正常,哪些需要被重新调度,同时还会获取到该Worker所有Executor统计信息,这些信息会通过UI呈现给用户。从路径b可以获取当前集群中所有Supervisor的状态,通过这些信息可以得知哪些Supervisor上还有空闲的资源可用,哪些Supervisor则已经不再活跃,需要将分配到它的任务分配到其他节点上。从路径c上可以获取当前所有的错误信息并通过UI呈现给用户。集群中可以动态增减机器,机器的增减会引起ZooKeeper中元数据的变化,Nimbus通过不断获取这些元数据信息来调整任务分配,故Storm具有良好的可扩展性。当Nimbus死掉时,其他节点是可以继续工作的,但是不能提交新的Topology,也不能重新进行任务分配和负载调整,因此目前Nimbus还是存在单点的问题。
2. Supervisor
同Nimbus类似,Superviser也要通过ZooKeeper来创建和获取元数据。除此之外,Supervisor还通过监控指定的本地文件来检测由它启动的所有Worker的运行状态。下面简述图1-4中箭头3、箭头4和箭头9的作用。
箭头3表示Supervisor在ZooKeeper中创建的路径是/storm/supervisors/<supervisor-id>。新节点加入时,会在该路径下创建一个节点。值得注意的是,该节点是一个临时节点(创建ZooKeeper节点的一种模式),即只要Supervisor与ZooKeeper的连接稳定存在,该节点就一直存在;一旦连接断开,该节点则会被自动删除。该目录下的节点列表代表了目前活跃的机器。这保证了Nimbus能及时得知当前集群中机器的状态,这是Nimbus可以进行任务分配的基础,也是Storm具有容错性以及可扩展性的基础。
箭头4表示Supervisor需要获取数据的路径是/storm/assignments/<topology-id>。我们知道它是Nimbus写入的对Topology的任务分配信息,Supervisor从该路径可以获取到Nimbus分配给它的所有任务。Supervisor在本地保存上次的分配信息,对比这两部分信息可以得知分配信息是否有变化。若发生变化,则需要关闭被移除任务所对应的Worker,并启动新的Worker执行新分配的任务。Nimbus会尽量保持任务分配的稳定性,我们将在第7章中进行详细分析。
箭头9表示Supervisor会从LocalState(相关内容会在第4章中介绍)中获取由它启动的所有Worker的心跳信息。Supervisor会每隔一段时间检查一次这些心跳信息,如果发现某个Worker在这段时间内没有更新心跳信息,表明该Worker当前的运行状态出了问题。这时Supervisor就会杀掉这个Worker,原本分配给这个Worker的任务也会被Nimbus重新分配。
3. Worker
Worker也需要利用ZooKeeper来创建和获取元数据,同时它还需要利用本地的文件来记录自己的心跳信息。
下面简述图4-1中箭头5、箭头6和箭头8的作用。
箭头5表示Worker在ZooKeeper中创建的路径是/storm/workerbeats/<topology-id>/node- port。在Worker启动时,将创建一个与其对应的节点,相当于对自身进行注册。需要注意的是,Nimbus在Topology被提交时只会创建路径/storm/workerbeats/<topology-id>,而不会设置数据,数据则留到Worker启动之后由Worker创建。这样安排的目的之一是为了避免多个Worker同时创建路径时所导致的冲突。
箭头6表示Worker需要获取数据的路径是/storm/assignments/<topology-id>,Worker会从这些任务分配信息中取出分配给它的任务并执行。
箭头8表示Worker在LocalState中保存心跳信息。LocalState实际上将这些信息保存在本地文件中,Worker用这些信息跟Supervisor保持心跳,每隔几秒钟需要更新一次心跳信息。Worker与Supervisor属于不同的进程,因而Storm采用本地文件的方式来传递心跳。
4. Executor
Executor只会利用ZooKeeper来记录自己的运行错误信息,下面简述图4-1中箭头7的作用。
箭头7表示Executor在ZooKeeper中创建的路径是/storm/errors/<topology-id>/<component-id> /e<sequential-id>。每个Executor会在运行过程中记录发生的错误。
5. 小结
从前面的描述中可以得知,Nimbus、Supervisor以及Worker两两之间都需要维持心跳信息,它们的心跳关系如下。
Nimbus和Supervisor之间通过/storm/supervisors/<supervisor-id>路径对应的数据进行心跳保持。Supervisor创建这个路径时采用的是临时节点模式,所以只要Supervisor死掉,对应路径的数据就会被删掉,Nimbus就会将原本分配给该Supervisor的任务重新分配。
Worker跟Nimbus之间通过/storm/workerbeats/<topology-id>/node-port中的数据进行心跳保持。Nimbus会每隔一定时间获取该路径下的数据,同时Nimbus还会在它的内存中保存上一次的信息。如果发现某个Worker的心跳信息有一段时间没更新,就认为该Worker已经死掉了,Nimbus会对任务进行重新分配,将分配至该Worker的任务分配给其他Worker。
Worker跟Supervisor之间通过本地文件(基于LocalState)进行心跳保持。

③ hadoop,storm和spark的区别,比较

一、hadoop、Storm该选哪一个?

为了区别hadoop和Storm,该部分将回答如下问题:
1.hadoop、Storm各是什么运算
2.Storm为什么被称之为流式计算系统
3.hadoop适合什么场景,什么情况下使用hadoop
4.什么是吞吐量


首先整体认识: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.简单的模型。类似于MapRece降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
    2.可以使用各种。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
    3.容错性。Storm会管理工作进程和节点的故障。
    4.水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
    5.可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
    6.快速。系统的设计保证了消息能得到快速的处理,使用MQ作为其底层消息队列。
    7.本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

    --------------------------------------------------------------------------------------------------------------------------------
    在消耗资源相同的情况下,一般来说storm的延时低于maprece。但是吞吐也低于maprece。storm是典型的流计算系统,maprece是典型的批处理系统。下面对流计算和批处理系统流程

    这个个数据处理流程来说大致可以分三个阶段:
    1. 数据采集与准备
    2. 数据计算(涉及计算中的中间存储), 题主中的“那些方面决定”应该主要是指这个阶段处理方式。
    3. 数据结果展现(反馈)

    1)阶段,目前典型的处理处理策略:数据的产生系统一般出自页面打点和解析DB的log,流计算将数据采集中消息队列(比如kafaka,metaQ,timetunle)等。批处理系统一般将数据采集进分布式文件系统(比如HDFS),当然也有使用消息队列的。我们暂且把消息队列和文件系统称为预处理存储。二者在延时和吞吐上没太大区别,接下来从这个预处理存储进入到数据计算阶段有很大的区别,流计算一般在实时的读取消息队列进入流计算系统(storm)的数据进行运算,批处理一系统一般会攒一大批后批量导入到计算系统(hadoop),这里就有了延时的区别。
    2)数据计算阶段,流计算系统(storm)的延时低主要有一下几个方面(针对题主的问题)
    A: storm 进程是常驻的,有数据就可以进行实时的处理
    maprece 数据攒一批后由作业管理系统启动任务,Jobtracker计算任务分配,tasktacker启动相关的运算进程
    B: stom每个计算单元之间数据之间通过网络(zeromq)直接传输。
    maprece map任务运算的结果要写入到HDFS,在于rece任务通过网络拖过去运算。相对来说多了读写,比较慢
    C: 对于复杂运算
    storm的运算模型直接支持DAG(有向无环图)
    maprece 需要肯多个MR过程组成,有些map操作没有意义的

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

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

    二、高性能并行计算引擎Storm和Spark比较

    Spark基于这样的理念,当数据庞大时,把计算过程传递给数据要比把数据传递给计算过程要更富效率。每个节点存储(或缓存)它的数据集,然后任务被提交给节点。

    所以这是把过程传递给数据。这和Hadoopmap/rece非常相似,除了积极使用内存来避免I/O操作,以使得迭代算法(前一步计算输出是下一步计算的输入)性能更高。

    Shark只是一个基于Spark的查询引擎(支持ad-hoc临时性的分析查询)

    而Storm的架构和Spark截然相反。Storm是一个分布式流计算引擎。每个节点实现一个基本的计算过程,而数据项在互相连接的网络节点中流进流出。和Spark相反,这个是把数据传递给过程。

    两个框架都用于处理大量数据的并行计算。

    Storm在动态处理大量生成的“小数据块”上要更好(比如在Twitter数据流上实时计算一些汇聚功能或分析)。

    Spark工作于现有的数据全集(如Hadoop数据)已经被导入Spark集群,Spark基于in-memory管理可以进行快讯扫描,并最小化迭代算法的全局I/O操作。

    不过Spark流模块(StreamingMole)倒是和Storm相类似(都是流计算引擎),尽管并非完全一样。

    Spark流模块先汇聚批量数据然后进行数据块分发(视作不可变数据进行处理),而Storm是只要接收到数据就实时处理并分发。

    不确定哪种方式在数据吞吐量上要具优势,不过Storm计算时间延迟要小。

    总结下,Spark和Storm设计相反,而SparkSteaming才和Storm类似,前者有数据平滑窗口(slidingwindow),而后者需要自己去维护这个窗口。

④ 如何将mysql中的数据实时导入到storm中

1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉。。否则导入数据库后会有对应的空行),假如存到“D:\data.txt”这个位置里。
2.根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命令
load data local infile 'D:/data.txt' into table exceltomysql fields terminated by '\t';
注意:盘符我使用的“/”才成功,否则提示找不到文件 下面文章中是用的“\”!
进行导入操作
手动进行Excel数据和MySql数据转换

⑤ 有了spark的streaming,还有必要学习storm吗

你再把它和hadoop比较快慢。

两个框架都用于处理大量数据的并行计算。

所以这是把过程传递给数据,metaQ、hadoop:Hadoop使用磁盘作为中间交换的介质.容错性,再小的话hdfs上会一堆小文件),而是比较的吞吐了,在于rece任务通过网络拖过去运算:
1,只需实现一个简单的Storm通信协议即可,数据直接通过网络导入内存,产生一行就通过一个传输系统发给流式计算系统。Storm保证每个消息至少能得到一次完整处理、多份复制等。二者在延时和吞吐上没太大区别。但是吞吐也低于maprece,可以在处理过程中完全模拟Storm集群,基于流,facebook的puma就是基于hadoop做的流计算系统。而maprece一般需要整个运算结束后将结果批量导入到结果集中,而storm的数据是一直在内存中流转的,目前典型的处理处理策略,尽管并非完全一样。类似于MapRece降低了并行批处理复杂性,数据库,Hadoop可以看作是纯净水.Storm为什么被称之为流式计算系统
3;而Storm是用水管、Ruby和Python,这时候,其时延必然比hadoop的通过hdfs传输低得多。

storm的网络直传,比较慢
C. 数据计算(涉及计算中的中间存储),Storm降低了进行实时处理的复杂性、内存计算.本地模式。读写内存比读写磁盘速度快n个数量级,除了积极使用内存来避免I#47,Storm之于实时处理。默认支持Clojure;O操作。你可以在Storm之上使用各种编程语言。下面对流计算和批处理系统流程

这个个数据处理流程来说大致可以分三个阶段。storm是典型的流计算系统,进行计算时。
3。
以水为例。
3,在资源充足时可以在毫秒级别完成.水平扩展,Spark基于in-memory管理可以进行快讯扫描。
5,像storm的trident也有批概念、数据压缩:
1,也省去了作业调度的时延。所以从时延上来看,假设机器特别多。
2,什么情况下使用hadoop
4。

--------------------------------------------------------------------------------------------------------------------------------
Storm的主工程师Nathan
Marz表示,一般来说storm的延时低于maprece: stom每个计算单元之间数据之间通过网络(zeromq)直接传输,其实比较的不是时延,水就源源不断地流出来了。

从原理角度来讲。

Storm 基于ZeroMQ这个高性能的消息通讯库。Storm有一个“本地模式”,tasktacker启动相关的运算进程
B。
Storm的主要特点如下, 指数据从产生到运算产生结果的时间。
而流式计算则是数据产生时,然后作业运行起来,当然也有使用消息队列的。
6:数据的产生系统一般出自页面打点和解析DB的log:Hadoop是磁盘级计算。要增加对其他语言的支持,然后再开始调度任务又花了一分钟,需要进行一些ETL操作存入一个数据库。Storm是一个分布式流计算引擎;因为storm是服务型的作业。

总结下。

--------------------------------------------------------------------------------------------------------------------------------
在消耗资源相同的情况下。

为什么storm比hadoop快,批处理一系统一般会攒一大批后批量导入到计算系统(hadoop)。
4. 吞吐: storm 进程是常驻的,下面举一个应用场景
说一个典型的场景,流计算将数据采集中消息队列(比如kafaka,Jobtracker计算任务分配、排序。

Spark工作于现有的数据全集(如Hadoop数据)已经被导入Spark集群。更棒的是你可以使用任意编程语言来做开发。每个节点实现一个基本的计算过程。

不过Spark流模块(Streaming Mole)倒是和Storm相类似(都是流计算引擎),有些map操作没有意义的

3)数据结果展现
流计算一般运算结果直接反馈到最终结果集中(展示页面。我们暂且把消息队列和文件系统称为预处理存储,效率较低,按每一分钟切一个文件的粒度来算(这个粒度已经极端的细了?

为了区别hadoop和Storm。根据Harvard CS61课件,maprece是典型的批处理系统,这样。

--------------------------------------------------------------------------------------------------------------------------------
最主要的方面。和Spark相反,每秒可以处理数以百万计的消息。这和Hadoop map#47,一个是批量处理,搜索引擎的索引)、Java。任务失败时,数据在磁盘上, 题主中的“那些方面决定”应该主要是指这个阶段处理方式,基于任务调度的,则需要先存入hdfs。每个节点存储(或缓存)它的数据集。这让你可以快速进行开发和单元测试。

同时说一下另外一个场景、Storm该选哪一个。

Shark只是一个基于Spark的查询引擎(支持ad-hoc临时性的分析查询)

而Storm的架构和Spark截然相反,而数据项在互相连接的网络节点中流进流出: 对于复杂运算
storm的运算模型直接支持DAG(有向无环图)
maprece 需要肯多个MR过程组成。

假设利用hadoop,则有一个程序去一直监控日志的产生,hadoop开始计算时。
2,而Storm是只要接收到数据就实时处理并分发,有数据就可以进行实时的处理
maprece 数据攒一批后由作业管理系统启动任务,几钞钟就算完了。

注释,这个是把数据传递给过程,流计算系统(storm)的延时低主要有一下几个方面(针对题主的问题)
A,然后任务被提交给节点。系统的设计保证了消息能得到快速的处理,1分钟已经过去了,每条数据从产生到写入数据库.hadoop。

不确定哪种方式在数据吞吐量上要具优势.简单的编程模型。

Spark流模块先汇聚批量数据然后进行数据块分发(视作不可变数据进行处理),预先接好(Topology)。Storm保证每个消息都会得到处理;R基于HDFS,使用MQ作为其底层消息队列. 延时 。所以Storm更快。
7。
2)数据计算阶段,不过Storm计算时间延迟要小:
Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算.什么是吞吐量

首先整体认识。
两者面向的领域也不完全相同,几千个日志生产方产生日志文件,然后打开水龙头,该部分将回答如下问题;rece非常相似,把它放到storm上进行流式的处理.可靠的消息处理,storm的流式处理. 数据结果展现(反馈)

1)数据采集阶段,而maprece可以将每次运算的数据集缩小(比如几分钟启动一次),流计算一般在实时的读取消息队列进入流计算系统(storm)的数据进行运算。Storm会管理工作进程和节点的故障,“快”应该主要指这个,不持久化数据,它会负责从消息源重试消息,需要切分输入数据:
1。

实际流计算和批处理系统没有本质的区别.快速. 数据采集与准备
2。

Storm在动态处理大量生成的“小数据块”上要更好(比如在Twitter数据流上实时计算一些汇聚功能或分析),timetunle)等。

二,这里就有了延时的区别。计算是在多个线程,需要读写磁盘.hadoop适合什么场景,而Spark Steaming才和Storm类似,一桶桶地搬,然后写数据库假设也花了很少的时间,storm要快于hadoop,并最小化迭代算法的全局I#47, 指系统单位时间处理的数据量、进程和服务器之间并行进行的、Storm各是什么运算
2,当数据庞大时:
如果一个大文件的wordcount,而且它很快——在一个小集群中,磁盘访问延迟约为内存访问延迟的75000倍。批处理系统一般将数据采集进分布式文件系统(比如HDFS),就好比Hadoop之于批处理,这时,省去了批处理的收集数据的时间、产生中间数据文件,等所有已有数据处理完才让storm输出结果;当计算模型比较适合流式时,Spark和Storm设计相反。相对来说多了磁盘读写,把计算过程传递给数据要比把数据传递给计算过程要更富效率:

Hadoop M#47,接下来从这个预处理存储进入到数据计算阶段有很大的区别;Storm是内存级计算,从数据产生到最后可以使用已经过去了至少两分多钟,而后者需要自己去维护这个窗口.可以使用各种编程语言,处理完之后直接写入数据库,然后流式计算系统直接处理。
maprece map任务运算的结果要写入到HDFS:
1,前者有数据平滑窗口(sliding window),以使得迭代算法(前一步计算输出是下一步计算的输入)性能更高;O操作、高性能并行计算引擎Storm和Spark比较

Spark基于这样的理念;另外一个是实时处理一

⑥ STORM不能用ORACLE吗 能用什么数据库

完全可以,12C可能在某些特性上有增加或调整(一般是添加新特性或修正部分问题)
但主要的功能绝对是一样的所以ORACLE的教程都可以用,乃至9i的也不会有大的问题。
教程教的东西都是普遍性的,新出的特性没有人尝试到教程还需要很长时间。

要注意的是ORACLE是“向下兼容的” 就是说11G备份的数据导入12C理论上没有问题,但是12C里的数据无法通过ORACLE导入导出工具恢复进11G,如果有此需求请绕行以免麻烦。

⑦ Storm与Spark,Hadoop相比是否有优势

Storm优势就在于Storm是实时的连续性的分布式的计算框架,一旦运行起来,除非你将它杀掉,否则它一直处理计算或等待计算的状态.Spark和hadoop都做不到.
当然它们各自都有其应用场景,各有各的优势.可以配合使用.
下面我转一份别人的资料,讲的很清楚.
Storm与Spark、Hadoop这三种框架,各有各的优点,每个框架都有自己的最佳应用场景。
所以,在不同的应用场景下,应该选择不同的框架。
Storm是最佳的流式计算框架,Storm由Java和Clojure写成,Storm的优点是全内存计算,所以它的定位是分布式实时计算系统,按照Storm作者的说法,Storm对于实时计算的意义类似于Hadoop对于批处理的意义。
Storm的适用场景:
1)流数据处理
Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。
2)分布式RPC。由于Storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式RPC框架来使用。
SparkSpark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析。Spark由加州伯克利大学AMP实验室Matei为主的小团队使用Scala开发开发,类似于Hadoop MapRece的通用并行计算框架,Spark基于Map Rece算法实现的分布式计算,拥有Hadoop MapRece所具有的优点,但不同于MapRece的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的Map Rece的算法。
Spark的适用场景:
1)多次操作特定数据集的应用场合
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小。
2)粗粒度更新状态的应用
由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如Web服务的存储或者是增量的Web爬虫和索引。就是对于那种增量修改的应用模型不适合。
总的来说Spark的适用面比较广泛且比较通用。
Hadoop是实现了MapRece的思想,将数据切片计算来处理大量的离线数据数据。Hadoop处理的数据必须是已经存放在HDFS上或者类似HBase的数据库中,所以Hadoop实现的时候是通过移动计算到这些存放数据的机器上来提高效率。
Hadoop的适用场景:
1)海量数据的离线分析处理
2)大规模Web信息搜索
3)数据密集型并行计算
简单来说:
Hadoop适合于离线的批量数据处理适用于对实时性要求极低的场景
Storm适合于实时流数据处理,实时性方面做得极好
Spark是内存分布式计算框架,试图吞并Hadoop的Map-Rece批处理框架和Storm的流处理框架,但是Spark已经做得很不错了,批处理方面性能优于Map-Rece,但是流处理目前还是弱于Storm,产品仍在改进之中

⑧ 请描述下大数据三大平台hadoop,storm,spark的区别和应用场景

Hadoop 当前大数据管理标准之一,运用在当前很多商业应用系统。可以轻松地集成结构化、半结构化甚至非结构化数据集还是离线处理,批处理比较多,用的比较广的是hive
Storm 用于处理高速、大型数据流的分布式实时计算系统。为Hadoop添加了可靠的实时数据处理功能
spark基于内存的,吞吐量比storm大一点。而且spark集成的sparkSQL,MLlib,Graph貌似比较方便 !

⑨ 为什么storm的数据来自于消息队列

Storm的解决问题的scope主要在于流计算,说流计算之前我们先简单的说下一般数据处理系统的过程。一般数据处理简单说要有几个环节:数据采集,数据计算,结果输出。题主的问题主要是在数据采集和计算之间的对接。
一般来说计算系统(storm)不会自己产生业务数据,业务数据一般来自页面的埋点,或者对数据库log的解析,对于storm来说采集系统是个外部系统。 采集系统是数据的生产者,流计算(storm)是数据的消费者。二者的速度并不是时时刻刻匹配的,中间就需要需要一个缓冲,这个模型下消息队列在适合不过了。当然为什么一般用kafka,这个超出了这个问题,我们暂不讨论。如果题主要处理的数据不是实时产生的而是静态数据那就没必要使用消息队列了,当然也没必要使用storm,使用Hadoop MR更合适。
关于spout会不会重复读取数据的问题,简单来说消息队列中数据会分partition支持多并发。 题主可以看看kafka的文档,一般消息队列,对一份数据(一个topic,对应离线系统的表)会分不同的parition,不同的spout并发可以读取不同的parition,当然一个并发可以读取多个parition,但是多个并发读取一个parition会引起混乱这就是题主的问题。也就是实际应用中一个parition只会有一个并发读取。

热点内容
c语言语句有 发布:2024-09-21 10:47:53 浏览:561
oracle存储过程定义变量 发布:2024-09-21 10:30:42 浏览:382
预编译的作用 发布:2024-09-21 10:24:48 浏览:590
网页的访问量 发布:2024-09-21 10:14:46 浏览:146
压缩机阻 发布:2024-09-21 10:12:00 浏览:649
du查看文件夹大小 发布:2024-09-21 10:02:00 浏览:986
servuftpserver 发布:2024-09-21 09:58:51 浏览:387
迈腾引擎配置怎么样 发布:2024-09-21 09:39:33 浏览:592
怀孕骨算法 发布:2024-09-21 09:32:58 浏览:659
为啥哔哩哔哩缓存不了电影 发布:2024-09-21 09:23:56 浏览:487