一种基于流式计算引擎的实时数据处理方法及装置.pdf

上传人:111****112 文档编号:4030301 上传时间:2018-08-12 格式:PDF 页数:13 大小:735.95KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510089780.6

申请日:

2015.02.27

公开号:

CN104615777A

公开日:

2015.05.13

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 17/30申请公布日:20150513|||实质审查的生效IPC(主分类):G06F 17/30申请日:20150227|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

浪潮集团有限公司

发明人:

徐正礼; 魏金雷; 赵明超; 臧勇真; 牛硕

地址:

250100山东省济南市高新区浪潮路1036号

优先权:

专利代理机构:

济南信达专利事务所有限公司37100

代理人:

李世喆

PDF下载: PDF下载
内容摘要

本发明提供一种基于流式计算引擎的实时数据处理方法及装置,方法包括:创建Storm的消息队列;将数据存入数据库中,并备份至所述Storm的消息队列;Storm中的Spout实时监听所述消息队列,在监听到有数据被存入所述Storm的消息队列时,拉取所述Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt;Bolt根据预先获取的逻辑规则,对所述拉取的数据进行逻辑处理,以将逻辑处理后的数据更新到所述数据库中。根据本方案,至少能够实现数据处理的实时性。

权利要求书

权利要求书
1.  一种基于流式计算引擎的实时数据处理方法,其特征在于,包括:
创建Storm的消息队列;
将数据存入数据库中,并备份至所述Storm的消息队列;
Storm中的Spout实时监听所述消息队列,在监听到有数据被存入所述Storm的消息队列时,拉取所述Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt;
Bolt根据预先获取的逻辑规则,对所述拉取的数据进行逻辑处理,以将逻辑处理后的数据更新到所述数据库中。

2.  根据权利要求1所述的方法,其特征在于,在所述创建Storm的消息队列之后,进一步包括:
根据预先设定的类型,指定所述消息队列中的标签;
根据指定的标签区分所述消息队列中不同类型的数据。

3.  根据权利要求1所述的方法,其特征在于,在所述将拉取的数据发送给Storm中的Bolt之后,进一步包括:
Spout根据预先设置的过滤规则对所述拉取的数据进行过滤。

4.  根据权利要求1所述的方法,其特征在于,进一步包括:
创建sqoop定时任务,在每隔所述sqoop定时任务设定的时间段时向数据源抽取数据;
由sqoop定时任务执行所述的将数据存入数据库中,并备份至所述Storm的消息队列。

5.  根据权利要求1至4中任一所述的方法,其特征在于,进一步包括:
Spout确定所述Bolt是否成功对所述拉取的数据进行逻辑处理,在确定结果为Bolt成功对所述拉取的数据进行逻辑处理时,Spout将所述拉取的数据从所述Storm的消息队列中移除;在所述Bolt未成功对所述拉取的数据进行逻辑处理时,分析未成功的原因,在分析结果为所述拉取的数据为脏数据 时,Spout将所述拉取的数据从所述Storm的消息队列中移除,在分析结果为数据处理超时时,Spout将所述拉取的数据重新发送给Bolt。

6.  一种基于流式计算引擎的实时数据处理装置,其特征在于,包括:
创建单元,用于创建Storm的消息队列;
数据备份单元,用于将数据存入数据库中,并备份至所述Storm的消息队列;
Spout单元,位于Storm中,用于实时监听所述消息队列,在监听到有数据被存入所述Storm的消息队列时,拉取所述Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt单元;
Bolt单元,位于Storm中,用于根据预先获取的逻辑规则,对所述拉取的数据进行逻辑处理,以将逻辑处理后的数据更新到所述数据库中。

7.  根据权利要求6所述的装置,其特征在于,进一步包括:
指定区分单元,用于根据预先设定的类型,指定所述消息队列中的标签;根据指定的标签区分所述消息队列中不同类型的数据。

8.  根据权利要求6所述的装置,其特征在于,Spout单元,用于根据预先设置的过滤规则对所述拉取的数据进行过滤。

