1.一種基于HDFS的文件檢索系統(tǒng),其特征在于,包括:系統(tǒng)配置模塊、文件管理模塊、索引管理模塊、檢索門(mén)戶模塊、MongoDB數(shù)據(jù)庫(kù)和后臺(tái)存儲(chǔ)計(jì)算集群;所述后臺(tái)存儲(chǔ)計(jì)算集群包括HDFS集群、Spark集群和ElasticSearch集群;
所述系統(tǒng)配置模塊,用于配置后臺(tái)存儲(chǔ)計(jì)算集群參數(shù)和索引配置表,并將索引配置表發(fā)送給MongoDB數(shù)據(jù)庫(kù);
所述文件管理模塊,用于接收文件,生成該文件的文件ID和文件信息,將文件信息發(fā)送給MongoDB數(shù)據(jù)庫(kù);接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的存儲(chǔ)位置,將文件、文件ID和存儲(chǔ)位置發(fā)送給HDFS集群,并生成包含文件ID、文件信息和存儲(chǔ)位置的文件記錄發(fā)送給MongoDB數(shù)據(jù)庫(kù);
所述HDFS集群,用于接收文件管理模塊發(fā)送的文件、文件ID和存儲(chǔ)位置,并根據(jù)存儲(chǔ)位置存儲(chǔ)文件和文件ID;
所述索引管理模塊,用于將文件信息發(fā)送給MongoDB數(shù)據(jù)庫(kù),接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配文件記錄,提取文件ID,判斷操作類(lèi)型,如果是更新索引操作,將文件ID和刪除索引消息發(fā)送到ElasticSerch集群,將文件ID發(fā)送給Spark集群,如果是索引創(chuàng)建操作,將文件ID發(fā)送給Spark集群進(jìn)行索引創(chuàng)建;接收Spark集群發(fā)送索引創(chuàng)建成功消息,生成索引記錄發(fā)送給MongoDB數(shù)據(jù)庫(kù);
所述檢索門(mén)戶模塊,用于將檢索條件發(fā)送給ElasticSearch集群,接收ElasticSearch集群發(fā)送的檢索結(jié)果,并生成檢索日志發(fā)送給MongoDB數(shù)據(jù)庫(kù);
所述Spark集群,用于接收文件ID,并創(chuàng)建索引,將創(chuàng)建好的索引發(fā)送到ElasticSerch集群,并向索引管理模塊發(fā)送索引創(chuàng)建成功消息;
所述ElasticSerch集群,用于接收Spark集群發(fā)送的索引并存儲(chǔ);接收索引管理模塊發(fā)送的文件ID和刪除索引消息,刪除文件ID對(duì)應(yīng)的索引;接收檢索門(mén)戶模塊發(fā)送的檢索條件并根據(jù)檢索條件與索引匹配,根據(jù)匹配索引生成檢索結(jié)果并發(fā)送給檢索門(mén)戶模塊;
所述MongoDB數(shù)據(jù)庫(kù),用于接收系統(tǒng)配置模塊發(fā)送的索引配置表并存儲(chǔ);接收文件管理模塊發(fā)送的文件信息,并根據(jù)索引配置表將文件信息對(duì)應(yīng)的存儲(chǔ)位置發(fā)送給文件管理模塊;接收文件管理模塊發(fā)送的文件記錄并存儲(chǔ);接收索引管理模塊發(fā)送的文件信息,并與文件記錄進(jìn)行匹配,將匹配文件記錄發(fā)送給索引管理模塊;接收索引管理模塊發(fā)送的索引記錄并存儲(chǔ);接收檢索門(mén)戶模塊發(fā)送的檢索日志并存儲(chǔ)。
2.根據(jù)權(quán)利要求1所述的基于HDFS的文件檢索系統(tǒng),其特征在于,所述文件管理模塊還用于向HDFS集群發(fā)送文件ID、存儲(chǔ)位置和下載文件消息;向HDFS集群發(fā)送文件ID、存儲(chǔ)位置和刪除文件消息;接收HDFS集群發(fā)送的文件;
所述HDFS集群還用于接收文件管理模塊發(fā)送的文件ID、存儲(chǔ)位置和下載文件消息或文件ID、存儲(chǔ)位置和刪除文件消息,在存儲(chǔ)位置中根據(jù)文件ID下載文件并發(fā)送給文件管理模塊或刪除文件;
所述MongoDB數(shù)據(jù)庫(kù)還用于接收文件管理模塊發(fā)送文件信息并與文件記錄進(jìn)行匹配,得到匹配文件記錄發(fā)送給文件管理模塊。
3.根據(jù)權(quán)利要求1所述的基于HDFS的文件檢索系統(tǒng),其特征在于,所述索引管理模塊還用于將匹配索引記錄中的文件ID和刪除索引消息發(fā)送到ElasticSerch集群,并向MongoDB數(shù)據(jù)庫(kù)發(fā)送文件ID和刪除索引記錄;
所述MongoDB數(shù)據(jù)庫(kù)還用于接收索引管理模塊發(fā)送的文件ID和刪除索引記錄,刪除文件ID對(duì)應(yīng)的索引記錄。
4.根據(jù)權(quán)利要求1所述的基于HDFS的文件檢索系統(tǒng),其特征在于,所述檢索門(mén)戶模塊還用于查詢(xún)檢索日志表,對(duì)檢索條件根據(jù)重復(fù)度降序排列,獲得排序靠前的檢索條件,并發(fā)送到web頁(yè)面顯示。
5.根據(jù)權(quán)利要求1所述的基于HDFS的文件檢索系統(tǒng),其特征在于,所述Spark集群包括Spark集群主節(jié)點(diǎn)和Spark集群從節(jié)點(diǎn),Spark集群主節(jié)點(diǎn)接收文件ID,并將文件ID發(fā)送給MongoDB數(shù)據(jù)庫(kù),接收MongoDB數(shù)據(jù)庫(kù)發(fā)送的匹配文件記錄和匹配索引配置表,將匹配文件記錄和匹配索引配置表發(fā)送給Spark集群從節(jié)點(diǎn);Spark集群從節(jié)點(diǎn)根據(jù)匹配文件記錄和匹配索引配置表生成key和value與文件ID的hashmap映射,其中key為索引項(xiàng)名稱(chēng)即文件信息項(xiàng)名稱(chēng),value為索引項(xiàng)內(nèi)容即文件信息;將hashmap中內(nèi)容以“(key->value)->文件ID”格式創(chuàng)建索引,將索引分割成n個(gè)索引分片,每個(gè)索引分片擁有≥1個(gè)副本,將n個(gè)索引分片及其副本發(fā)送給ElasticSerach集群;
所述MongoDB數(shù)據(jù)庫(kù)接收Spark集群主節(jié)點(diǎn)發(fā)送的文件ID,并與文件記錄進(jìn)行匹配,提取匹配文件記錄中文件信息與索引配置表匹配,將匹配文件記錄和匹配索引配置表發(fā)送給Spark集群主節(jié)點(diǎn);
所述ElasticSerach集群包括ElasticSerach集群主節(jié)點(diǎn)和ElasticSerach集群從節(jié)點(diǎn),ElasticSerach集群主節(jié)點(diǎn)接收Spark集群從節(jié)點(diǎn)發(fā)送的n個(gè)索引分片及其副本,并分別發(fā)送給ElasticSerach集群的n個(gè)ElasticSerach集群從節(jié)點(diǎn)存儲(chǔ)。
6.根據(jù)權(quán)利要求5所述的基于HDFS的文件檢索系統(tǒng),其特征在于,所述ElasticSearch集群主節(jié)點(diǎn)將檢索條件提交到ElasticSearch集群從節(jié)點(diǎn);各ElasticSearch集群從節(jié)點(diǎn)將檢索條件與索引中value進(jìn)行模糊匹配,并提取匹配索引中的文件ID,將文件ID對(duì)應(yīng)的所有value中的內(nèi)容作為匹配文件信息即檢索結(jié)果。
7.根據(jù)權(quán)利要求5所述的基于HDFS的文件檢索系統(tǒng),其特征在于,所述文件記錄包括:文件ID、文件名稱(chēng)、文件類(lèi)型、文件大小、上傳時(shí)間、上傳作者、存儲(chǔ)位置和索引版本號(hào);所述索引配置表包括:文件類(lèi)型、存儲(chǔ)位置、是否索引文件名稱(chēng)、是否索引文件類(lèi)型、是否索引文件大小、是否全文索引、是否索引上傳作者字段;
所述Spark集群從節(jié)點(diǎn)執(zhí)行如下步驟:a判斷是否全文索引字段,如果是,將文件ID和存儲(chǔ)位置發(fā)送給HDFS集群,接收文件,依次對(duì)該文件內(nèi)容進(jìn)行base64編碼、Apache Tika解析和IKAnalyser分詞,并設(shè)置key為file,將分詞后的文件內(nèi)容放入value中,將key和value存入hashmap中,執(zhí)行b,否則,執(zhí)行b;b判斷是否索引文件名稱(chēng)的字段,如果是,則設(shè)置key為filename,設(shè)置value為使用IkAnalyser對(duì)文件名稱(chēng)分詞后的結(jié)果,并將key和value存入hashmap中,執(zhí)行c,否則,執(zhí)行c;c判斷是否索引文件大小的字段值,如果是,則設(shè)置key為filesize,設(shè)置value為文件大小,將key和value存入hashmap中,執(zhí)行d,否則執(zhí)行d;d判斷是否索引文件類(lèi)型的字段,如果是,則設(shè)置key為filetype,設(shè)置value為文件類(lèi)型,將key和value存入hashmap中,執(zhí)行e,否則,執(zhí)行e;判斷是否索引上傳作者的字段,如果是,則設(shè)置key為fileauthor,設(shè)置value為上傳作者,并將key和value存入hashmap中,執(zhí)行f,否則,執(zhí)行f;f獲取當(dāng)前時(shí)間作為索引創(chuàng)建時(shí)間,設(shè)置key為indextime,設(shè)置value為索引創(chuàng)建時(shí)間,將key和value存入hashmap中;將文件ID放入hashmap中;
所述HDFS集群接收Spark集群從節(jié)點(diǎn)發(fā)送的文件ID和存儲(chǔ)位置,在存儲(chǔ)位置對(duì)應(yīng)目錄中下載文件并發(fā)送給Spark集群從節(jié)點(diǎn)。