本申请属于大数据处理技术领域,尤其涉及一种数据存储的方法和一种服务器。
背景技术:
随着云时代的来临,大数据也吸引了越来越多的关注。大数据需要特殊的技术,以有效地处理大量的数据。例如,在进行大数据的采集和入库时,常见地可以应用kafka和hadoop两种技术。其中,kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。hadoop是一种分布式系统基础架构,其核心设计包括hadoop分布式文件系统(hadoopdistributedfilesystem,hdfs)和mapreduce。hdfs是一种分布式文件系统,mapreduce是一种编程模型,用于对大规模数据集的并行运算。
需要说明的是,由于大数据中往往包括各类数据,因此在进行入库时,需要实现数据的分流入库,也即,将各类数据存放到为各个数据类别预设的存储空间中。具体地,利用kafka和hadoop进行大数据的采集和入库时,首先需要采用kafka完成数据的采集。之后,将kafka中采集的数据先写入hdfs中,最后再利用mapreduce计算引擎每隔一段预设时间将已写入hdfs的数据移动到与该数据的数据类别对应的存储空间中,完成数据入库。
在上述的过程中,对kafka采集的数据进行数据分流时,还需要先写入到hdfs中,写入过程需要花费一定时间,这样就使得kafka采集的数据无法及时进行数据分流和入库。
技术实现要素:
有鉴于此,本申请实施例提供了一种数据存储的方法,以解决现有技术中kafka采集的数据无法及时进行数据分流和入库的问题。
本申请实施例的第一方面提供了一种数据存储的方法,可以包括:
从kafka消息队列中获取待分流的目标数据;
获取该目标数据的目标属性标识;
根据预设的属性标识和预设的存储空间的映射关系,确定该目标属性标识对应的目标存储空间,该目标存储空间为hadoop分布式文件系统hdfs服务器上的存储空间;
向该hdfs服务器发送将该目标数据写入该目标存储空间的指示消息。
在一些可能的实现方式中,该根据预设的属性标识和预设的存储空间的映射关系,确定该目标属性标识对应的目标存储空间,可以包括:
根据该目标数据的该目标属性标识,利用flink引擎、storm引擎或sparkstreaming引擎从该映射关系中查询确定该目标属性标识对应的该目标存储空间。
在一些可能的实现方式中,该目标属性标识可以包括该目标数据的创建者标识,用户标识或数据类别标识中的至少一种。
本申请实施例的第二方面提供了一种数据存储的方法,可以包括:
hadoop分布式文件系统hdfs服务器获取目标服务器发送的将目标数据写入目标存储空间的指示消息,该目标数据由该目标服务器从kafka消息队列中获取,该目标存储空间为该目标服务器在确定该目标数据的目标属性标识后,根据预设的属性标识和预设的存储空间的映射关系确定的与该目标属性标识对应的存储空间;
该hdfs服务器将该目标数据写入该目标存储空间。
在一些可能的实现方式中,该目标存储空间为该目标服务器在确定该目标数据的目标属性标识后,利用flink引擎、storm引擎或者sparkstreaming引擎从预设的属性标识和预设的存储空间的映射关系查询确定的与该目标属性标识对应的存储空间。
在一些可能的实现方式中,该属性标识可以包括数据的创建者标识,用户标识或数据类别标识中的至少一种。
本申请实施例的第三方面提供了一种数据存储系统,可以包括:
kafka服务器、目标服务器和hadoop分布式文件系统hdfs服务器;
该kafka服务器,用于采集目标数据,并将该目标数据以kafka队列消息的形式发送至该目标服务器;
该目标服务器,用于获取该kafka队列消息中的该目标数据;确定该目标数据的目标属性标识;根据预设的属性标识和预设的存储空间的映射关系,确定该目标属性标识对应的目标存储空间;向该hdfs服务器发送将该目标数据写入该目标存储空间的指示消息,该目标存储空间为该hdfs服务器上的存储空间;
该hdfs服务器,用于将该目标数据写入该目标存储空间。
本申请实施例的第四方面提供了一种目标服务器,可以包括:
收发模块,用于从kafka消息队列中获取待分流的目标数据;
查询模块,用于获取该目标数据的目标属性标识;根据预设的属性标识和预设的存储空间的映射关系,确定该目标属性标识对应的目标存储空间,该目标存储空间为hadoop分布式文件系统hdfs服务器上的存储空间;
读写模块,用于向该hdfs服务器发送将该目标数据写入该目标存储空间的指示消息。
在一些可能的实现方式中,
该查询模块,具体用于根据该目标数据的该目标属性标识,利用flink引擎、storm引擎或sparkstreaming引擎从该映射关系中查询确定该目标属性标识对应的该目标存储空间。
在一些可能的实现方式中,该目标属性标识可以包括该目标数据的创建者标识,用户标识或数据类别标识中的至少一种。
本申请实施例的第五方面提供了一种hdfs服务器,可以包括:
收发模块,用于获取目标服务器发送的将目标数据写入目标存储空间的指示消息,该目标数据由该目标服务器从kafka消息队列中获取,该目标存储空间为该目标服务器在确定该目标数据的目标属性标识后,根据预设的属性标识和预设的存储空间的映射关系确定的与该目标属性标识对应的存储空间;
读写模块,用于将该目标数据写入该目标存储空间。
在一些可能的实现方式中,该目标存储空间为该目标服务器在确定该目标数据的目标属性标识后,利用flink引擎、storm引擎或者sparkstreaming引擎从预设的属性标识和预设的存储空间的映射关系查询确定的与该目标属性标识对应的存储空间。
在一些可能的实现方式中,该属性标识可以包括数据的创建者标识,用户标识或数据类别标识中的至少一种。
本申请实施例的第六方面提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面、第二方面以及第一方面和第二方面中任一项可能的实现方式中所描述的步骤。
本申请实施例的第七方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面、第二方面以及第一方面和第二方面中任一项可能的实现方式中所描述的步骤。
本申请实施例中,当kafka服务器采集到数据后,目标服务器获取kafka服务器所采集的目标数据,并根据预设的属性标识和预设的存储空间的映射关系,确定目标数据的目标属性标识对应的目标存储空间。之后,目标服务器向hdfs服务器下发指示消息,指示将目标数据写入该目标存储空间中,从而完成数据的分流入库。也即,本申请实施例所提供的方法中,目标服务器在获取到目标数据,并确定目标存储空间后,可以直接将目标数据写入目标存储空间,相比现有技术中减少了数据的存储次数,因此减少了数据分流入库的时间。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据存储系统的系统架构图;
图2是本申请实施例提供的一种数据存储的方法的一个实施例示意图;
图3是本申请实施例提供的一种数据存储的方法的另一个实施例示意图;
图4是本申请实施例提供的一种数据存储的方法的另一个实施例示意图;
图5是本申请实施例提供的一种目标服务器的一个实施例示意图;
图6是本申请实施例提供的一种hdfs服务器的一个实施例示意图;
图7是本申请实施例提供的一种服务器的一个实施例示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
下面对本申请实施例中涉及的一些术语分别进行介绍:
kafka是一种高吞吐量的分布式发布订阅消息系统,具有高水平扩展和高吞吐量的特点,可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/spark流式处理引擎,web/nginx日志、访问日志和消息服务等等。
hadoop是一个由apache基金会所开发的分布式系统基础架构,使得用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。hadoop的框架核心的设计可以包括:hdfs和mapreduce。hdfs为海量的数据提供了存储,而mapreduce则为海量的数据提供了计算。
其中,mapreduce是一种用于数据批处理的计算引擎,其在执行对hdfs集群上的大规模数据的运算任务时,将该运算任务分配给hdfs集群的一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。mapreduce在分配运算任务时,采用了一种“数据本地化”的概念:将运算任务分配至含该运算任务处理的数据块的节点上,并且将该运算任务的程序也一并复制到该节点上运行,之后再整合各个节点的中间结果,得到最终结果。
基于上述描述的mapreduce的运行原理,现有在利用kafka和hadoop实现数据采集和分流入库时,首先采用kafka服务器集群实现数据的采集,并将采集得到的数据保存在kafka服务器集群的各个节点服务器上。之后的分流入库前,首先利用mapreduce从kafka服务器集群的各个节点中提取采集的数据,并临时保存在hdfs服务器集群上的存储空间中。之后,每隔一段时间,再采用mapreduce所在的主节点服务器执行对hdfs服务器集群上的存储空间中的数据进行分流入库的运算任务:mapreduce所在的主节点服务器向hdfs服务器集群的各个节点服务器下发数据分流任务,指示各个节点服务器将临时保存的各个类别的数据移动至与该数据的数据类别所对应的存储空间中。各个节点服务器在执行任务时,可以每隔一段时间发送一个心跳(heartbeat)响应,告知任务进度。在各个节点都完成分流任务并告知主节点后,完成kafka采集的数据的分流入库。
上述过程中,由于mapreduce的运行机制需要先将kafka服务器采集的数据先存储到hdfs服务器,之后mapreduce才能进一步进行分流。但是,将kafka服务器中的数据写入hdfs服务器需要一定时间,这样就导致kafka服务器采集的数据不能及时进行数据的分流入库,难以适应一些对实时性要求高的数据的分流入库场景。
基于上述的描述,本申请实施例提供一种数据存储系统,具体参见图1,图1为本申请实施例提供的一种数据存储系统的架构示意图,可以包括:
kafka服务器101、目标服务器102和hdfs服务器103。
kafka服务器101在采集得到目标数据后,发送给目标服务器102。目标服务器102根据预设的属性标识和预设的存储空间的映射关系,确定目标数据的目标属性标识对应的目标存储空间,该目标存储空间为hdfs服务器103上的存储空间。之后,目标服务器102向hdfs服务器103下发指示消息,指示将目标数据写入目标存储空间,从而完成数据的分流入库操作。
其中,上述的kafka服务器101和hdfs服务器103可以分别由至少两个节点服务器组成。hdfs服务器103的至少两个节点服务器中,可以包括一个主节点(namenode)服务器和至少一个数据节点(datanode)服务器。主节点用于管理hdfs的名称空间、数据块的映射信息、配置副本策略和处理客户端的读写请求等,数据节点用于存储实际的数据块和执行数据块的读写操作。
目标服务器102可以由一个或者多个配置有数据运算引擎的服务器组成。目标服务器上102上可以与每个kafka服务器101中的每个节点服务器都建立通信连接,从而可以获取每个kafka节点服务器采集的数据。之后,在向hdfs服务器103发送写入目标数据的指示消息时,具体可以是向hdfs服务器103中的主节点服务器发送该指示消息,由该主节点服务器指示其他节点服务器完成目标数据的写入操作。
本申请实施例中,通过在kafka服务器和hdfs服务器之间添加目标服务器,当kafka服务器采集到数据后,目标服务器获取kafka服务器所采集的目标数据,并根据预设的属性标识和预设的存储空间的映射关系,确定目标数据的目标属性标识对应的目标存储空间。之后,目标服务器向hdfs服务器下发指示消息,指示将目标数据写入该目标存储空间中,完成数据的分流入库。由于本申请实施例所提供的方案中,目标服务器在获取到目标数据,并确定目标存储空间后,可以直接指示将目标数据写入目标存储空间,从而完成数据的分流入库,相比现有技术中减少了数据的写入次数,因此减少了数据分流入库的时间。
上述的实施例中对本申请所采用的数据存储系统的架构进行了说明,下面具体参照图2,图2为本申请实施例提供的一种数据存储的方法的一个实施例示意图,可以包括:
s201,目标服务器从kafka消息队列中获取待分流的目标数据。
如前述的实施例,本实施例中,目标服务器可以由一个或者多个配置了数据运算引擎的服务器组成,在获取kafka消息队列时,可以由该数据运算引擎来执行获取操作。其中,运行在目标服务器上的数据运算引擎可以包括flink引擎、storm引擎或sparkstreaming引擎,或者其他可以与hadoop和kafka相结合、且无需基于hdfs集群上的数据进行运算的运算引擎,例如samsza引擎,具体此处不做限定。
但需要说明的是,flink引擎和storm引擎为流处理计算引擎,因此利用这两者来从kafka消息队列中获取待分流的目标数据时,可以实现实时获取。而sparkstreaming引擎为“微批”处理计算引擎,使用sparkstreaming引擎来从kafka消息队列中获取待分流的目标数据时,需要预先设定时间间隔,按照该时间间隔来周期获取目标数据。
s202,目标服务器获取目标数据的目标属性标识。
目标属性标识可以携带在目标数据的元数据中,或者携带在目标数据自身中,目标服务器获取到目标数据后,可以从目标数据的元数据或者目标数据自身中确定目标数据的目标属性标识,该目标属性标识用于标识目标数据的自身属性类别。
需要说明的是,kafka所采集的数据可以包括各种类别的数据,例如各类互联网数据(例如电商网站的交易数据、用户浏览网页的浏览数据和搜索数据等),各种可穿戴设备或物联网设备的运行数据,用户移动终端中各种应用程序的日志信息、用户的访问信息等。
在一个具体的实施例中,目标数据的目标属性标识可以是创建者标识,用于标识目标数据的来源,例如kafka采集的是各种设备的数据,创建者标识可以是设备标识;kafka采集的是各种应用的数据,则创建者标识可以是应用标识。目标属性标识还可以是用户标识,用于标识目标数据的所属用户,例如kafka采集的数据包括多个用户的数据,则用户标识可以是系统为每个用户设定的用户编号。目标属性标识还可以是数据类别标识,用户标识目标数据的所属类别,例如kafka采集的数据包括用户在电商网站上的浏览和搜索数据,则数据类别标识可以是为浏览数据和搜索数据各自设定的类别标识。
s203,目标服务器根据预设的属性标识和预设的存储空间的映射关系,确定目标属性标识对应的目标存储空间。
本实施例中,目标服务器预先配置有数据的属性标识和数据的存储空间的映射关系。其中,该映射关系可以以映射表的形式存放在目标服务器中,具体可以是数据的属性标识和存储空间的标识的映射关系,存储空间是指hdfs服务器上的存储空间,可以是存储表或者数据库。
目标服务器确定目标属性标识后,利用自身的运算引擎从该映射关系中查询确定与该目标属性标识对应的目标存储空间。其中,该映射关系在配置后,可以接收外部设备发送的指令进行更新。
s204,目标服务器向hdfs服务器发送将目标数据写入目标存储空间的指示消息。
本实施例中,目标服务器在确定目标存储空间后,向hdfs服务器集群中的主节点服务器发送指示消息,指示hdfs服务器将目标数据写入目标存储空间中。其中,指示消息包由有目标数据和目标存储空间的标识,目标存储空间为hdfs服务器上的存储空间,可以是数据存储表或数据库。
本申请实施例中,当kafka服务器采集到数据后,目标服务器获取kafka服务器所采集的目标数据,并根据预设的属性标识和预设的存储空间的映射关系,确定目标数据的目标属性标识对应的目标存储空间。之后,目标服务器向hdfs服务器下发指示消息,指示将目标数据写入该目标存储空间中,从而完成数据的分流入库。也即,本申请实施例所提供的方法中,目标服务器在获取到目标数据,并确定目标存储空间后,可以直接将目标数据写入目标存储空间,相比现有技术中减少了数据的存储次数,因此减少了数据分流入库的时间。
下面具体参照图3,图3为本申请实施例提供的一种数据存储的方法的另一个实施例示意图,可以包括:
s301,hdfs服务器获取目标服务器发送的将目标数据写入目标存储空间的指示消息,该目标数据由目标服务器从kafka消息队列中获取,该目标存储空间为目标服务器在确定目标数据的目标属性标识后,根据预设的属性标识和预设的存储空间的映射关系确定的与目标属性标识对应的存储空间。
本实施例中,hdfs服务器与目标服务器相连,可以接收目标服务器发送的将目标数据写入目标存储空间的指示消息,该指示消息中包括目标数据和目标存储空间的标识。其中,该目标存储空间可以是目标服务器在获取到kafka服务器采集的目标数据后,从预设的属性标识和预设的存储空间的映射关系中查询确定的,与该目标属性标识对应的存储空间。该目标存储空间是hdfs服务器上的存储空间,具体可以是与该目标属性标识对应的存储表或数据库。
s302,hdfs服务器将目标数据写入目标存储空间。
本实施例中,hdfs服务器在获取到指示消息后,利用指示消息中包括的目标存储空间的标识确定目标存储空间,并将接收的目标数据写入该目标存储空间中,完成数据的分流入库。
本申请实施例中,指示消息中包括目标数据和目标数据的目标存储空间的标识,hdfs获取到该指示消息后,即可以将该目标数据写入目标存储空间,完成数据的入库。相比现有的,先写入,再进行数据分流,最后二次写入,才能完成数据入库的方法。本实施例的方案中,数据一次写入即可以完成数据的入库操作,因此减少了入库延迟。
下面具体参照图4,图4为本申请实施例提供的一种数据存储的方法的另一个实施例示意图,可以包括:
s401,kafka服务器采集目标数据。
本实施例中,kafka是一种高吞吐量的分布式发布订阅消息系统,其对目标数据的采集过程可以包括:数据采集和分区存储等过程。数据采集阶段中,kafka服务器集群与多个生产者(producer)设备相连,通过采集器采集各个生产者设备的目标数据,并通过数据管道(datapipeline)上传至kafka服务器集群。其中,kafka服务器在获取到采集的目标数据后,可以对目标数据进行分类和分区,每一类的数据称为一个主题(topic),每一个topic至少指定一个分区(partition)。每个分区都是一个有序的队列,并对应一个kafka节点服务器。分区存储,也即将每个topic类别的目标数据都分配在至少一个节点服务器上存储,从而实现负载均衡。
s402,kafka服务器通过kafka消息队列向目标服务器发送该目标数据。
本实施例中,目标服务器与kafka服务器集群的节点服务器具有通信连接,作为kafka采集的数据的消费者(consumer)。kafka在采集得到目标数据后,通过kafka消息队列向目标服务器发送该目标数据。
其中,需要说明的是,目标服务器若是通过flink引擎或storm引擎来获取kafka消息队列,则kafka节点服务器可以被设定采集到目标数据后,实时向目标服务器发送kafka消息队列。若目标服务器上配置的是sparkstreaming引擎,则kafka节点服务器可以被设定采集到目标数据后,每隔一段时间,向目标服务器发送kafka消息队列。
s403,目标服务器获取目标数据的目标属性标识。
s404,目标服务器根据预设的属性标识和预设的存储空间的映射关系,确定目标属性标识对应的目标存储空间。
s405,目标服务器向hdfs服务器发送将目标数据写入目标存储空间的指示消息。
需要说明的是,步骤s403-步骤s405与图2所示的实施例中步骤s202-步骤s204类似,此处不再赘述。
s406,hdfs服务器将目标数据写入目标存储空间。
需要说明的是,步骤s406与图3所示的实施例中步骤s302类似,此处不再赘述。
本申请实施例中,当kafka采集到目标数据后,kafka服务器通过消息队列向目标服务器发送该目标数据。之后,目标服务器根据预设的属性标识和预设的存储空间的映射关系,确定目标数据的目标属性标识对应的目标存储空间,并向hdfs服务器下发指示消息。最后,hdfs服务器将目标数据写入该目标存储空间中,完成数据的分流入库。也即,本申请实施例所提供的方法中,目标服务器在获取到目标数据,并确定目标存储空间后,可以直接将目标数据写入目标存储空间,相比现有技术中减少了数据的存储次数,因此减少了数据分流入库的时间。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
下面具体参照图5,图5为本申请实施例提供的一种目标服务器的一个实施例示意图,可以包括:
收发模块501,用于从kafka消息队列中获取待分流的目标数据;
查询模块502,用于获取该目标数据的目标属性标识;根据预设的属性标识和预设的存储空间的映射关系,确定该目标属性标识对应的目标存储空间,该目标存储空间为hadoop分布式文件系统hdfs服务器上的存储空间;
读写模块503,用于向该hdfs服务器发送将该目标数据写入该目标存储空间的指示消息。
在一些可能的实现方式中,
查询模块502,具体用于根据该目标数据的该目标属性标识,利用flink引擎、storm引擎或sparkstreaming引擎从该映射关系中查询确定该目标属性标识对应的该目标存储空间。
在一些可能的实现方式中,该目标属性标识可以包括该目标数据的创建者标识,用户标识或数据类别标识中的至少一种。
下面具体参照图6,图6为本申请实施例提供的一种hdfs服务器的一个实施例示意图,可以包括:
收发模块601,用于获取目标服务器发送的将目标数据写入目标存储空间的指示消息,该目标数据由该目标服务器从kafka消息队列中获取,该目标存储空间为该目标服务器在确定该目标数据的目标属性标识后,根据预设的属性标识和预设的存储空间的映射关系确定的与该目标属性标识对应的存储空间;
读写模块602,用于将该目标数据写入该目标存储空间。
在一些可能的实现方式中,该目标存储空间为该目标服务器在确定该目标数据的目标属性标识后,利用flink引擎、storm引擎或者sparkstreaming引擎从预设的属性标识和预设的存储空间的映射关系查询确定的与该目标属性标识对应的存储空间。
在一些可能的实现方式中,该属性标识可以包括数据的创建者标识,用户标识或数据类别标识中的至少一种。
下面具体参照图7,图7为本申请实施例提供的一种服务器的一个实施例示意图,可以包括:
存储器701、处理器702以及存储在存储器701中并可在处理器702上运行的计算机程序703;处理器702执行计算机程序703时实现如图2至图4所示实施例中任一项所描述的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如图2至图4所示实施例中任一项所描述的步骤。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
1.一种数据存储的方法,其特征在于,包括:
从kafka消息队列中获取待分流的目标数据;
获取所述目标数据的目标属性标识;
根据预设的属性标识和预设的存储空间的映射关系,确定所述目标属性标识对应的目标存储空间,所述目标存储空间为hadoop分布式文件系统hdfs服务器上的存储空间;
向所述hdfs服务器发送将所述目标数据写入所述目标存储空间的指示消息。
2.根据权利要求1所述的方法,其特征在于,所述根据预设的属性标识和预设的存储空间的映射关系,确定所述目标属性标识对应的目标存储空间,包括:
根据所述目标数据的所述目标属性标识,利用flink引擎、storm引擎或sparkstreaming引擎从所述映射关系中查询确定所述目标属性标识对应的所述目标存储空间。
3.根据权利要求1或2所述的方法,其特征在于,所述目标属性标识包括所述目标数据的创建者标识,用户标识或数据类别标识中的至少一种。
4.一种数据存储的方法,其特征在于,包括:
hadoop分布式文件系统hdfs服务器获取目标服务器发送的将目标数据写入目标存储空间的指示消息,所述目标数据由所述目标服务器从kafka消息队列中获取,所述目标存储空间为所述目标服务器在确定所述目标数据的目标属性标识后,根据预设的属性标识和预设的存储空间的映射关系确定的与所述目标属性标识对应的存储空间;
所述hdfs服务器将所述目标数据写入所述目标存储空间。
5.根据权利要求4所述的方法,其特征在于,所述目标存储空间为所述目标服务器在确定所述目标数据的目标属性标识后,利用flink引擎、storm引擎或者sparkstreaming引擎从预设的属性标识和预设的存储空间的映射关系查询确定的与所述目标属性标识对应的存储空间。
6.根据权利要求4或5所述的方法,其特征在于,所述属性标识包括数据的创建者标识,用户标识或数据类别标识中的至少一种。
7.一种数据存储系统,其特征在于,包括:
kafka服务器、目标服务器和hadoop分布式文件系统hdfs服务器;
所述kafka服务器,用于采集目标数据,并将所述目标数据以kafka队列消息的形式发送至所述目标服务器;
所述目标服务器,用于获取所述kafka队列消息中的所述目标数据;确定所述目标数据的目标属性标识;根据预设的属性标识和预设的存储空间的映射关系,确定所述目标属性标识对应的目标存储空间;向所述hdfs服务器发送将所述目标数据写入所述目标存储空间的指示消息,所述目标存储空间为所述hdfs服务器上的存储空间;
所述hdfs服务器,用于将所述目标数据写入所述目标存储空间。
8.一种目标服务器,其特征在于,包括:
收发模块,用于从kafka消息队列中获取待分流的目标数据;
查询模块,用于获取所述目标数据的目标属性标识;根据预设的属性标识和预设的存储空间的映射关系,确定所述目标属性标识对应的目标存储空间,所述目标存储空间为hadoop分布式文件系统hdfs服务器上的存储空间;
读写模块,用于向所述hdfs服务器发送将所述目标数据写入所述目标存储空间的指示消息。
9.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至3,或者,4至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3,或
者,4至6中任一项所述方法的步骤。
技术总结