CN111881086A - 大数据的存储方法、查询方法、电子装置及存储介质 - Google Patents

大数据的存储方法、查询方法、电子装置及存储介质 Download PDF

Info

Publication number
CN111881086A
CN111881086A CN202010715304.1A CN202010715304A CN111881086A CN 111881086 A CN111881086 A CN 111881086A CN 202010715304 A CN202010715304 A CN 202010715304A CN 111881086 A CN111881086 A CN 111881086A
Authority
CN
China
Prior art keywords
data
index
elasticsearch
fragments
fragment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010715304.1A
Other languages
English (en)
Other versions
CN111881086B (zh
Inventor
查超
范渊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dbappsecurity Technology Co Ltd
Original Assignee
Hangzhou Dbappsecurity Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Dbappsecurity Technology Co Ltd filed Critical Hangzhou Dbappsecurity Technology Co Ltd
Priority to CN202010715304.1A priority Critical patent/CN111881086B/zh
Publication of CN111881086A publication Critical patent/CN111881086A/zh
Application granted granted Critical
Publication of CN111881086B publication Critical patent/CN111881086B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种大数据的数据存储方法、查询方法、电子装置和存储介质。其中,基于ElasticSearch的PB级数据的存储方法包括:获取数据,按照预设时长的数据分片存储数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片;在多个索引分片对应的数据分片的数据总量大于预设阈值和/或多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将多个索引分片中生成时间较早的至少一个索引分片转存到HDFS***,以供Lucene根据HDFS***中存储的索引分片查询对应的数据。通过本申请,解决了相关技术中应用于大数据仓库数据查询和存储稳定性差、效率低的问题。

Description

大数据的存储方法、查询方法、电子装置及存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及大数据的存储方法、查询方法、电子装置及存储介质。
背景技术
近几年来,随着计算机和信息技术的迅猛发展和普及应用,行业应用***的规模迅速扩大,行业应用所产生的数据呈***性增长。动辄达到数百TB甚至数十至数百PB规模的行业/企业大数据已远远超出了传统的计算技术和信息***的处理能力,大数据技术应运而生。
现有技术中,大数据仓库一般都采用分布式数据存储技术来满足大数据的存储和查询需求。但现有技术中的大数据仓库采用的是单一的分布式***进行数据存储和查询。在海量大数据场景下,单一的分布式***无法提供充足的服务器资源保障索引和查询功能,同时,现有应用于大数据仓库的分布式***还存在历史数据查询和存储稳定性差、效率低、运维成本高的问题。
目前针对相关技术中应用于大数据仓库的分布式***还存在数据查询和存储稳定性差、效率低、运维成本高的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种大数据的存储方法、查询方法、电子装置及存储介质,以至少解决相关技术中应用于大数据仓库的分布式***还存在数据查询和存储稳定性差、效率低,运维成本高的问题。
第一方面,本申请实施例提供了一种基于ElasticSearch的PB级数据的存储方法,包括:
获取数据,按照预设时长的数据分片存储所述数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片;
在所述多个索引分片对应的数据分片的数据总量大于预设阈值和/或所述多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将所述多个索引分片中生成时间较早的至少一个索引分片转存到HDFS***,以供Lucene根据所述HDFS***中存储的索引分片查询对应的数据。
在其中一些实施例中,在所述多个索引分片对应的数据分片的数据总量小于预设阈值和所述多个索引分片对应的数据分片的时间跨度小于预设时间跨度的情况下,所述存储方法包括:将所述多个索引分片存储在所述ElasticSearch***中。
在其中一些实施例中,获取数据,按照预设时长的数据分片存储所述数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片包括:
通过Logstash采集所述数据并接入所述ElasticSearch***;
将按天采集的所述数据作为一个所述数据分片存储于所述ElasticSearch***,并按天生成与每个所述数据分片关联的所述索引分片。
在其中一些实施例中,在所述多个索引分片对应的数据分片的数据总量大于预设阈值和/或所述多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,所述存储方法包括:将所述多个索引分片中生成时间最早的一个索引分片转存到HDFS***,其中,所述多个索引分片中生成时间最早的一个索引分片的生成时间为所述ElasticSearch***开始存储所述数据分片的时间。
第二方面,本申请实施例提供的一种基于ElasticSearch的PB级数据的查询方法,包括:
接收数据查询请求,并判断所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***,其中,所述ElasticSearch***中生成时间较早的至少一个索引分片被转存到所述HDFS***;
在所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***的情况下,从所述ElasticSearch***存储的索引分片中查询对应的数据;
在所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***的情况下,调用Lucene的查询接口从所述HDFS***存储的索引分片中查询对应的数据。
在其中一些实施例中,所述数据查询请求包括请求查询的数据的存储时间戳,判断所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***包括:
根据所述存储时间戳确定所述数据查询请求所请求查询的数据对应的索引分片的时间跨度;
判断所述索引分片的时间跨度是否大于预设时间跨度;
在判断到所述索引分片的时间跨度大于预设时间跨度的情况下,确定所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***;
在判断到所述索引分片的时间跨度小于预设时间跨度的情况,确定所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***。
在其中一些实施例中,在所述数据查询请求所请求查询的数据对应的索引分片的存储位置包括所述ElasticSearch***和所述HDFS***的情况下,所述查询方法还包括:
拆分所述数据查询请求,得到第一查询请求和第二查询请求,其中,所述第一查询请求所请求查询的数据对应的索引分片的存储位置是在所述ElasticSearch***,所述第二查询请求所请求查询的数据对应的索引分片的存储位置是在所述HDFS***;
并行执行从所述ElasticSearch***存储的索引分片中查询与所述第一查询请求对应的数据和调用Lucene的查询接口从所述HDFS***存储的索引分片中查询与所述第二查询请求对应的数据;
汇总从所述ElasticSearch***查询到的数据和从所述HDFS***查询到的数据,得到所述数据查询请求所请求的数据。
在其中一些实施例中,调用Lucene的查询接口从所述HDFS***存储的索引分片中查询对应的数据包括:
调用Lucene的查询接口从所述HDFS***中查询对应的所述索引分片;
对所述索引分片进行Mapreduce数据处理,得到所述数据查询请求所请求的数据。
第三方面,本申请实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行第一方面所述的基于ElasticSearch的PB级数据的查询方法,和/或,执行第二方面所述的基于ElasticSearch的PB级数据的查询方法。
第四方面,本申请实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行第一方面所述的基于ElasticSearch的PB级数据的查询方法,和/或,执行第二方面所述的基于ElasticSearch的PB级数据的查询方法。
相比于相关技术,本申请实施例提供的一种大数据的存储方法、查询方法、电子装置及存储介质,通过获取数据,按照预设时长的数据分片存储所述数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片;在多个索引分片对应的数据分片的数据总量大于预设阈值和/或所述多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将所述多个索引分片中生成时间较早的至少一个索引分片转存到HDFS***,以供Lucene根据HDFS***中存储的索引分片查询对应的数据。通过本申请,解决了相关技术中应用于大数据仓库的分布式***还存在数据查询和存储稳定性差、效率低,运维成本高的问题,实现了提高大数据服务器资源利用率、节省资源和提高数据查询与分析效率的有益效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本发明实施例的基于ElasticSearch的PB级数据的存储方法及基于ElasticSearch的PB级数据的查询方法的终端的硬件结构框图;
图2是根据本申请实施例的基于ElasticSearch的PB级数据的存储方法的流程图;
图3是根据本申请实施例的基于ElasticSearch的PB级数据的查询方法的流程图;
图4是根据本申请优选实施例的ElasticSearch的PB级数据的存储与查询的流程图;
图5是根据本申请实施例的基于ElasticSearch的PB级数据的存储装置的结构框图;
图6是根据本申请实施例的基于ElasticSearch的PB级数据的查询装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请中描述的各种技术可用于大数据技术领域的海量数据的存储查询。
在对本申请的实施例进行描述和说明之前,先对本申请中使用的相关技术进行说明如下:
PB级数据,是亿万级数据。
索引(index),类似于传统关系数据库中的一个数据库,是一个存储关系型文档的地方,是ES对逻辑数据的逻辑存储,索引的结构是为快速有效的全文检索做准备;索引一个文档就是存储一个文档到一个索引(名词)中以便它可以被检索和查询到。
分片,为解决当索引需要存储大量超过单个节点的硬件限制的数据、单个索引不适合单个节点的磁盘以及单个索引存储数据速度太慢而造成单个节点无法提供搜索请求的问题,Elasticsearch提供了将索引细分为多个分片的功能,创建索引时,只需定义所需的分片数即可,每个分片本身都是一个功能齐全且独立的“索引”,可以托管在集群中的任何节点上。设置分片的目的及原因主要是:分片允许执行水平拆分/缩放内容量,分片允许跨分片(可能在多个节点上)分布和并行化操作,从而提高性能/吞吐量,
ElasticSearch,是一个分布式、高扩展、高实时的搜索与数据分析引擎,广泛应用于金融、安全等大数据场景。ElasticSearch提供横向可扩展性、分片机制,高可用性,一个分片可以设置多个副本,即使服务器宕机仍旧可以照常运行。
Lucene,是一个开放源代码的全文检索引擎工具包,被ElasticSearch作为核心来实现所有索引和搜索的功能,它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎、索引引擎以及部分文本分析引擎,Lucene的目的是为软件开发人员提供一个简单易用的工具包,方便在目标***中实现全文检索的功能。
Mapreduce是Hadoop(分布式***架构)中一个使用简单的软件框架,基于它写出来的应用程序能够运行在分布式集群中,它适合PB级以上海量数据的离线处理。
HDFS是一种分布式文件***,允许我们将数据存储在集群的多个节点上,并允许多个用户访问数据,它是Hadoop生态***的一个重要组成部分。本实施例提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。以运行在终端上为例,图1是本发明实施例的基于ElasticSearch的PB级数据的存储方法及基于ElasticSearch的PB级数据的查询方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限定。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的基于ElasticSearch的PB级数据的存储方法和/或基于ElasticSearch的PB级数据的查询方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
本实施例提供了一种基于ElasticSearch的PB级数据的存储方法,图2是根据本申请实施例的基于ElasticSearch的PB级数据的存储方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,获取数据,按照预设时长的数据分片存储数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片。
在本实施例中,待存储的数据是通过数据采集工具Logstash将用户推送到分布式消息***(Kafka)中的数据直接接入到ElasticSearch***,然后,按照预设时长的数据分片创建一个索引分片的方式保持数据。在本实施例中,预设时长为一天,每一数据分片对应一天采集并存储的数据,并且,ElasticSearch***按照每天一个索引分片的方式保持数据。
步骤S202,在多个索引分片对应的数据分片的数据总量大于预设阈值和/或多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将多个索引分片中生成时间较早的至少一个索引分片转存到HDFS***,以供Lucene根据HDFS***中存储的索引分片查询对应的数据。
在本实施例中,在ElasticSearch***和HDFS***中存储的索引分片是存储有数据的,在数据查询时,通过搜索到ElasticSearch***和HDFS***中的索引文件,就能完成数据的查询,同时,通过存储索引分片完成数据的存储,并利用HDFS和ElasticSearch两种分布式存储方式,降低服务器资源需求的同时,保证历史数据能够查询。同时,在本实施例中,当需要将索引分片转存至HDFS***中去时,需要将至少一个索引分片及对应的数据转存至HDFS***,例如,当多个索引分片对应的数据分片的数据总量大于预设阈值时,存储的数据总量大于预设阈值,但多个索引分片对应的数据分片的时间跨度不大于预设时间跨度,此时,可以将多个索引分片中生成时间最早的一个索引分片转存到HDFS***中;而当多个索引分片对应的数据分片的时间跨度大于预设时间跨度且多个索引分片对应的数据分片的时间跨度与预设时间跨度的差值大于一个时间跨度,此时,需要将多个索引分片中生成时间较早的多个索引分片转存到HDFS***中,直到多个索引分片对应的数据分片的时间跨度不大于预设时间跨度。
需要说明的是,对存储的数据是存储在ElasticSearch***还是HDFS***进行判断时,数据存储过程如下:后台服务(存储方法的执行主体)判断ElasticSearch***中当前的数据分片的数据总量超过1000亿或者索引分片的时间跨度超过2个月这两个条件中的任何一个达到时,自动关闭数据分片最开始入库的索引分片。比如2019年1月1日开始存储数据,一直到2019年3月1日或者数据分片的数据总量已经超过1000亿开始,***关闭1月1日的生成的索引分片,按此类推,同时,后台服务还将被关闭的ElasticSearch的索引分片转存到HDFS***,由于ElasticSearch***的底层是基于Lucene实现的,因此,在查询HDFS***内存储的索引分片时,后台服务通过调用Lucene的查询接口对存储在HDFS上的索引分片直接查询。
通过上述步骤S201至步骤S202,采用获取数据,按照预设时长的数据分片存储数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片;在多个索引分片对应的数据分片的数据总量大于预设阈值和/或多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将多个索引分片中生成时间较早的至少一个索引分片转存到HDFS***,以供Lucene根据HDFS***中存储的索引分片查询对应的数据,解决了相关技术中大数据仓库的分布式***还存在数据查询和存储稳定性差、效率低,运维成本高的问题,实现了大数据的快速存储和查询、降低服务器资源有益效果。
在其中一些实施例中,在多个索引分片对应的数据分片的数据总量小于预设阈值和多个索引分片对应的数据分片的时间跨度小于预设时间跨度的情况下,该存储方法还包括如下步骤:将多个索引分片存储在ElasticSearch***中。
在其中一些实施例中,获取数据,按照预设时长的数据分片存储所述数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片包括如下步骤:
通过Logstash采集所述数据并接入所述ElasticSearch***。
在本实施例中,Logstash采集的数据是用户推送到kafka(分布式消息***)内的。
将按天采集的所述数据作为一个所述数据分片存储于所述ElasticSearch***,并按天生成与每个所述数据分片关联的所述索引分片。
在其中一些实施例中,在多个索引分片对应的数据分片的数据总量大于预设阈值和/或多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,存储方法包括如下步骤:将多个索引分片中生成时间最早的一个索引分片转存到HDFS***,其中,多个索引分片中生成时间最早的一个索引分片的生成时间为ElasticSearch***开始存储数据分片的时间。
本实施例提供了一种基于ElasticSearch的PB级数据的查询方法,图3是根据本申请实施例的基于ElasticSearch的PB级数据的查询方法的流程图,如图3所示,该流程包括如下步骤:
步骤S301,接收数据查询请求,并判断数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***,其中,ElasticSearch***中生成时间较早的至少一个索引分片被转存到HDFS***。
在本实施例中,判断索引分片的存储位置是根据数据查询请求中所请求查询的数据的生成时间戳决定的,例如:当数据查询请求中所请求查询的数据为近两个月内的数据时,上述基于ElasticSearch的PB级数据的存储方法会根据近两个月内的数据的时间跨度而将其以索引文件的方式存储在ElasticSearch***中,查询对应的数据时,会根据数据的生成时间戳确定数据为近期数据,并确定对应的索引分片是存储在ElasticSearch***中的;而当数据查询请求中所请求查询的数据为两个月前的数据时,上述ElasticSearch的PB级数据的查询方法会根据两个月前的数据的时间跨度而将时间跨度超过两个月的数据分片及索引分片转存到HDFS***中,数据查询时,会根据数据的生成时间戳确定数据为历史数据并确定对应的索引分片为被转存至HDFS***中的索引分片。
步骤S302,在数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***的情况下,从ElasticSearch***存储的索引分片中查询对应的数据。
在本实施例中,确定数据为近期数据,则在ElasticSearch***存储的索引分片中查询对应的数据。
步骤S303,在数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***的情况下,调用Lucene的查询接口从HDFS***存储的索引分片中查询对应的数据。
在本实施例中,利用Lucene的查询接口直接查询转存至HDFS***中且在Elasticsearch***中生成的索引分片而完成数据查询,解决了相关技术中时间跨度大的数据(历史数据)查询难的问题。
通过上述步骤S301至步骤S303,采用接收数据查询请求,并判断数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***;在数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***的情况下,从ElasticSearch***存储的索引分片中查询对应的数据;在数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***的情况下,调用Lucene的查询接口从HDFS***存储的索引分片中查询对应的数据,解决了相关技术领域中时间跨度大的数据查询难的问题,实现了使用轻量级数据查询海量数据、数据查询效率高的有益效果。
在其中一些实施例中,数据查询请求包括请求查询的数据的存储时间戳,判断数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***包括如下步骤:
根据存储时间戳确定数据查询请求所请求查询的数据对应的索引分片的时间跨度。
在本实施例中,存储时间戳为数据分片、索引分片的生成时间戳或入库时间戳,也就是数据接入ElasticSearch***并以数据分片方式存储的时间。
判断索引分片的时间跨度是否大于预设时间跨度。
在判断到索引分片的时间跨度大于预设时间跨度的情况下,确定数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***。
在本实施例中,索引分片的时间跨度大于预设时间跨度,表示查询的数据为预设时间以前的数据,具体地,是查询两个月以前的数据。
在判断到索引分片的时间跨度小于预设时间跨度的情况,确定数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***。
在本实施例中,索引分片的时间跨度小于预设时间跨度,表示查询的数据为预设时间之内的数据,具体地,是查询两个月以内的数据。
在其中一些实施例中,在数据查询请求所请求查询的数据对应的索引分片的存储位置包括ElasticSearch***和HDFS***的情况下,查询方法还包括如下步骤:
拆分数据查询请求,得到第一查询请求和第二查询请求,其中,第一查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***,第二查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***。
在本实施例中,当用户查询的数据同时包括时间跨度大于预设时间跨度的数据和时间跨度小于预设时间跨度的数据的时候,后台服务拆分数据查询请求,并分发到ElasticSearch***和HDFS***,然后在不同的***中利用索引分片查询数据。
并行执行从ElasticSearch***存储的索引分片中查询与第一查询请求对应的数据和调用Lucene的查询接口从HDFS***存储的索引分片中查询与第二查询请求对应的数据。
在本实施例中,从ElasticSearch***存储的索引分片中查询与第一查询请求对应的数据和调用Lucene的查询接口从HDFS***存储的索引分片中查询与第二查询请求对应的数据是同时进行的,查询到对应的数据后将数据进行汇总。
汇总从ElasticSearch***查询到的数据和从HDFS***查询到的数据,得到数据查询请求所请求的数据。
通过上述拆分数据查询请求,得到第一查询请求和第二查询请求,其中,第一查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***,第二查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***;并行执行从ElasticSearch***存储的索引分片中查询与第一查询请求对应的数据和调用Lucene的查询接口从HDFS***存储的索引分片中查询与第二查询请求对应的数据;汇总从ElasticSearch***查询到的数据和从HDFS***查询到的数据,得到数据查询请求所请求的数据,实现了同时查询历史数据(时间跨度大于预设时间跨度的数据)和近期数据(时间跨度小于预设时间跨度的数据)。
在其中一些实施例中,调用Lucene的查询接口从所述HDFS***存储的索引分片中查询对应的数据包括如下步骤:
调用Lucene的查询接口从HDFS***中查询对应的索引分片。
对索引分片进行Mapreduce数据处理,得到数据查询请求所请求的数据。
通过上述调用Lucene的查询接口从HDFS***中查询对应的索引分片;对索引分片进行Mapreduce数据处理,得到数据查询请求所请求的数据,创新利用Lucene的查询接口直接查询转存至HDFS***中的索引分片,并对该过程作Mapreduce数据处理,解决了历史时间查询难的问题。
图4是根据本申请优选实施例的ElasticSearch的PB级数据的存储与查询的流程图,如图4所示,该流程包括如下步骤:
步骤S401,kafka接收用户推送的数据。步骤S402,Logstash采集kafka中的数据。
步骤S403,ElasticSearch***导入Logstash采集的数据。
步骤S404,判断ElasticSearch***中的数据总量是否大于1000亿或者索引分片是否超过两个月,如果是,执行步骤S405,之后,执行步骤S406。
步骤S405,HDFS***接收ElasticSearch***转存的索引分片,之后,执行步骤S406。
步骤S406,进行数据查询,在ElasticSearch***中查询最近两个月的数据(时间跨度小于预设时间跨度的数据)和在HDFS***中查询历史数据(时间跨度大于预设时间跨度的数据)。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种基于ElasticSearch的PB级数据的存储装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的基于ElasticSearch的PB级数据的存储装置的结构框图,如图5所示,该装置包括:
存储模块51,用于获取数据,按照预设时长的数据分片存储数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片。
处理模块52,与存储模块51耦合连接,用于在多个索引分片对应的数据分片的数据总量大于预设阈值和/或多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将多个索引分片中生成时间较早的至少一个索引分片转存到HDFS***,以供Lucene根据HDFS***中存储的索引分片查询对应的数据。
在其中一些实施例中,处理模块52用于在多个索引分片对应的数据分片的数据总量小于预设阈值和多个索引分片对应的数据分片的时间跨度小于预设时间跨度的情况下,将多个索引分片存储在ElasticSearch***中。
在其中一些实施例中,存储模块51用于通过Logstash采集数据并接入ElasticSearch***;将按天采集的数据作为一个数据分片存储于ElasticSearch***,并按天生成与每个数据分片关联的索引分片。
在其中一些实施例中,处理模块52用于在多个索引分片对应的数据分片的数据总量大于预设阈值和/或多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将多个索引分片中生成时间最早的一个索引分片转存到HDFS***,其中,多个索引分片中生成时间最早的一个索引分片的生成时间为ElasticSearch***开始存储数据分片的时间。
图6是根据本申请实施例的基于ElasticSearch的PB级数据的查询装置的结构框图,如图6所示,该装置包括:
判断模块61,用于接收数据查询请求,并判断数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***,其中,ElasticSearch***中生成时间较早的至少一个索引分片被转存到HDFS***。
查询模块62,与判断模块61耦合连接,用于在数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***的情况下,从ElasticSearch***存储的索引分片中查询对应的数据;在数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***的情况下,调用Lucene的查询接口从HDFS***存储的索引分片中查询对应的数据。
在其中一些实施例中,数据查询请求包括请求查询的数据的存储时间戳,判断模块61用于根据存储时间戳确定数据查询请求所请求查询的数据对应的索引分片的时间跨度;判断索引分片的时间跨度是否大于预设时间跨度;在判断到索引分片的时间跨度大于预设时间跨度的情况下,确定数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***;在判断到索引分片的时间跨度小于预设时间跨度的情况,确定数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***。
在其中一些实施例中,查询模块62用于拆分数据查询请求,得到第一查询请求和第二查询请求,其中,第一查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***,第二查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***;并行执行从ElasticSearch***存储的索引分片中查询与第一查询请求对应的数据和调用Lucene的查询接口从HDFS***存储的索引分片中查询与第二查询请求对应的数据;汇总从ElasticSearch***查询到的数据和从HDFS***查询到的数据,得到数据查询请求所请求的数据。
在其中一些实施例中,查询模块62还用于调用Lucene的查询接口从HDFS***中查询对应的索引分片;对索引分片进行Mapreduce数据处理,得到数据查询请求所请求的数据。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
获取数据,按照预设时长的数据分片存储数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片
在多个索引分片对应的数据分片的数据总量大于预设阈值和/或多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将多个索引分片中生成时间较早的至少一个索引分片转存到HDFS***,以供Lucene根据HDFS***中存储的索引分片查询对应的数据。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
接收数据查询请求,并判断数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***,其中,ElasticSearch***中生成时间较早的至少一个索引分片被转存到HDFS***,在数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***的情况下,从ElasticSearch***存储的索引分片中查询对应的数据。
在数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***的情况下,调用Lucene的查询接口从HDFS***存储的索引分片中查询对应的数据。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的基于ElasticSearch的PB级数据的查询方法,和/或,基于ElasticSearch的PB级数据的查询方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种基于ElasticSearch的PB级数据的查询方法,和/或,基于ElasticSearch的PB级数据的查询方法。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于ElasticSearch的PB级数据的存储方法,其特征在于,包括:
获取数据,按照预设时长的数据分片存储所述数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片;
在所述多个索引分片对应的数据分片的数据总量大于预设阈值和/或所述多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,将所述多个索引分片中生成时间较早的至少一个索引分片转存到HDFS***,以供Lucene根据所述HDFS***中存储的索引分片查询对应的数据。
2.根据权利要求1所述的基于ElasticSearch的PB级数据的存储方法,其特征在于,在所述多个索引分片对应的数据分片的数据总量小于预设阈值和所述多个索引分片对应的数据分片的时间跨度小于预设时间跨度的情况下,所述存储方法包括:将所述多个索引分片存储在所述ElasticSearch***中。
3.根据权利要求1所述的基于ElasticSearch的PB级数据的存储方法,其特征在于,获取数据,按照预设时长的数据分片存储所述数据,并在ElasticSearch***中生成用于查询每个数据分片的多个索引分片包括:
通过Logstash采集所述数据并接入所述ElasticSearch***;
将按天采集的所述数据作为一个所述数据分片存储于所述ElasticSearch***,并按天生成与每个所述数据分片关联的所述索引分片。
4.根据权利要求1所述的基于ElasticSearch的PB级数据的存储方法,其特征在于,在所述多个索引分片对应的数据分片的数据总量大于预设阈值和/或所述多个索引分片对应的数据分片的时间跨度大于预设时间跨度的情况下,所述存储方法包括:将所述多个索引分片中生成时间最早的一个索引分片转存到HDFS***,其中,所述多个索引分片中生成时间最早的一个索引分片的生成时间为所述ElasticSearch***开始存储所述数据分片的时间。
5.一种基于ElasticSearch的PB级数据的查询方法,其特征在于,包括:
接收数据查询请求,并判断所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***,其中,所述ElasticSearch***中生成时间较早的至少一个索引分片被转存到所述HDFS***;
在所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***的情况下,从所述ElasticSearch***存储的索引分片中查询对应的数据;
在所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***的情况下,调用Lucene的查询接口从所述HDFS***存储的索引分片中查询对应的数据。
6.根据权利要求5所述的基于ElasticSearch的PB级数据的查询方法,其特征在于,所述数据查询请求包括请求查询的数据的存储时间戳,判断所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***还是在HDFS***包括:
根据所述存储时间戳确定所述数据查询请求所请求查询的数据对应的索引分片的时间跨度;
判断所述索引分片的时间跨度是否大于预设时间跨度;
在判断到所述索引分片的时间跨度大于预设时间跨度的情况下,确定所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在ElasticSearch***;
在判断到所述索引分片的时间跨度小于预设时间跨度的情况,确定所述数据查询请求所请求查询的数据对应的索引分片的存储位置是在HDFS***。
7.根据权利要求5所述的基于ElasticSearch的PB级数据的查询方法,其特征在于,在所述数据查询请求所请求查询的数据对应的索引分片的存储位置包括所述ElasticSearch***和所述HDFS***的情况下,所述查询方法还包括:
拆分所述数据查询请求,得到第一查询请求和第二查询请求,其中,所述第一查询请求所请求查询的数据对应的索引分片的存储位置是在所述ElasticSearch***,所述第二查询请求所请求查询的数据对应的索引分片的存储位置是在所述HDFS***;
并行执行从所述ElasticSearch***存储的索引分片中查询与所述第一查询请求对应的数据和调用Lucene的查询接口从所述HDFS***存储的索引分片中查询与所述第二查询请求对应的数据;
汇总从所述ElasticSearch***查询到的数据和从所述HDFS***查询到的数据,得到所述数据查询请求所请求的数据。
8.根据权利要求5所述的基于ElasticSearch的PB级数据的查询方法,其特征在于,调用Lucene的查询接口从所述HDFS***存储的索引分片中查询对应的数据包括:
调用Lucene的查询接口从所述HDFS***中查询对应的所述索引分片;
对所述索引分片进行Mapreduce数据处理,得到所述数据查询请求所请求的数据。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至4中任一项所述的基于ElasticSearch的PB级数据的存储方法,和/或,执行权利要求5至8任一项所述的基于ElasticSearch的PB级数据的查询方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至4中任一项所述的基于ElasticSearch的PB级数据的存储方法,和/或,执行权利要求5至8任一项所述的基于ElasticSearch的PB级数据的查询方法。
CN202010715304.1A 2020-07-23 2020-07-23 大数据的存储方法、查询方法、电子装置及存储介质 Active CN111881086B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010715304.1A CN111881086B (zh) 2020-07-23 2020-07-23 大数据的存储方法、查询方法、电子装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010715304.1A CN111881086B (zh) 2020-07-23 2020-07-23 大数据的存储方法、查询方法、电子装置及存储介质

Publications (2)

Publication Number Publication Date
CN111881086A true CN111881086A (zh) 2020-11-03
CN111881086B CN111881086B (zh) 2024-03-19

Family

ID=73155871

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010715304.1A Active CN111881086B (zh) 2020-07-23 2020-07-23 大数据的存储方法、查询方法、电子装置及存储介质

Country Status (1)

Country Link
CN (1) CN111881086B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112269903A (zh) * 2020-11-19 2021-01-26 咪咕文化科技有限公司 数据处理方法、数据处理设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512230A (zh) * 2015-11-30 2016-04-20 北京金山安全软件有限公司 数据存储方法及装置
CN107645542A (zh) * 2017-09-03 2018-01-30 中国南方电网有限责任公司 一种应用于云审计***的数据采集装置
CN109558444A (zh) * 2018-11-29 2019-04-02 苏州思必驰信息科技有限公司 数据检索方法及装置
CN109582758A (zh) * 2018-12-06 2019-04-05 重庆邮电大学 一种Elasticsearch索引分片优化方法
CN109947702A (zh) * 2017-07-26 2019-06-28 北京嘀嘀无限科技发展有限公司 索引构建方法及装置、电子设备
CN111382226A (zh) * 2018-12-29 2020-07-07 北京神州泰岳软件股份有限公司 一种数据库查询检索方法、装置和电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512230A (zh) * 2015-11-30 2016-04-20 北京金山安全软件有限公司 数据存储方法及装置
CN109947702A (zh) * 2017-07-26 2019-06-28 北京嘀嘀无限科技发展有限公司 索引构建方法及装置、电子设备
CN107645542A (zh) * 2017-09-03 2018-01-30 中国南方电网有限责任公司 一种应用于云审计***的数据采集装置
CN109558444A (zh) * 2018-11-29 2019-04-02 苏州思必驰信息科技有限公司 数据检索方法及装置
CN109582758A (zh) * 2018-12-06 2019-04-05 重庆邮电大学 一种Elasticsearch索引分片优化方法
CN111382226A (zh) * 2018-12-29 2020-07-07 北京神州泰岳软件股份有限公司 一种数据库查询检索方法、装置和电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
魏涛等: "开源搜索引擎Elasticsearch 和Solr 对比和分析", 现代计算机, pages 58 - 61 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112269903A (zh) * 2020-11-19 2021-01-26 咪咕文化科技有限公司 数据处理方法、数据处理设备及可读存储介质
CN112269903B (zh) * 2020-11-19 2024-06-11 咪咕文化科技有限公司 数据处理方法、数据处理设备及可读存储介质

Also Published As

Publication number Publication date
CN111881086B (zh) 2024-03-19

Similar Documents

Publication Publication Date Title
CN106657213B (zh) 文件传输方法和装置
CN110555012B (zh) 数据迁移方法及装置
US9378053B2 (en) Generating map task output with version information during map task execution and executing reduce tasks using the output including version information
CN102479207B (zh) 一种信息搜索的方法、***及信息搜索设备
US20150237113A1 (en) Method and system for file transmission
CN102375837B (zh) 数据采集***和方法
CN108121511B (zh) 一种分布式边缘存储***中的数据处理方法、装置及设备
CN106161633B (zh) 一种基于云计算环境下打包文件的传输方法及***
CN107203532B (zh) 索引***的构建方法、搜索的实现方法及装置
CN110413845B (zh) 基于物联网操作***的资源存储方法及装置
WO2023273544A1 (zh) 日志文件的存储方法、装置、设备和存储介质
CN104333573A (zh) 一种大并发量请求的处理方法及处理***
CN110955704A (zh) 一种数据管理方法、装置、设备及存储介质
CN111258978A (zh) 一种数据存储的方法
CN111694793A (zh) 一种日志存储方法、装置及日志查询方法、装置
CN109388651B (zh) 一种数据处理方法和装置
WO2013120412A1 (zh) 数据下载方法、终端、服务器和***
CN102882960A (zh) 一种资源文件的发送方法及装置
CN111881086B (zh) 大数据的存储方法、查询方法、电子装置及存储介质
CN111625600B (zh) 数据存储的处理方法、***、计算机设备及存储介质
CN116775712A (zh) 联表查询方法、装置、电子设备、分布式***和存储介质
CN110798492B (zh) 数据存储方法及装置、数据处理***
CN108829735B (zh) 并行执行计划的同步方法、装置、服务器及存储介质
CN111104212A (zh) 一种调度任务执行方法、装置、电子设备及存储介质
CN111209263A (zh) 数据存储方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant