大数据一周纲要

文章详细介绍了Hadoop中的HDFS和MapReduce机制,包括文件块大小、shell操作、读写流程、InputFormat、Mapper、分区、排序、Combiner和Reducer。同时,讨论了YARN的工作机制和调度器选择。此外,文章提出了两种分布式小文件存储管理方法,旨在解决存储效率和清理问题,以及优化Elasticsearch的数据搜索方法,通过缓存策略减少内存消耗和提高搜索性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Hadoop学习完成

178/178

HDFS:

        1.HDFS文件块大小

                磁盘读写速度

                中小公司一般128m,大公司256m

        2.HDFS的shell操作

        3.HDFS的读写流程

MapReduce

        1.InputFormat

                1)默认的是TextInputformat kv   k:偏移量     v:一行内容

                2)处理小文件CombineTextInputFormat 把多个文件合并到一起统一切片

        2.Mapper

                setup()初始化;

                map()用户的业务逻辑;

                clearup()关闭资源

        3.分区

                默认分区HashPartitioner,默认按照key的hash值

                自定义分区setPartitionerClass,指定相应数量的reducetask

         4.排序

                1)部分排序 每个输出的文件内部有序

                2)全排序  一个Reduce对所有数据大排序

                3)二次排序 自定义排序范畴,实现writableCompare接口,重写compareTo方法

                        总流量倒序  按照上行流量 正序

        5.Combiner

                前提:不影响最终的业务逻辑

                提前聚合map  =>  解决数据倾斜的一个方法

        6.Reducer

                用户的业务逻辑

                setup()初始化   reduce()用户的业务逻辑  clearup()关闭资源

        7.Outputformat

                1)默认TextOutFormat 按行输出文件

                2)自定义

Yarn  

        1.Yarn的工作机制

        2.yarn的调度器

                1)FIFO/容量/公平

                2)apache默认调度器    容量:CDH默认调度器  公平

                3)公平/容量默认一个default,需要创建多队列

                4)中小企业:hive  spark  flink  mr

                5)中大企业:业务模块:登录/注册/购物车/营销

                6)好处:解耦  降低风险  双11 618 降级使用

                7)每个调度器的特点

                        相同点:支持多队列,可以借资源,支持多用户

                        不同点:容量调度器--优先满足先进来的任务先执行

                                       公平调度器--在队列里面的任务公平享有队列资源

                8)生产环境怎么选:

                        中小企业:对并发度要求不高,选择容量

                        中大企业:对并发度要求比较高,选择公平

                9)队列运行原理、Yarn常用命令、核心参数配置、配置容量调度器和公平调度器、tool                       接口使用

二、专利论文两篇,初稿(未完成)

一种分布式网络小文件存储管理方法:https://pss-system.cponline.cnipa.gov.cn/documents/detail?prevPageTit=changgui

背景:

随着互联网技术的迅速发展,产生的信息呈爆炸式增长,传统的文件系统难以满足海量文件对于动态扩展、高效访问的需求。尤其是对于半结构化数据或非结构化数据而言,此类数据的占用空间通常比结构化数据大,对存储系统的要求更高,此外,在一些应用场景中需要从灵活多变的多个维度快速对半结构化数据或非结构化数据进行搜索,这对搜索引擎也提出了要求。

目前,现有的方案主要采用以下两种方式来对小文件进行存储:
1)将小文件聚合成大文件进行存储;
2)利用第三方中间件来进行小文件存储,如FASTDFS,MINIO,HDFS等。
以上方案可以实现海量小文件的实时存储,但存储到分布式系统中的小文件清理,只能通过提前标记,要么等整块文件都标记删除后,再将整块文件删除;要么采用复制的方法,将标记块中不需要删除的文件复制出来存入新文件块中。以上方案在网络安全领域,每天会还原大量小文件,并且没法永久存储,需要进行大量文件的清理回滚,如果策略选择不合适会导致磁盘存储浪费,磁盘性能及效率下降。

发明内容:

为了解决上述现有技术存在的问题和缺陷,本发明提出了一种分布式网络小文件存储管理方法,通过对全量文件存储到FastDFS集群全量库中,对恶意文件存储到FastDFS集群持久库中,实现了对小文件的分区存储及差异化管理,避免了磁盘的存储浪费以及磁盘性能和效率下降的问题。
为了实现上述发明目的,本发明的技术方案如下:一种分布式网络小文件存储管理方法,包括海量网络小文件存储步骤、海量网络小文件检测及恶意小文件存储步骤和海量网络小文件清理步骤;
所述海量网络小文件存储步骤,流量探针设备将各安全域间的流量所产生的文件还原并上传至智能分析检测平台,所述智能分析检测平台包括文件检测模块以及部署在客户网络中的kafka集群,所述智能分析检测平台将文件统一存储至kafka集群中;
文件消费服务从kafka集群消费文件内容,并将所有小文件统一存储到FastDFS集群全量库中,其中,文件真实的存储FileID存储到ElasticSearch的md5-path索引中,文件真实的存储块信息存储至MySQL的fastdfs-trunk-info表中;
所述海量网络小文件检测及恶意小文件存储步骤,文件检测模块从md5-path索引中提取最新出现且未被检测的文件进行分析,分析完成后将检测分析结果存储到ElasticSearch的md5-libs索引中,并将md5-path索引中对应的md5值状态修改为完成分析;
文件检测模块针对可疑的检测分析结果,对原始文件进行提取,并将文件重新存储至FastDFS持久库中,根据该文件的MD5值更新md5-path索引中对应的文件存储类型、存储块信息和文件存储时的FileID字段信息;
所述海量网络小文件清理步骤,分布式存储节点监听服务每小时向文件清理服务上报当前磁盘的存储信息和FastDFS集群全量库及持久库的存储信息,文件清理服务统计各分布式节点存储信息;
当整个分布式集群存储总量达到阈值上限时,文件清理服务启动清理任务,从fastdfs-trunk-info表中根据更新时间提取最早且未被清理的全量库中的记录,并下发文件清除指令至各个分布式存储节点,同时将fastdfs-trunk-info表中对应记录状态标记为删除中;
各监听服务接收指令后启动文件清理工作,根据块文件存储路径按块文件删除,删除完成后反馈文件清理服务当前节点清理完成;
当所有分布式存储节点上的文件清除指令执行完成后,文件存储服务将fastdfs-trunk-info表中对应的记录状态标记为已删除,同时根据已经被清理的块文件信息,对md5-path索引中对应记录进行删除;
一轮清理完成后会做一次磁盘存储检查,如果磁盘存储空间没有下降到阈值下限,则重复执行以上清理任务,直到存储空间下降到阈值下限。
作为优选地,所述将所有小文件统一存储到FastDFS集群全量库中,包括:
文件消费服务计算小文件的MD5值,在ElasticSearch的md5-path索引中查询是否存在该MD5值,若不存在,则将该文件存储至FastDFS集群全量库中,并返回File ID,将FileID保存至ElasticSearch的md5-path索引中,同时解析FileID,将FastDFS真实存储块文件信息存储到MySQL的fastdfs-trunk-info表中;若该MD5值存在,则根据MD5值更新md5-path索引数据中的更新时间。
作为优选地,所述md5-path索引的存储字段包括存储类型、MD5值、文件存储FileID、文件块信息、文件检测标记、创建时间以及更新时间。
作为优选地,所述fastdfs-trunk-info表的存储字段包括MD5值、文件块信息、存储类型、删除标记、版本号、创建时间以及更新时间。
作为优选地,所述md5-libs索引的存储字段包括MD5值、文件等级、木马信息、网络行为、概要报告、文件报告路径、检测时间以及更新时间。
作为优选地,所述存储类型是指文件存储在全量库或持久库中。
作为优选地,所述可疑的检测分析结果是指文件的检测等级为低危、中危以及高危的文件。
作为优选地,所述阈值上限是指分布式集群存储总量占磁盘存储空间的85%,阈值下限是指分布式集群存储总量占磁盘存储空间的75%。

本发明的有益效果:

(1)本发明通过对全量文件存储到FastDFS集群全量库中,对恶意文件存储到FastDFS集群持久库中,实现了对小文件的分区存储及差异化管理,其中,分区存储方便对海量小文件进行回滚,而差异化管理则实现了对流量中重点关注的文件进行用久存储,为取证提供了原始素材。
(2)本发明通过文件清理服务和分布式存储节点监听服务,实现了按需进行大文件的清理,提高了文件清理的性能和效率。
(3)本发明中,海量流量中低价值文件可以被回滚,缩短了存储周期,降低了存储成本,进而确保平台的稳定性。

一种基于Elasticsearch的数据搜索方法

https://pss-system.cponline.cnipa.gov.cn/documents/detail?prevPageTit=changgui

背景:

Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。Elasticsearch作为数据库能够提供实时的查询、搜索、聚合等功能,但是随着Elasticsearch存储数据的增多,占用磁盘存储数据量越来越多,进行数据检索时需要的内存空间会越来越大,当数据量超过一定阈值后,ES进行检索数据时所需的大量的内存空间可能会导致检索数据非常缓慢,甚至可能将内存耗尽,导致无法进行正常的数据索引和检索。
针对相关技术中基于Elasticsearch进行数据搜索时由于内存占用太大甚至内存耗尽而导致无法搜索出数据的问题,目前尚未提出有效的解决方案。