9.  根据权利要求6所述的装置,其特征在于,
所述创建单元,用于创建sqoop定时任务;
进一步包括:sqoop定时任务,用于在每隔所述sqoop定时任务设定的时间段时向数据源抽取数据;由sqoop定时任务执行所述的将数据存入数据库中,并备份至所述Storm的消息队列。

10.  根据权利要求6至9中任一所述的装置,其特征在于,
Spout单元,用于确定所述Bolt单元是否成功对所述拉取的数据进行逻辑处理,在确定结果为Bolt单元成功对所述拉取的数据进行逻辑处理时,Spout将所述拉取的数据从所述Storm的消息队列中移除;在所述Bolt单元未成功对所述拉取的数据进行逻辑处理时,分析未成功的原因,在分析结果为所述拉取的数据为脏数据时,Spout单元将所述拉取的数据从所述Storm 的消息队列中移除,在分析结果为数据处理超时时,Spout单元将所述拉取的数据重新发送给Bolt单元。

说明书

说明书一种基于流式计算引擎的实时数据处理方法及装置
技术领域
本发明涉及计算机技术领域,特别涉及一种基于流式计算引擎的实时数据处理方法及装置。
背景技术
随着互联网的迅速发展,企业日常运营的数据已经达到了TB级别。其中,数据来源囊括了互联网装置可以捕获的任何类型的数据,例如,网站、社交媒体、交易型商业数据以及其它商业环境中创建的数据等。数据量的增长,使得实时处理成为当前需要面对的首要挑战。
目前,可以采用数据集群的处理方式,其中,数据处理主要以MapReduce(编程模型)为主,通过调用MAP函数和Reduce函数对数据进行处理。然而,MapReduce对数据进行处理时的实时性较差。因此,急需提出一种能够对大数据量进行实时处理的方法。
发明内容
有鉴于此,本发明提供一种基于流式计算引擎的实时数据处理方法及装置,以解决现有技术方案进行数据处理时实时性较差的问题。
本发明提供了一种基于流式计算引擎的实时数据处理方法,包括:
创建Storm的消息队列;
将数据存入数据库中,并备份至所述Storm的消息队列;
Storm中的Spout实时监听所述消息队列,在监听到有数据被存入所述Storm的消息队列时,拉取所述Storm的消息队列中当前被存入的数据,并 将拉取的数据发送给Storm中的Bolt;
Bolt根据预先获取的逻辑规则,对所述拉取的数据进行逻辑处理,以将逻辑处理后的数据更新到所述数据库中。
优选地,在所述创建Storm的消息队列之后,进一步包括:
根据预先设定的类型,指定所述消息队列中的标签;
根据指定的标签区分所述消息队列中不同类型的数据。
优选地,在所述将拉取的数据发送给Storm中的Bolt之后,进一步包括:
Spout根据预先设置的过滤规则对所述拉取的数据进行过滤。
优选地,进一步包括:
创建sqoop定时任务,在每隔所述sqoop定时任务设定的时间段时向数据源抽取数据;
由sqoop定时任务执行所述的将数据存入数据库中,并备份至所述Storm的消息队列。
优选地,进一步包括:
Spout确定所述Bolt是否成功对所述拉取的数据进行逻辑处理,在确定结果为Bolt成功对所述拉取的数据进行逻辑处理时,Spout将所述拉取的数据从所述Storm的消息队列中移除;在所述Bolt未成功对所述拉取的数据进行逻辑处理时,分析未成功的原因,在分析结果为所述拉取的数据为脏数据时,Spout将所述拉取的数据从所述Storm的消息队列中移除,在分析结果为数据处理超时时,Spout将所述拉取的数据重新发送给Bolt。
本发明还提供了一种基于流式计算引擎的实时数据处理装置,包括:
创建单元,用于创建Storm的消息队列;
数据备份单元,用于将数据存入数据库中,并备份至所述Storm的消息队列;
Spout单元,位于Storm中,用于实时监听所述消息队列,在监听到有数据被存入所述Storm的消息队列时,拉取所述Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt单元;
Bolt单元,位于Storm中,用于根据预先获取的逻辑规则,对所述拉取的数据进行逻辑处理,以将逻辑处理后的数据更新到所述数据库中。
优选地,进一步包括:
指定区分单元,用于根据预先设定的类型,指定所述消息队列中的标签;根据指定的标签区分所述消息队列中不同类型的数据。
优选地,Spout单元,用于根据预先设置的过滤规则对所述拉取的数据进行过滤。
优选地,
所述创建单元,用于创建sqoop定时任务;
进一步包括:sqoop定时任务,用于在每隔所述sqoop定时任务设定的时间段时向数据源抽取数据;由sqoop定时任务执行所述的将数据存入数据库中,并备份至所述Storm的消息队列。
优选地,
Spout单元,用于确定所述Bolt单元是否成功对所述拉取的数据进行逻辑处理,在确定结果为Bolt单元成功对所述拉取的数据进行逻辑处理时,Spout将所述拉取的数据从所述Storm的消息队列中移除;在所述Bolt单元未成功对所述拉取的数据进行逻辑处理时,分析未成功的原因,在分析结果为所述拉取的数据为脏数据时,Spout单元将所述拉取的数据从所述Storm的消息队列中移除,在分析结果为数据处理超时时,Spout单元将所述拉取的数据重新发送给Bolt单元。
本发明实施例提供了一种基于流式计算引擎的实时数据处理方法及装置,通过创建Storm的消息队列,利用Storm中的Spout对Storm的消息队列进行实时监听,以使得Storm的消息队列中有数据存入时,Spout能够实时对监听到的该数据进行拉取,进而对数据进行实时处理,从而实现了数据处理的实时性。另外,不单单将数据存入数据库,还对数据实现了备份,当数据被处理之后,还可以将处理后的数据更新到数据库中,从而使得数据库中的数据更新。
附图说明
图1是本发明实施例提供的方法流程图;
图2是本发明另一实施例提供的方法流程图;
图3是本发明实施例提供的装置所在设备的硬件架构图;
图4是本发明实施例提供的装置结构示意图;
图5是本发明另一实施例提供的装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种基于流式计算引擎的实时数据处理方法,该方法可以包括以下步骤:
步骤101:创建Storm的消息队列。
步骤102:将数据存入数据库中,并备份至Storm的消息队列。
步骤103:Storm中的Spout实时监听消息队列,在监听到有数据被存入Storm的消息队列时,拉取Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt。
步骤104:Bolt根据预先获取的逻辑规则,对拉取的数据进行逻辑处理,以将逻辑处理后的数据更新到数据库中。
根据上述方案,通过创建Storm的消息队列,利用Storm中的Spout对Storm的消息队列进行实时监听,以使得Storm的消息队列中有数据存入时,Spout能够实时对监听到的该数据进行拉取,进而对数据进行实时处理,从而实现了数据处理的实时性。另外,不单单将数据存入数据库,还对数据实现了备份,当数据被处理之后,还可以将处理后的数据更新到数据库中,从 而使得数据库中的数据更新。
在本实施例中,可以根据不同的类型创建多个Storm的消息队列。考虑到某些类型的数据所占用的空间较少,如果为该类型的数据创建一个Storm的消息队列,浪费系统资源,因此,可以根据预先设定的类型,在创建的某个Storm的消息队列中指定标签,根据该指定的标签区分消息队列中不同类型的数据,从而节省系统资源。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
如图2所示,本发明实施例提供了一种基于流式计算引擎的实时数据处理方法,该方法可以包括以下步骤:
步骤201:创建sqoop定时任务,在每隔sqoop定时任务设定的时间段时向数据源抽取数据。
为了实现对各种类型的数据进行相应处理,需要抽取不同数据源平台上的数据。在本实施例中,考虑到数据量的级别,可以通过创建sqoop定时任务来实现对不同数据源平台上数据的抽取。
其中,该sqoop定时任务设定有时间段,例如,5分钟,用于在每隔该时间段进行一次数据抽取。
步骤202:创建Storm的消息队列,将抽取的数据存入数据库中,并备份至Storm的消息队列。
由于现有技术中采用MapReduce在实现数据处理时实时性较差,因此,在本实施例中,可以通过创建Storm的消息队列,进而利用该Storm的消息队列实现数据的实时处理。
在本实施例中,根据预先设定的类型,可以将每个类型的数据存入相应的数据库中。其中,数据库可以包括DB(Database,数据库)、Hbase集群、HDFS(Hadoop分布式文件系统)、关系数据库、实时应用数据库等。
在本发明一个优选实施例中,为了保证数据的安全性,还可以将数据备份至Storm的消息队列中。
在本发明一个优选实施例中,创建的sqoop定时任务可以是一个虚拟模块,用于执行抽取任务以及执行该将抽取的数据存入数据库中,并备份至Storm的消息队列的任务。
在本发明一个优选实施例中,由于需要将数据备份到Storm的消息队列中,因此,可以根据不同的类型创建多个Storm的消息队列,每个Storm的消息队列保存设定类型的数据,在后续拉取数据时可以直接根据需要拉取的数据类型向相应Storm的消息队列进行拉取,从而提高了数据拉取的效率。
在本发明一个优选实施例中,考虑到一些类型的数据所占用的空间较少,例如,类型A的数据之和占用1M空间,那么,为该类型A的数据创建一个Storm的消息队列,浪费了系统资源。因此,可以根据预先设定的类型,在创建的一个Storm的消息队列中指定标签,根据该指定的标签区分消息队列中不同类型的数据,从而节省系统资源。例如,在一个Storm的消息队列中包括3个类型的数据,即,类型A的数据、类型B的数据和类型C的数据,为了区分Storm的消息队列中不同类型的数据,对每个类型的数据指定标签,例如,指定类型A的数据的标签为a,指定类型B的数据的标签为b,指定类型C的数据的标签为c,在后续向该消息队列拉取类型B的数据时,只需根据该消息队列中的标签,拉取类型B的数据。
步骤203:Storm中的Spout实时监听消息队列,在监听到有数据被存入Storm的消息队列时,拉取Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt。
在本实施例中,可以预先对Storm中的Spout设定实时监听任务,以使Spout对该消息队列进行实时监听,并在监听到有数据被存入Storm的消息队列时,拉取Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt。例如,Storm的消息队列中被存入类型A的数据,那么Spout将该类型A的数据进行拉取,并发送给Bolt。
在本发明一个优选实施例中,可以预先设置各个类型的数据所对应的过滤规则,以利用该过滤规则对相应类型的数据进行过滤操作。其中,Spout 可以预先选择消息队列的标签订阅消息,根据该标签订阅消息确定对应标签的数据的过滤规则,对拉取的数据进行过滤。其中,该过滤规则可以是确定该数据是否有用(或者判断其是否正确),若有用(或正确),则将该数据发送给Bolt,否则,不发送该数据。
步骤204:Bolt根据预先获取的逻辑规则,对拉取的数据进行逻辑处理,以将逻辑处理后的数据更新到数据库中,并将逻辑处理结果返回给Spout。
在本实施例中,可以预先设定逻辑规则,该逻辑规则是对各个类型的数据逻辑处理,逻辑处理的目的将各个类型的数据更新到相应的数据库中。
在本发明一个优选实施例中,可以是创建索引机制,该索引机制用于指引数据的存储数据库。Bolt可以对拉取的数据的配置文件进行解析,确定其索引机制,以确定该拉取的数据需要存储的数据库。
在本发明一个优选实施例中,Storm中的每层Bolt跟踪逻辑处理后的数据,并将逻辑处理结果返回给Spout,以使Spout根据逻辑处理结果进行相应的处理。
步骤205:Spout根据逻辑处理结果确定Bolt是否成功对拉取的数据进行逻辑处理,在确定结果为Bolt成功对拉取的数据进行逻辑处理时,执行步骤206;在Bolt未成功对拉取的数据进行逻辑处理时,执行步骤207。
步骤206:Spout将拉取的数据从Storm的消息队列中移除。
在本实施例中,若Bolt成功对拉取的数据进行逻辑处理,表明已经将拉取的数据更新到了相应数据库中,那么可以对消息队列中所备份的数据进行移除,以为其他数据留出空间。
步骤207:分析未成功的原因,在分析结果为拉取的数据为脏数据时,Spout将拉取的数据从Storm的消息队列中移除,在分析结果为数据处理超时时,Spout将拉取的数据重新发送给Bolt。
在本实施例中,Bolt未成功对拉取的数据进行逻辑处理的原因可以包括以下两种中的任一种:1、拉取的数据为脏数据;2、数据处理超时。
在本发明一个优选实施例中,可以预先设置脏数据和数据处理超时的机 制,该机制可以是Storm中的Spout在分析拉取的数据为脏数据时,将拉取的数据从Storm的消息队列中移除,在分析数据处理超时时,Spout将拉取的数据重新发送给Bolt。
其中,可以设定该数据处理超时时,重新发送的次数。例如,设定该次数为1次,那么在进行一次重新发送后,Bolt对该数据依然未成功处理,那么Spout将该数据从消息队列中移除。
根据本方案,通过创建Storm的消息队列,利用Storm中的Spout对Storm的消息队列进行实时监听,以使得Storm的消息队列中有数据存入时,Spout能够实时对监听到的该数据进行拉取,进而对数据进行实时处理,从而实现了数据处理的实时性。另外,不单单将数据存入数据库,还对数据实现了备份,当数据被处理之后,还可以将处理后的数据更新到数据库中,从而使得数据库中的数据更新。
如图3、图4所示,本发明实施例提供了一种基于流式计算引擎的实时数据处理装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例基于流式计算引擎的实时数据处理装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的基于流式计算引擎的实时数据处理装置40包括:
创建单元401,用于创建Storm的消息队列;
数据备份单元402,用于将数据存入数据库中,并备份至所述Storm的消息队列;
Spout单元403,位于Storm中,用于实时监听所述消息队列,在监听到有数据被存入所述Storm的消息队列时,拉取所述Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt单元;
Bolt单元404,位于Storm中,用于根据预先获取的逻辑规则,对所述拉取的数据进行逻辑处理,以将逻辑处理后的数据更新到所述数据库中。
在本发明一个实施例中,如图5所示,可以进一步包括:
指定区分单元501,用于根据预先设定的类型,指定所述消息队列中的标签;根据指定的标签区分所述消息队列中不同类型的数据。
可选地,Spout单元,用于根据预先设置的过滤规则对所述拉取的数据进行过滤。
所述创建单元,用于创建sqoop定时任务;
进一步包括:sqoop定时任务502,用于在每隔所述sqoop定时任务设定的时间段时向数据源抽取数据;由sqoop定时任务执行所述的将数据存入数据库中,并备份至所述Storm的消息队列。
可选地,Spout单元,用于确定所述Bolt单元是否成功对所述拉取的数据进行逻辑处理,在确定结果为Bolt单元成功对所述拉取的数据进行逻辑处理时,Spout将所述拉取的数据从所述Storm的消息队列中移除;在所述Bolt单元未成功对所述拉取的数据进行逻辑处理时,分析未成功的原因,在分析结果为所述拉取的数据为脏数据时,Spout单元将所述拉取的数据从所述Storm的消息队列中移除,在分析结果为数据处理超时时,Spout单元将所述拉取的数据重新发送给Bolt单元。
上述设备内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有 的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

一种基于流式计算引擎的实时数据处理方法及装置.pdf_第1页
第1页 / 共13页
一种基于流式计算引擎的实时数据处理方法及装置.pdf_第2页
第2页 / 共13页
一种基于流式计算引擎的实时数据处理方法及装置.pdf_第3页
第3页 / 共13页
点击查看更多>>
资源描述

《一种基于流式计算引擎的实时数据处理方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种基于流式计算引擎的实时数据处理方法及装置.pdf(13页珍藏版)》请在专利查询网上搜索。

本发明提供一种基于流式计算引擎的实时数据处理方法及装置,方法包括:创建Storm的消息队列;将数据存入数据库中,并备份至所述Storm的消息队列;Storm中的Spout实时监听所述消息队列,在监听到有数据被存入所述Storm的消息队列时,拉取所述Storm的消息队列中当前被存入的数据,并将拉取的数据发送给Storm中的Bolt;Bolt根据预先获取的逻辑规则,对所述拉取的数据进行逻辑处理,以将逻。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1