CN106484877B - 一种基于hdfs的文件检索系统 - Google Patents
一种基于hdfs的文件检索系统 Download PDFInfo
- Publication number
- CN106484877B CN106484877B CN201610898403.1A CN201610898403A CN106484877B CN 106484877 B CN106484877 B CN 106484877B CN 201610898403 A CN201610898403 A CN 201610898403A CN 106484877 B CN106484877 B CN 106484877B
- Authority
- CN
- China
- Prior art keywords
- file
- index
- cluster
- sent
- hdfs
- 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.)
- Expired - Fee Related
Links
- 238000003860 storage Methods 0.000 claims abstract description 66
- 230000005540 biological transmission Effects 0.000 claims description 26
- 239000012634 fragment Substances 0.000 claims description 19
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 239000000284 extract Substances 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims description 2
- 238000009826 distribution Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 abstract description 3
- 230000001737 promoting effect Effects 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 40
- 238000007689 inspection Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
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
基于HDFS的文件检索系统,包括系统配置模块、文件管理模块、索引管理模块、检索门户模块、MongoDB数据库、HDFS集群、Spark集群和ElasticSearch集群;文件管理模块将文件存入HDFS集群;索引管理模块通过Spark集群创建索引,并存入ElasticSerch集群;检索门户模块将检索条件发送给ElasticSearch集群进行索引匹配,得到检索结果,MongoDB数据库用于存储文件检索过程中产生的记录;本发明的HDFS集群、Spark集群和ElasticSearch集群均采用分布式,减轻查询负载,提高查询效率;采用主从架构具有水平扩展性和稳定性,便于提升集群整体的处理能力,系统工作状态稳定;采用副本冗余策略,能够保证索引的可靠性与完整性。
Description
技术领域
本发明属于分布式搜索引擎领域,具体涉及一种基于HDFS的文件检索系统。
背景技术
传统的全文检索系统是基于Lucene实现。使用Lucene能够实现文件索引的建立、优化和查询。但当索引文件增加到一定数量时,由于Lucene的内部机制导致大量的数据被载入了内存,查询完后才会被丢弃。大量数据占据内存后,将会使Java虚拟机(JVM)频繁进行拉近回收,导致查询性能出现严重的瓶颈。而且传统的文件检索系统都是单机系统。随着大数据时代的到来,单机文件检索系统无法处理海量数据,其索引创建耗时较长,查询效率低下。
Hadoop框架是目前主流的跨集群分布式大数据处理框架,其子模块HadoopDistributed File System(HDFS)是一个分布式的文件系统,该系统可以提供了高吞吐数据访问能力。包括亚马逊、Adobe和阿里巴巴在内的众多国内外大型企业都在使用Hadoop框架进行数据管理和分析工作。Apache Spark是一个基于内存迭代的并行计算框架,支持访问Hadoop HDFS上的数据,并对数据进行索引创建。Elasticsearch是弹性分布式检索引擎,Spark计算后的索引可以存储在Elasticsearch集群中,以方便用户访问。Hadoop、Spark和Elasticsearch集群均采用主从结构,具有很好的扩展性,适用于海量数据的并行计算。
发明内容
针对上述现有技术存在的不足,本发明提供一种基于HDFS的文件检索系统。
本发明的技术方案如下:
一种基于HDFS的文件检索系统,包括:系统配置模块、文件管理模块、索引管理模块、检索门户模块、MongoDB数据库和后台存储计算集群;所述后台存储计算集群包括HDFS集群、Spark集群和ElasticSearch集群;
所述系统配置模块,用于配置后台存储计算集群参数和索引配置表,并将索引配置表发送给MongoDB数据库。
所述文件管理模块,用于接收文件,生成该文件的文件ID和文件信息,将文件信息发送给MongoDB数据库;接收MongoDB数据库发送的存储位置,将文件、文件ID和存储位置发送给HDFS集群,并生成包含文件ID、文件信息和存储位置的文件记录发送给MongoDB数据库;向HDFS集群发送文件ID、存储位置和下载文件消息;向HDFS集群发送文件ID、存储位置和删除文件消息;接收HDFS集群发送的文件。所述文件记录包括:文件ID、文件名称、文件类型、文件大小、上传时间、上传作者、存储位置和索引版本号;所述索引配置表包括:文件类型、存储位置、是否索引文件名称、是否索引文件类型、是否索引文件大小、是否全文索引、是否索引上传作者字段。
所述HDFS集群,用于接收文件管理模块发送的文件、文件ID和存储位置,并根据存储位置存储文件和文件ID;接收文件管理模块发送的文件ID、存储位置和下载文件消息或文件ID、存储位置和删除文件消息,在存储位置中根据文件ID下载文件并发送给文件管理模块或删除文件;接收Spark集群从节点发送的文件ID和存储位置,在存储位置对应目录中下载文件并发送给Spark集群从节点。
所述索引管理模块,用于将文件信息发送给MongoDB数据库,接收MongoDB数据库发送的匹配文件记录,提取文件ID,判断操作类型,如果是更新索引操作,将文件ID和删除索引消息发送到ElasticSerch集群,将文件ID发送给Spark集群,如果是索引创建操作,将文件ID发送给Spark集群进行索引创建;接收Spark集群发送索引创建成功消息,生成索引记录发送给MongoDB数据库;匹配索引记录中的文件ID和删除索引消息发送到ElasticSerch集群,并向MongoDB数据库发送文件ID和删除索引记录。
所述检索门户模块,用于将检索条件发送给ElasticSearch集群,接收ElasticSearch集群发送的检索结果,并生成检索日志发送给MongoDB数据库;定时查询检索日志表,对检索条件根据重复度降序排列,获得排序靠前的检索条件进行热门推荐,并发送到web页面显示。
所述Spark集群包括Spark集群主节点和Spark集群从节点,Spark集群主节点接收文件ID,并将文件ID发送给MongoDB数据库,接收MongoDB数据库发送的匹配文件记录和匹配索引配置表,将匹配文件记录和匹配索引配置表发送给Spark集群从节点;Spark集群从节点执行如下步骤:a判断是否全文索引字段,如果是,将文件ID和存储位置发送给HDFS集群,接收文件,依次对该文件内容进行base64编码、Apache Tika解析和IKAnalyser分词,并设置key为file,将分词后的文件内容放入value中,将key和value存入hashmap中,执行b,否则,执行b;b判断是否索引文件名称的字段,如果是,则设置key为filename,设置value为使用IkAnalyser对文件名称分词后的结果,并将key和value存入hashmap中,执行c,否则,执行c;c判断是否索引文件大小的字段值,如果是,则设置key为filesize,设置value为文件大小,将key和value存入hashmap中,执行d,否则执行d;d判断是否索引文件类型的字段,如果是,则设置key为filetype,设置value为文件类型,将key和value存入hashmap中,执行e,否则,执行e;判断是否索引上传作者的字段,如果是,则设置key为fileauthor,设置value为上传作者,并将key和value存入hashmap中,执行f,否则,执行f;f获取当前时间作为索引创建时间,设置key为indextime,设置value为索引创建时间,将key和value存入hashmap中;将文件ID放入hashmap中;将hashmap中内容以“(key->value)->文件ID”格式创建索引,将索引分割成n个索引分片,每个索引分片拥有≥1个副本,将n个索引分片及其副本发送给ElasticSerach集群。
所述ElasticSerch集群包括ElasticSerach集群主节点和ElasticSerach集群从节点,ElasticSerach集群主节点接收Spark集群从节点发送的n个索引分片及其副本,并分别发送给ElasticSerach集群的n个ElasticSerach集群从节点存储;接收索引管理模块发送的文件ID和删除索引消息,删除文件ID对应的索引;接收检索门户模块发送的检索条件,将检索条件提交到ElasticSearch集群从节点;各ElasticSearch集群从节点将检索条件与索引中value进行模糊匹配,并提取匹配索引中的文件ID,将文件ID对应的所有value中的内容作为匹配文件信息即检索结果发送给检索门户模块。
所述MongoDB数据库,用于接收系统配置模块发送的索引配置表并存储;接收文件管理模块发送的文件信息,并根据索引配置表将文件信息对应的存储位置发送给文件管理模块;接收文件管理模块发送的文件记录并存储;所述MongoDB数据库接收Spark集群主节点发送的文件ID,并与文件记录进行匹配,提取匹配文件记录中文件类型与索引配置表匹配,将匹配文件记录和匹配索引配置表发送给Spark集群主节点;接收索引管理模块发送的文件信息,并与文件记录进行匹配,将匹配文件记录发送给索引管理模块;接收索引管理模块发送的索引记录并存储;接收检索门户模块发送的检索日志并存储。接收文件管理模块发送文件信息并与文件记录进行匹配,得到匹配文件记录发送给文件管理模块。接收索引管理模块发送的文件ID和删除索引记录,删除文件ID对应的索引记录。
有益效果:本发明的一种基于HDFS的文件检索系统与现有技术相比,具有以下优点:
1、采用HDFS集群作为数据存储集群,Spark集群作为索引计算集群,ElasticSearch集群作为查询集群,均采用分布式方式实现。HDFS集群具有很好的容错性和可扩展性,能够满足海量数据的存储需求;Spark集群进行索引创建时,采用的是分布式内存迭代计算的方式,处理海量数据集的同时具有较高的计算速度;ElasticSearch集群采用索引分片的方式对索引进行管理,索引分片的多份副本存储在不同从节点,采用分而治之的策略,减轻查询负载,提高查询效率;
2、采用主从架构具有很好的水平扩展性和稳定性,只需增加从节点的数目就可以提升集群整体的处理能力,单一节点宕机并不会影响集群的正常工作;
3、采用副本冗余策略,能够保证索引的可靠性与完整性。
附图说明
图1本发明一种实施方式的基于HDFS的文件检索系统结构框图。
具体实施方式
下面结合附图对本发明的一种实施方式作详细说明。
如图1所示,本实施方式的一种基于HDFS的文件检索系统,设置在4台PC(Intel(R)Core(TM)i7-4790@3.60GHZ,8G,1T):PC1、PC2、PC3和PC4上,4台PC由100M网互联。
该系统包括:面向管理员的系统配置模块、文件管理模块和索引管理模块、面向用户的检索门户模块、MongoDB数据库以及后台存储计算集群;所述后台存储计算集群包括HDFS集群、Spark集群、Elastic Search集群;其中,HDFS(Hadoop Distributed FileSystem)集群为分布式文件存储集群,Spark集群为索引计算集群,ElasticSearch集群为索引存储集群,三个集群均采用主从架构,即1个主节点,2个从节点,分别部署在PC1、PC2、PC3三台PC机上,MongoDB数据库、系统配置模块、文件管理模块、索引管理模块和检索门户模块均部署在PC4的Tomcat服务器(WEB服务器)中。
各台PC与系统对应关系如表1所示:
表1 PC机与系统对应关系表
所述系统配置模块,用于配置后台存储计算集群参数和索引配置表,并将索引配置表并发送给MongoDB数据库;本实施方式中,后台存储计算集群参数包括:集群名称、集群主节点IP、集群端口号;索引配置表包括:文件类型、存储位置、是否索引文件名称、是否索引文件类型、是否索引文件大小、是否全文索引、是否索引上传作者字段;文件类型包括:视频,音频,文本,图像,压缩,其它;
所述文件管理模块,用于文件上传、下载和删除;在文件上传阶段,获取上传文件的文件信息,包括文件名称、文件类型、文件大小、上传时间和上传作者,生成文件ID,将文件类型发送给MongoDB数据库;接收MongoDB数据库发送的存储位置,将文件、文件ID和存储位置上传给HDFS集群,并生成文件记录发送给MongoDB数据库;所述文件记录包含:文件名称、文件ID、文件类型、文件大小、上传时间、上传作者、存储位置和索引版本号;其中,索引版本号为0。在文件下载与删除阶段,将待下载或删除的文件信息发送给MongoDB数据库,文件信息包括文件名称或文件类型,接收MongoDB数据库发送的匹配文件记录,以分页形式将匹配文件记录发送给web页面显示,并获取存储位置和文件ID,向HDFS集群发送文件ID、存储位置和下载文件或删除文件消息;接收HDFS集群下载的文件;
HDFS集群,用于将文件管理模块上传的文件和文件ID根据存储位置存储在对应目录下;接收文件管理模块发送的文件ID、存储位置和下载文件或删除文件消息,在存储位置对应目录中删除文件或下载文件并发送给文件管理模块;
所述索引管理模块,用于索引创建、更新、查询和删除;在索引创建阶段,将文件名称和文件类型发送给MongoDB数据库,接收MongoDB数据库发送的匹配文件记录发送给web页面显示,提取文件ID并保存到一个数组中,通过ssh协议,将数组发送给Spark集群;接收Spark集群发送索引创建成功消息和索引创建时间,生成索引记录发送给MongoDB数据库;所述索引记录包括:文件ID、文件名称、文件类型、存储位置、上传作者、索引版本号、是否索引文件名称、是否索引文件类型、是否索引文件大小、是否全文索引、是否索引上传作者以及索引创建时间,其中,索引版本号为1。
在索引更新阶段,将文件信息发送给MongoDB数据库,接收MongoDB数据库发送的匹配文件记录,得到文件ID,将文件ID和删除索引消息发送到ElasticSerch集群,将文件ID保存到一个数组中,通过ssh协议,将数组发送给Spark集群进行索引创建;接收Spark集群发送的索引创建成功消息和索引创建时间,生成索引记录发送给MongoDB数据库。所述索引记录包括:文件ID、文件名称、文件类型、存储位置、上传作者、索引版本号加1、是否索引文件名称、是否索引文件类型、是否索引文件大小、是否全文索引、是否索引上传作者以及索引创建时间。
在索引查询和删除阶段,将查询条件发送给MongoDB数据库;查询条件包括:文件名称、文件类型或索引创建时间;接收MongoDB数据库发送的匹配索引记录,以分页的形式将匹配索引记录发送给Web页面显示,并将匹配索引记录中的文件ID和删除索引消息发送到ElasticSerch集群,向MongoDB数据库发送文件ID和删除索引记录消息;
所述检索门户模块,在文件检索阶段,用于获取用户输入的检索类型,并发送给ElasticSearch集群,检索类型为模糊检索或全文检索;获取用户输入的检索条件发送给ElasticSearch集群,检索条件包括检索关键词和检索文件类型;接收ElasticSearch集群发送的检索结果,并生成检索日志发送给MongoDB数据库,检索日志包括:检索日志ID、用户名称,检索时间,检索关键词,检索结果记录;
在高级检索阶段,获取用户输入检索条件,检索条件包括:已知关键词,未知关键词、文件类型或索引创建时间,若用户没有输入检索条件,则返回结果为空到web页面;若用户输入任意检索条件组合,则将检索条件发送到ElasticSearch集群;接收ElasticSearch集群发送的检索结果,并生成检索日志写入MongoDB数据库检索日志表中,检索日志包括:检索日志ID、用户名称,检索时间,检索条件,检索结果记录;
在热门推荐阶段,用于每隔10分钟查询一次检索日志表,对检索关键词字段根据重复度进行降序排列,获得前10条检索关键词记录,并发送到web页面显示;
Spark集群包括Spark集群主节点和Spark集群从节点,Spark集群主节点用于接收文件ID,将文件ID发送给MongoDB数据库,接收MongoDB数据库发送的匹配文件记录和匹配索引配置表,获得该文件的元数据信息,所述元数据信息包括:文件ID、文件名称、文件类型、存储位置、上传作者、索引版本号、是否索引文件名称、是否索引文件类型、是否索引文件大小、是否全文索引和是否索引上传作者;根据文件类型,将文件元数据信息通过Hash处理划分到不同分区即不同的Spark集群从节点,其中,分区策略为Hash分区;将各Spark集群从节点中文件元数据根据是否全文索引进行索引创建:a各个从节点获取各分区数据,将该分区中的文件元数据根据是否全文索引分为A类集合和B类集合,其中A类集合为全文索引,B类集合为非全文索引即元数据索引,并生成一个key、value与文件ID的hashmap映射,其中key为索引项名称,value为分词后的数据;b判断B类集合中的文件元数据中是否全文索引配置与文件类型是否有不匹配情况,有,修改是否全文索引的配置,并将修改后的该文件元数据移入A类中,并执行步骤c;否则,执行步骤d;c判断A类集合中是否为空,是,执行步骤d;否则,首先根据A类集合中文件元数据的文件ID和存储位置从HDFS集群获得文件,依次对该文件进行base64编码、Apache Tika解析和IKAnalyser分词,并设置key为file,将分词后的文件内容放入value中,将key和value存入hashmap中;对于A类集合中文件元数据,如果是否索引文件名称的字段值为是,则设置key为filename,设置value为使用IkAnalyser对文件名称分词后的结果,并将key和value存入hashmap中;如果是否索引文件大小的字段值为是,则设置key为filesize,设置value为文件大小,将key和value存入hashmap中;如果是否索引文件类型的字段值为是,则设置key为filetype,设置value为文件类型,将key和value存入hashmap中;如果是否索引上传作者的字段值为是,则设置key为fileauthor,设置value为上传作者,并将key和value存入hashmap中;获取当前时间作为索引创建时间,设置key为indextime,设置value为索引创建时间,将key和value存入hashmap中;d对于B类集合中文件元数据,如果是否索引文件名称的字段值为是,则设置key为filename,value为使用IkAnalyser对文件名称分词后的结果,并将key和value存入hashmap中;如果是否索引文件大小的字段值为是,则设置key为filesize,设置value为文件大小,将key和value存入hashmap中;如果是否索引文件类型的字段值为是,则设置key为filetype,设置value为文件类型,将key和value存入hashmap中;如果是否索引上传作者的字段值为是,则设置key为fileauthor,设置value为上传作者,并将key和value存入hashmap中;获取当前时间作为索引创建时间,设置key为indextime,设置value为索引创建时间,将key和value存入hashmap中;e将hashmap中内容以“(key->value)->文件ID”格式创建索引,并将索引分割成n个索引分片,每个索引分片可以拥有1个或多个副本,将n个索引分片及其副本发送给ElasticSerach集群;f将索引创建成功消息和索引创建时间发送给索引管理模块;
ElasticSerch集群包括ElasticSerach集群主节点和ElasticSerach集群从节点,ElasticSerach集群主节点接收索引管理模块发送的文件ID和删除索引消息,并删除ElasticSerach集群从节点中文件ID对应的索引;ElasticSerach集群主节点接收Spark集群从节点发送的n个索引分片及其副本,并分别发送给ElasticSerach集群的n个从节点存储;接收检索门户模块发送的检索条件并根据检索条件与索引匹配,将检索结果发送给检索门户模块,本实施方式中,在文件检索阶段,ElasticSerach集群主节点接收检索门户模块发送的检索类型、检索关键词和检索文件类型;计算索引分片数目;解析检索关键词,并使用IKAnalyser分词,生成查询任务并提交到各ElasticSerach集群从节点;各ElasticSerach集群从节点根据文件类型对索引分片进行过滤,并判断检索类型,如果为模糊检索,根据关键词类型在索引分片中查找匹配key:关键词类型为文件名称匹配key为filename,关键词类型为文件大小匹配key为filesize,关键词类型为文件类型匹配key为filetype,关键词类型为上传作者匹配key为fileauthor,关键词类型为索引创建时间匹配key为indextime,根据分词后的关键词与匹配key对应的value进行模糊匹配,得到匹配value及其对应的文件ID,生成检索结果即文件ID对应的全部value内容发送给检索门户模块,并以分页的形式将检索结果发送给web页面显示;如果为全文检索,根据分词后的关键词与索引分片中key为file对应的value进行模糊匹配,得到匹配value对应的文件ID,生成检索结果即文件ID对应的全部value内容发送给检索门户模块,并以分页的形式将检索结果发送给web页面显示;所述检索结果包括:文件名称、文件大小、文件类型、上传作者、索引创建时间或相关度评分;其中,当是否索引文件类型字段为是时,检索结果中包含文件类型,当是否索引上传作者字段为是时,检索结果中包含上传作者,当是否索引文件大小字段为是时,检索结果中包含文件大小。
在高级检索阶段,ElasticSerach集群主节点接收检索门户模块发送的检索条件,计算索引备份切片数目;解析检索条件,生成查询任务即检索条件组合:若已知关键词非空,对已知关键词中的检索关键词进行逻辑与进行组合;若文件类型非空,对文件类型按照逻辑或进行组合;使用IKAnalyser对检索条件组合进行分词,并将分词后的检索条件组合发送给各ElasticSerach集群从节点;各ElasticSerach集群从节点执行如下操作:a按照分词后的检索条件组合与各索引分片中value进行模糊匹配,得到匹配结果即匹配value;b判断检索条件中是否有未知关键词,有,对匹配结果按照未知关键词进行过滤后,执行c;否则,执行c;c判断检索条件中是否有索引创建时间,有,对匹配结果按照索引创建时间进行过滤后,并执行d;否则,执行d;d将检索结果即最终匹配value对应的文件ID的全部value发送给检索门户模块,并以分页的形式将检索结果发送到web页面显示,检索结果包含:文件名称、文件类型、上传作者、索引创建时间或相关度评分即匹配结果所占索引个数的百分比。
MongoDB数据库,用于接收系统配置模块发送的索引配置表并存储;接收文件管理模块发送的文件类型,并根据索引配置表将该文件类型对应的存储位置发送给文件管理模块;接收文件管理模块发送的文件记录并存储;接收文件管理模块发送的文件信息,判断是否同时有文件名称和文件类型,是,首先根据文件名称与文件记录进行模糊匹配,然后根据文件类型进行精确匹配,否则,根据文件名称与文件记录进行模糊匹配,得到匹配文件记录发送给文件管理模块;接收索引管理模块发送的文件信息,判断是否同时有文件名称和文件类型,是,首先根据文件名称与文件记录进行模糊匹配,然后根据的文件类型进行精确匹配,最后按照索引版本号为0进行过滤,将匹配文件记录发送给索引管理模块;否则,根据文件名称与文件记录进行模糊匹配,并按照索引版本号为0对匹配结果进行过滤,将匹配文件记录发送给索引管理模块;接收Spark集群主节点发送的文件ID,并与文件记录进行模糊匹配,提取匹配文件记录中文件类型与索引配置表匹配,将匹配文件记录和匹配索引配置表发送给Spark集群主节点;接收索引管理模块发送的索引记录,判断是否有相同文件ID的索引记录,有,更新索引记录并将该文件ID对应的文件记录中的索引版本号加1,否则,将索引记录存储;接收索引管理模块发送的查询条件在索引记录中进行模糊匹配,将匹配索引记录发送给索引管理模块;接收索引管理模块发送的文件ID和删除索引记录消息,将文件ID对应的索引记录删除,并将该文件ID对应的文件记录中索引版本号重置为0;接收检索门户模块发送的检索日志并存储。
Claims (7)
1.一种基于HDFS的文件检索系统,其特征在于,包括:系统配置模块、文件管理模块、索引管理模块、检索门户模块、MongoDB数据库和后台存储计算集群;所述后台存储计算集群包括HDFS集群、Spark集群和ElasticSearch集群;
所述系统配置模块,用于配置后台存储计算集群参数和索引配置表,并将索引配置表发送给MongoDB数据库;
所述文件管理模块,用于接收文件,生成该文件的文件ID和文件信息,将文件信息发送给MongoDB数据库;接收MongoDB数据库发送的存储位置,将文件、文件ID和存储位置发送给HDFS集群,并生成包含文件ID、文件信息和存储位置的文件记录发送给MongoDB数据库;
所述HDFS集群,用于接收文件管理模块发送的文件、文件ID和存储位置,并根据存储位置存储文件和文件ID;
所述索引管理模块,用于将文件信息发送给MongoDB数据库,接收MongoDB数据库发送的匹配文件记录,提取文件ID,判断操作类型,如果是更新索引操作,将文件ID和删除索引消息发送到ElasticSerch集群,将文件ID发送给Spark集群,如果是索引创建操作,将文件ID发送给Spark集群进行索引创建;接收Spark集群发送索引创建成功消息,生成索引记录发送给MongoDB数据库;
所述检索门户模块,用于将检索条件发送给ElasticSearch集群,接收ElasticSearch集群发送的检索结果,并生成检索日志发送给MongoDB数据库;
所述Spark集群,用于接收文件ID,并创建索引,将创建好的索引发送到ElasticSerch集群,并向索引管理模块发送索引创建成功消息;
所述ElasticSerch集群,用于接收Spark集群发送的索引并存储;接收索引管理模块发送的文件ID和删除索引消息,删除文件ID对应的索引;接收检索门户模块发送的检索条件并根据检索条件与索引匹配,根据匹配索引生成检索结果并发送给检索门户模块;
所述MongoDB数据库,用于接收系统配置模块发送的索引配置表并存储;接收文件管理模块发送的文件信息,并根据索引配置表将文件信息对应的存储位置发送给文件管理模块;接收文件管理模块发送的文件记录并存储;接收索引管理模块发送的文件信息,并与文件记录进行匹配,将匹配文件记录发送给索引管理模块;接收索引管理模块发送的索引记录并存储;接收检索门户模块发送的检索日志并存储。
2.根据权利要求1所述的基于HDFS的文件检索系统,其特征在于,所述文件管理模块还用于向HDFS集群发送文件ID、存储位置和下载文件消息;向HDFS集群发送文件ID、存储位置和删除文件消息;接收HDFS集群发送的文件;
所述HDFS集群还用于接收文件管理模块发送的文件ID、存储位置和下载文件消息或文件ID、存储位置和删除文件消息,在存储位置中根据文件ID下载文件并发送给文件管理模块或删除文件;
所述MongoDB数据库还用于接收文件管理模块发送文件信息并与文件记录进行匹配,得到匹配文件记录发送给文件管理模块。
3.根据权利要求1所述的基于HDFS的文件检索系统,其特征在于,所述索引管理模块还用于将匹配索引记录中的文件ID和删除索引消息发送到ElasticSerch集群,并向MongoDB数据库发送文件ID和删除索引记录;
所述MongoDB数据库还用于接收索引管理模块发送的文件ID和删除索引记录,删除文件ID对应的索引记录。
4.根据权利要求1所述的基于HDFS的文件检索系统,其特征在于,所述检索门户模块还用于查询检索日志表,对检索条件根据重复度降序排列,获得排序靠前的检索条件,并发送到web页面显示。
5.根据权利要求1所述的基于HDFS的文件检索系统,其特征在于,所述Spark集群包括Spark集群主节点和Spark集群从节点,Spark集群主节点接收文件ID,并将文件ID发送给MongoDB数据库,接收MongoDB数据库发送的匹配文件记录和匹配索引配置表,将匹配文件记录和匹配索引配置表发送给Spark集群从节点;Spark集群从节点根据匹配文件记录和匹配索引配置表生成key和value与文件ID的hashmap映射,其中key为索引项名称即文件信息项名称,value为索引项内容即文件信息;将hashmap中内容以“(key->value)->文件ID”格式创建索引,将索引分割成n个索引分片,每个索引分片拥有≥1个副本,将n个索引分片及其副本发送给ElasticSerach集群;
所述MongoDB数据库接收Spark集群主节点发送的文件ID,并与文件记录进行匹配,提取匹配文件记录中文件信息与索引配置表匹配,将匹配文件记录和匹配索引配置表发送给Spark集群主节点;
所述ElasticSerach集群包括ElasticSerach集群主节点和ElasticSerach集群从节点,ElasticSerach集群主节点接收Spark集群从节点发送的n个索引分片及其副本,并分别发送给ElasticSerach集群的n个ElasticSerach集群从节点存储。
6.根据权利要求5所述的基于HDFS的文件检索系统,其特征在于,所述ElasticSearch集群主节点将检索条件提交到ElasticSearch集群从节点;各ElasticSearch集群从节点将检索条件与索引中value进行模糊匹配,并提取匹配索引中的文件ID,将文件ID对应的所有value中的内容作为匹配文件信息即检索结果。
7.根据权利要求5所述的基于HDFS的文件检索系统,其特征在于,所述文件记录包括:文件ID、文件名称、文件类型、文件大小、上传时间、上传作者、存储位置和索引版本号;所述索引配置表包括:文件类型、存储位置、是否索引文件名称、是否索引文件类型、是否索引文件大小、是否全文索引、是否索引上传作者字段;
所述Spark集群从节点执行如下步骤:a判断是否全文索引字段,如果是,将文件ID和存储位置发送给HDFS集群,接收文件,依次对该文件内容进行base64编码、Apache Tika解析和IKAnalyser分词,并设置key为file,将分词后的文件内容放入value中,将key和value存入hashmap中,执行b,否则,执行b;b判断是否索引文件名称的字段,如果是,则设置key为filename,设置value为使用IkAnalyser对文件名称分词后的结果,并将key和value存入hashmap中,执行c,否则,执行c;c判断是否索引文件大小的字段值,如果是,则设置key为filesize,设置value为文件大小,将key和value存入hashmap中,执行d,否则执行d;d判断是否索引文件类型的字段,如果是,则设置key为filetype,设置value为文件类型,将key和value存入hashmap中,执行e,否则,执行e;判断是否索引上传作者的字段,如果是,则设置key为fileauthor,设置value为上传作者,并将key和value存入hashmap中,执行f,否则,执行f;f获取当前时间作为索引创建时间,设置key为indextime,设置value为索引创建时间,将key和value存入hashmap中;将文件ID放入hashmap中;
所述HDFS集群接收Spark集群从节点发送的文件ID和存储位置,在存储位置对应目录中下载文件并发送给Spark集群从节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610898403.1A CN106484877B (zh) | 2016-10-14 | 2016-10-14 | 一种基于hdfs的文件检索系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610898403.1A CN106484877B (zh) | 2016-10-14 | 2016-10-14 | 一种基于hdfs的文件检索系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484877A CN106484877A (zh) | 2017-03-08 |
CN106484877B true CN106484877B (zh) | 2019-04-26 |
Family
ID=58269569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610898403.1A Expired - Fee Related CN106484877B (zh) | 2016-10-14 | 2016-10-14 | 一种基于hdfs的文件检索系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484877B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122443B (zh) * | 2017-04-24 | 2019-09-17 | 中国科学院软件研究所 | 一种基于Spark SQL的分布式全文检索系统及方法 |
CN107329987A (zh) * | 2017-06-02 | 2017-11-07 | 广州启辰电子科技有限公司 | 一种基于mongo数据库的搜索系统 |
CN107273473A (zh) * | 2017-06-08 | 2017-10-20 | 维沃移动通信有限公司 | 一种文件存储方法及装置、文件提取方法及装置 |
CN110019080B (zh) * | 2017-07-14 | 2021-11-12 | 北京京东尚科信息技术有限公司 | 数据访问方法和装置 |
CN108154024B (zh) * | 2017-12-20 | 2020-07-28 | 北京奇艺世纪科技有限公司 | 一种数据检索方法、装置及电子设备 |
CN108197296B (zh) * | 2018-01-23 | 2020-09-29 | 马上消费金融股份有限公司 | 基于Elasticsearch索引的数据存储方法 |
CN108897804A (zh) * | 2018-06-15 | 2018-11-27 | 东北大学秦皇岛分校 | 一种互联网空间数据的搜索系统及方法 |
CN110751568B (zh) * | 2018-07-20 | 2024-04-30 | 武汉烽火众智智慧之星科技有限公司 | 一种人员关系亲密度分析方法及装置 |
CN109376121B (zh) * | 2018-08-10 | 2021-07-02 | 南京华讯方舟通信设备有限公司 | 一种基于ElasticSearch全文检索的文件索引系统及方法 |
CN109299067B (zh) * | 2018-08-22 | 2021-04-20 | 北京百度网讯科技有限公司 | 页面访问方法、装置和存储介质 |
CN109189798B (zh) * | 2018-09-30 | 2021-12-17 | 浙江百世技术有限公司 | 一种基于spark同步更新数据的方法 |
CN109614374B (zh) * | 2018-11-13 | 2020-10-27 | 合肥龙图腾信息技术有限公司 | 一种文件记录系统及方法 |
CN109582758B (zh) * | 2018-12-06 | 2023-04-07 | 重庆邮电大学 | 一种Elasticsearch索引分片优化方法 |
CN109885536B (zh) * | 2019-02-26 | 2023-06-16 | 深圳众享互联科技有限公司 | 一种基于分布式数据分片存储和模糊查找方法 |
CN110519332A (zh) * | 2019-07-31 | 2019-11-29 | 浪潮电子信息产业股份有限公司 | 一种服务器的文件备份方法、相关方法、相关装置 |
CN111026918A (zh) * | 2019-11-12 | 2020-04-17 | 上海麦克风文化传媒有限公司 | 一种温数据大规模分析架构 |
CN110909737A (zh) * | 2019-11-14 | 2020-03-24 | 武汉虹旭信息技术有限责任公司 | 图片文字识别方法及系统 |
CN111078705A (zh) * | 2019-12-20 | 2020-04-28 | 南京聚力云成电子科技有限公司 | 基于Spark平台建立数据索引方法及数据查询方法 |
CN111353762B (zh) * | 2020-03-30 | 2024-09-03 | 中国建设银行股份有限公司 | 一种规章制度管理方法及系统 |
CN112131449B (zh) * | 2020-09-21 | 2022-07-22 | 西北大学 | 一种基于ElasticSearch的文化资源级联查询接口的实现方法 |
CN112052261A (zh) * | 2020-09-29 | 2020-12-08 | 中国银行股份有限公司 | 一种基于es的银行外部数据管理方法、装置及设备 |
CN112613009A (zh) * | 2020-12-28 | 2021-04-06 | 杭州涂鸦信息技术有限公司 | 数据中心访问方法、客户端及计算机存储介质 |
CN112380276B (zh) * | 2021-01-15 | 2021-09-07 | 四川新网银行股份有限公司 | 一种分布式系统分库分表后非分片键字段查询数据的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436513A (zh) * | 2012-01-18 | 2012-05-02 | 中国电子科技集团公司第十五研究所 | 分布式检索方法和系统 |
CN105786864A (zh) * | 2014-12-24 | 2016-07-20 | 国家电网公司 | 一种实现海量数据离线分析的方法 |
CN105912609A (zh) * | 2016-04-06 | 2016-08-31 | 中国农业银行股份有限公司 | 一种数据文件处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9065810B2 (en) * | 2013-01-30 | 2015-06-23 | Ebay Inc. | Daisy chain distribution in data centers |
-
2016
- 2016-10-14 CN CN201610898403.1A patent/CN106484877B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436513A (zh) * | 2012-01-18 | 2012-05-02 | 中国电子科技集团公司第十五研究所 | 分布式检索方法和系统 |
CN105786864A (zh) * | 2014-12-24 | 2016-07-20 | 国家电网公司 | 一种实现海量数据离线分析的方法 |
CN105912609A (zh) * | 2016-04-06 | 2016-08-31 | 中国农业银行股份有限公司 | 一种数据文件处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106484877A (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106484877B (zh) | 一种基于hdfs的文件检索系统 | |
Cambazoglu et al. | Scalability challenges in web search engines | |
US9805079B2 (en) | Executing constant time relational queries against structured and semi-structured data | |
Hirai et al. | WebBase: A repository of web pages | |
Sharma et al. | A brief review on leading big data models | |
CN104679778B (zh) | 一种搜索结果的生成方法及装置 | |
Lu et al. | Scalagist: Scalable generalized search trees for mapreduce systems [innovative systems paper] | |
CN106663056A (zh) | 文件系统中的元数据索引搜索 | |
US11048699B1 (en) | Grand unified file indexing | |
CN105160039A (zh) | 一种基于大数据的查询方法 | |
CN105303456A (zh) | 电力传输设备监控数据处理方法 | |
CN105117502A (zh) | 一种基于大数据的检索方法 | |
US8311982B2 (en) | Storing update data using a processing pipeline | |
CN103678491A (zh) | 一种基于Hadoop中小文件优化和倒排索引的方法 | |
Tang et al. | Deferred lightweight indexing for log-structured key-value stores | |
US10496648B2 (en) | Systems and methods for searching multiple related tables | |
CN116541427B (zh) | 数据查询方法、装置、设备及存储介质 | |
Tang et al. | Efficient Processing of Hamming-Distance-Based Similarity-Search Queries Over MapReduce. | |
Iyer et al. | A scalable distributed spatial index for the internet-of-things | |
Changtong | An improved HDFS for small file | |
Yang et al. | Efficient set containment join | |
Xu et al. | Enhancing HDFS with a full-text search system for massive small files | |
Liu et al. | Using provenance to efficiently improve metadata searching performance in storage systems | |
Mathew et al. | Efficient information retrieval using Lucene, LIndex and HIndex in Hadoop | |
CN108121807B (zh) | Hadoop环境下多维索引结构OBF-Index的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20170308 Assignee: Beijing diranke Software Co.,Ltd. Assignor: Northeastern University Contract record no.: X2020210000005 Denomination of invention: File retrieving system based on HDFS (Hadoop Distributed File System) Granted publication date: 20190426 License type: Common License Record date: 20200426 |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190426 |