发明内容:

本申请的主要目的在于提供一种基于Elasticsearch的数据搜索方法和装置,以解决相关技术中基于Elasticsearch进行数据搜索时由于内存占用太大甚至内存耗尽而导致无法搜索出数据的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种基于Elasticsearch的数据搜索方法。该方法包括:依据数据搜索请求确定待查询索引,并确定待查询索引的索引状态,其中,所述索引状态为以下之一:第一索引状态和第二索引状态,所述第一索引状态的索引存储的数据已缓存至Elasticsearch内存中,所述第二索引状态的索引存储的数据未缓存至所述Elasticsearch内存中;若所述待查询索引为第一索引状态的索引,则从所述Elasticsearch内存中搜索得到第一数据,并将所述第一数据存储在缓存区;若所述待查询索引为第二索引状态的索引,将所述待查询索引存储的数据缓存至所述Elasticsearch内存中,并依据所述数据搜索请求和所述待查询索引,从所述Elasticsearch内存中进行搜索,得到第二数据,并将所述第二数据存储在所述缓存区;从所述缓存区中的数据确定所述数据搜索请求的搜索结果。
进一步地,依据数据搜索请求确定待查询索引包括:依据所述数据搜索请求确定搜索时间范围和待搜索数据的属性信息;依据所述搜索时间范围和所述待搜索数据的属性信息确定所述待查询索引。
进一步地,若所述待查询索引为第一索引状态的索引,则从所述Elasticsearch内存中搜索得到第一数据包括:对所述数据搜索请求对应的搜索时间范围进行转换,得到时间戳范围;依据所述时间戳范围和所述待查询索引,从所述Elasticsearch内存中搜索得到所述第一数据。
进一步地,在依据数据搜索请求确定待查询索引之前,所述方法还包括:以预设时间周期建立索引,并将预设时间范围的数据存储至所述索引中,其中,以索引的创建日期和索引存储的数据类型对所述索引进行命名。
进一步地,在将预设时间范围的数据存储至所述索引中之后,采用以下方式之一确定是否更新索引的索引状态:设置所述Elasticsearch内存的占用阈值和处于第一索引状态的索引的阈值个数,依据所述占用阈值和阈值个数,确定是否更新索引的索引状态;设置创建时间阈值,依据所述创建时间阈值确定是否更新索引的索引状态。
进一步地,依据所述占用阈值和阈值个数,确定是否更新索引的索引状态包括:检测所述Elasticsearch内存的占用比例和当前处于第一索引状态的索引的个数;若所述占用比例大于等于所述占用阈值,则将第一目标索引的索引状态更新为第二索引状态,并将所述Elasticsearch内存中的所述第一目标索引对应的数据删除,直至所述占用比例小于所述占用阈值,或者当前处于第一索引状态的索引的个数等于所述阈值个数,其中,所述第一目标索引的创建时间早于剩余索引。
进一步地,依据所述创建时间阈值确定是否更新索引的索引状态包括:统计当前处于第一索引状态的索引的创建时间;判断当前处于第一索引状态的索引的创建时间与当前时间的差值,是否大于等于所述创建时间阈值;若存在处于第一索引状态的第二目标索引的创建时间与当前时间的差值大于等于所述创建时间阈值,则将所述第二目标索引的索引状态更新为第二索引状态,并将所述Elasticsearch内存中的所述第二目标索引对应的数据删除。
进一步地,在将所述第二数据存储在所述缓存区之后,所述方法还包括:将所述Elasticsearch内存中的所述待查询索引对应的数据删除。
为了实现上述目的,根据本申请的另一方面,提供了一种基于Elasticsearch的数据搜索装置。该装置包括:第一确定单元,用于依据数据搜索请求确定待查询索引,并确定待查询索引的索引状态,其中,所述索引状态为以下之一:第一索引状态和第二索引状态,所述第一索引状态的索引存储的数据已缓存至Elasticsearch内存中,所述第二索引状态的索引存储的数据未缓存至所述Elasticsearch内存中;第一搜索单元,用于若所述待查询索引为第一索引状态的索引,则从所述Elasticsearch内存中搜索得到第一数据,并将所述第一数据存储在缓存区;第二搜索单元,用于若所述待查询索引为第二索引状态的索引,将所述待查询索引存储的数据缓存至所述Elasticsearch内存中,并依据所述数据搜索请求和所述待查询索引,从所述Elasticsearch内存中进行搜索,得到第二数据,并将所述第二数据存储在所述缓存区;第二确定单元,用于从所述缓存区中的数据确定所述数据搜索请求的搜索结果。
进一步地,所述第一确定单元包括:第一确定模块,用于依据所述数据搜索请求确定搜索时间范围和待搜索数据的属性信息;第二确定模块,用于依据所述搜索时间范围和所述待搜索数据的属性信息确定所述待查询索引。
进一步地,所述第一搜索单元包括:转换模块,用于对所述数据搜索请求对应的搜索时间范围进行转换,得到时间戳范围;搜索模块,用于依据所述时间戳范围和所述待查询索引,从所述Elasticsearch内存中搜索得到所述第一数据。
进一步地,所述装置还包括:建立单元,用于在依据数据搜索请求确定待查询索引之前,以预设时间周期建立索引,并将预设时间范围的数据存储至所述索引中,其中,以索引的创建日期和索引存储的数据类型对所述索引进行命名。
进一步地,在将预设时间范围的数据存储至所述索引中之后,采用以下方式之一确定是否更新索引的索引状态:第一设置单元,用于设置所述Elasticsearch内存的占用阈值和处于第一索引状态的索引的阈值个数,依据所述占用阈值和阈值个数,确定是否更新索引的索引状态;第二设置单元,用于设置创建时间阈值,依据所述创建时间阈值确定是否更新索引的索引状态。
进一步地,所述第一设置单元包括:检测模块,用于检测所述Elasticsearch内存的占用比例和当前处于第一索引状态的索引的个数;第一更新模块,用于若所述占用比例大于等于所述占用阈值,则将第一目标索引的索引状态更新为第二索引状态,并将所述Elasticsearch内存中的所述第一目标索引对应的数据删除,直至所述占用比例小于所述占用阈值,或者当前处于第一索引状态的索引的个数等于所述阈值个数,其中,所述第一目标索引的创建时间早于剩余索引。
进一步地,所述第二设置单元包括:统计模块,用于统计当前处于第一索引状态的索引的创建时间;判断模块,用于判断当前处于第一索引状态的索引的创建时间与当前时间的差值,是否大于等于所述创建时间阈值;第二更换模块,用于若存在处于第一索引状态的第二目标索引的创建时间与当前时间的差值大于等于所述创建时间阈值,则将所述第二目标索引的索引状态更新为第二索引状态,并将所述Elasticsearch内存中的所述第二目标索引对应的数据删除。
进一步地,所述装置还包括:删除单元,用于在将所述第二数据存储在所述缓存区之后,将所述Elasticsearch内存中的所述待查询索引对应的数据删除。
为了实现上述目的,根据本申请的一个方面,提供了一种处理器,处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述的基于Elasticsearch的数据搜索方法。
为了实现上述目的,根据本申请的一个方面,提供了一种电子设备,电子设备包括一个或多个处理器和存储器,存储器用于存储一个或多个处理器实现上述任意一项所述的基于Elasticsearch的数据搜索方法。
通过本申请,采用以下步骤:依据数据搜索请求确定待查询索引,并确定待查询索引的索引状态,其中,索引状态为以下之一:第一索引状态和第二索引状态,第一索引状态的索引存储的数据已缓存至Elasticsearch内存中,第二索引状态的索引存储的数据未缓存至Elasticsearch内存中;若待查询索引为第一索引状态的索引,则从Elasticsearch内存中搜索得到第一数据,并将第一数据存储在缓存区;若待查询索引为第二索引状态的索引,将待查询索引存储的数据缓存至Elasticsearch内存中,并依据数据搜索请求和待查询索引,从Elasticsearch内存中进行搜索,得到第二数据,并将第二数据存储在缓存区;从缓存区中的数据确定数据搜索请求的搜索结果,解决了相关技术中基于Elasticsearch进行数据搜索时由于内存占用太大甚至内存耗尽而导致无法搜索出数据的问题。在本方案中,将索引分为第一索引状态和第二索引状态。对于处于第二索引状态的索引,平时处于非加载(unload)状态,不占用Elasticsearch内存空间,在对第二索引状态存储的数据检索时,将对应第二索引状态的索引的数据加载到Elasticsearch内存中,加载后检索出对应数据,检索结束后进行去除加载处理释放出内存空间,避免了通过增加内存空间来实现数据检索,进而达到了减少增加内存需要的成本的效果。

三、FastDFS的安装(未完成)

四、项目加上kafka的配置(再琢磨一下)(未完成) 

五、spark开始学习(未完成)

Java基础

leetcode

sql:普通+hive sql(牛客大厂真题)

项目(尚硅谷项目和实验室项目做结合)

Java该懂得都得会、linux命令、shell脚本、分布式技术

hadoop

spark

spoop

flink

离线 实时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值