网络溯源系统及其数据处理方法、计算机存储介质与流程

文档序号:17762541发布日期:2019-05-24 21:49阅读:370来源:国知局
网络溯源系统及其数据处理方法、计算机存储介质与流程

本发明涉及网络溯源技术领域,尤其涉及一种网络溯源系统及其数据处理方法、计算机存储介质。



背景技术:

随着互联网规模不断的扩大和应用的深入,网络安全事件呈现出隐蔽、复杂和多样性的趋势,因此对海量实时网络数据的监控和分析成为一种日益重要的应用。

通常,网络溯源系统需具备长时间大容量数据存储能力,能长期实时保存原始数据包,并同时保存数据流、会话及应用日志等各种统计数据;具备快速的数据检索能力,并对已发生的网络行为、应用数据和主机数据进行回溯分析;可随时分类查看及调用任意时间段的数据,当发现问题时提供一定时间范围内的回溯分析(根据设备存储空间而定),为迅速定位问题发生原因提供了更全面的分析依据,同时为网络安全提供了强有力的数据分析保障。

网络溯源系统具有海量数据存储、便捷的界面展示、精整的故障定位、全面的数据回溯、实时的性能监测等优势。为了保证系统数据文件的解码效率,设计系统的每个数据文件大小为40-50mb之间。因为数据量很大,可采用hdfs来保存数据。但hdfs最初被设计为处理大文件(通常大于一个hdfsblock块120mb);同时,hdfs为了使数据的传输速度和硬盘的传输速度接近,则设计将寻道时间(seek)相对最小化,将block的大小设置的比较大,这样读写数据块的时间将远大于寻道时间,接近于硬盘的传输速度。藉此,若将网络溯源系统部署在hdfs造成效率低下。具体包括下述几方面的原因:

hdfs中的元数据管理是一项耗时的任务,对于小型文件i/o,大部分时间用于管理元数据,而花费在数据传输上的时间很少。大量的小文件增加了hdfs中元数据操作的开销。另一方面,元数据保存在名称节点中,并且块的信息保存在数据节点中。此外,所有这些信息都被加载到物理内存中。结果,随着小文件数量的急剧增加,内存使用率迅速增加。

现有的优化hdfs的小文件问题的相关技术包括:

cn105183839a所公开的名称为“一种基于hadoop的小文件分级索引的存储优化方法”的专利。以及

cn106909651a所公开的名称为“一种基于hdfs小文件写入和读取的方法”的专利。

上述两专利公开了将小文件进行合并并对文件建立索引的机制。但在读取文件时,客户端还是要与namenode交互,通过查询namenode缓存文件分布式元数据信息,获取文件实际的位置,然后再和datanode交互获取文件数据,且交互过程中还因为增设的小文件处理服务器并设有两级索引和预取机制,在提高了成本的同时还复杂了文件读取的交互过程,例如:当查询的文件老是不同,就需要去频繁替换内存的内容导致系统的效率降低;藉此使得整理的数据读取效率还有待于进一步提高!



技术实现要素:

本发明目的在于公开一种网络溯源系统及其数据处理方法、计算机存储介质,以提高hdfs的资源利用率并进一步提高数据的存取效率。

为达上述目的,本发明公开一种网络溯源系统的数据处理方法,所述网络溯源系统基于hdfs进行数据存储,所述方法包括:

将所述网络溯源系统划分为用户层、预处理层与存储层,所述用户层用于生成所述溯源系统底层抓取的数据文件;所述存储层包括基于hdfs的namenode和至少两个datanode;

将所述预处理层设于所述用户层与所述存储层之间,并在数据文件的存储过程中,由所述预处理层执行下述步骤:

步骤s1、将所述用户层抓取的至少两个小数据文件合并成一个大文件并生成对应的smi索引,所述smi索引表征合并后的大文件名称与被合并的各个小文件的名称、大小及偏移量之间的关系;以及

步骤s2、在将合并后的所述大文件上传成功后,根据合并文件块的位置元数据信息生成mdi索引,所述mdi索引表征所述大文件名称与存储所述大文件的datanode的对应关系;

步骤s3、将所述smi索引与所述mdi索引缓存在所述namenode上,以及将所述smi索引缓存在相对应的datanode上;

相对应地,在数据文件的存储过程中,所述存储层还配套执行下述步骤:

步骤s10、将所述合并文件块的位置元数据信息从所述namenode内存转移到各对应的分布式datanode内存上;

在读取数据时,所述方法还包括:

步骤s100、所述用户层向所述namenode发送第一读取文件请求,所述第一读取文件请求携带目标小文件的名称;

步骤s200、所述namenode根据所述第一读取文件请求、缓存的smi索引和mdi索引向用户层返回目标小文件所对应的datanode地址信息;

步骤s300、所述用户层根据所述datanode地址信息发送第二读取文件请求,所述第二读取文件请求携带目标小文件的名称;

步骤s400、所述datanode根据所述第二读取文件请求、缓存的smi索引及合并文件块的位置元数据信息查找目标小文件的内容,并返回给所述用户层。

相对应地,本发明还公开一种网络溯源系统,所述网络溯源系统基于hdfs进行数据存储,包括:

用户层,用于生成所述溯源系统底层抓取的数据文件;

存储层,包括基于hdfs的namenode(主节点)和至少两个datanode(从节点);以及

设于所述用户层与所述存储层之间的预处理层,用于在数据文件的存储过程中,执行下述步骤:

步骤s1、将所述用户层抓取的至少两个小数据文件合并成一个大文件并生成对应的smi索引,所述smi索引表征合并后的大文件名称与被合并的各个小文件的名称、大小及偏移量之间的关系;以及

步骤s2、在将合并后的所述大文件上传成功后,根据合并文件块的位置元数据信息生成mdi索引,所述mdi索引表征所述大文件名称与存储所述大文件的datanode的对应关系;

步骤s3、将所述smi索引与所述mdi索引缓存在所述namenode上,以及将所述smi索引缓存在相对应的datanode上;

相对应地,在数据文件的存储过程中,所述存储层还用于配套执行下述步骤:

步骤s10、将所述合并文件块的位置元数据信息从所述namenode内存转移到各对应的分布式datanode内存上;

在读取数据时,所述网络溯源系统还用于执行下述步骤:

步骤s100、所述用户层向所述namenode发送第一读取文件请求,所述第一读取文件请求携带目标小文件的名称;

步骤s200、所述namenode根据所述第一读取文件请求、缓存的smi索引和mdi索引向用户层返回目标小文件所对应的datanode地址信息;

步骤s300、所述用户层根据所述datanode地址信息发送第二读取文件请求,所述第二读取文件请求携带目标小文件的名称;

步骤s400、所述datanode根据所述第二读取文件请求、缓存的smi索引及合并文件块的位置元数据信息查找目标小文件的内容,并返回给所述用户层。

为达上述目的,本发明还公开一种网络溯源系统,所述网络溯源系统基于hdfs进行数据存储,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述方法的步骤。

为达上述目的,本发明还公开一种计算机存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现上述方法中的步骤。

本发明具有以下有益效果:

一方面,将所有的文件索引的都加载到内存中不用再去预取浪费时间。另一方面,本发明也改进了hdfs的存储结构,将合并文件块的位置元数据信息从namenode内存转移到各对应的分布式datanode内存上,降低了namenode内存消耗;而且通过smi索引和mdi索引的配合有效避免了合并文件块的位置元数据信息移位所带来的不便。与此同时,在数据存储过程中,增设了预处理层;而在数据读取过程中,则不需要预处理层参与交互。从而从多个维度使得以小文件为主的网络溯源系统能高效的运行在hdfs上,提高了hdfs的资源利用率并进一步提高数据的存取效率。

下面将参照附图,对本发明作进一步详细的说明。

附图说明

构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例公开的系统结构示意图。

图2是本发明实施例公开的smi索引结构示意图。

图3是本发明实施例公开的dmi索引结构示意图。

图4是本发明实施例公开的文件上传过程示意图。

具体实施方式

以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。

实施例一

本实施例公开一种网络溯源系统,如图1所示,包括:

用户层,用于生成所述溯源系统底层抓取的数据文件。

存储层,包括基于hdfs的namenode和至少两个datanode。以及

设于所述用户层与所述存储层之间的预处理层。

其中,预处理层用于在数据文件的存储过程中,执行下述步骤:

步骤s1、将所述用户层抓取的至少两个小数据文件合并成一个大文件并生成对应的smi索引。所述smi索引表征合并后的大文件名称与被合并的各个小文件的名称、大小及偏移量之间的关系。

如图2所示,smi索引具体的形式可以是:“hash:<key,value>”。其中key主要记录文件的名称,value的内容是megerfilename_offset_length(即大小和偏移量)。当我们需要读取某个文件中的内容时候,我们先从缓存中找到对应的key值,从而能够获取对应的value值。我们根据获得value值能够确定某个文件的开始和结束位置。

步骤s2、在将合并后的所述大文件上传成功后,根据合并文件块的位置元数据信息生成mdi索引,所述mdi索引表征所述大文件名称与存储所述大文件的datanode的对应关系。

如图3所示,mdi的具体形式可以是:“hash:<mergedfilename,datanodeip>”。mdi指示合并文件与datanode之间的关系。如后所述:当我们从namenode获取mdi信息时,这意味着我们获得了合并文件的集体位置。

步骤s3、将所述smi索引与所述mdi索引缓存在所述namenode上,以及将所述smi索引缓存在相对应的datanode上。

相对应地,在数据文件的存储过程中,所述存储层还用于配套执行下述步骤:

步骤s10、将所述合并文件块的位置元数据信息从所述namenode内存转移到各对应的分布式datanode内存上。

在读取数据时,所述网络溯源系统还用于执行下述步骤:

步骤s100、所述用户层向所述namenode发送第一读取文件请求,所述第一读取文件请求携带目标小文件的名称。

步骤s200、所述namenode根据所述第一读取文件请求、缓存的smi索引和mdi索引向用户层返回目标小文件所对应的datanode地址信息。必要时,namenode还根据缓存的smi向客服端返回小文件和合并文件匹配信息。

步骤s300、所述用户层根据所述datanode地址信息发送第二读取文件请求,所述第二读取文件请求携带目标小文件的名称。

步骤s400、所述datanode根据所述第二读取文件请求、缓存的smi索引及合并文件块的位置元数据信息查找目标小文件的内容,并返回给所述用户层。在该过程中,根据小文件和合并文件的匹配信息,可以得到目标小文件的偏移量以及大小,从而快速确定用户层所需的目标小文件内容并返回给用户层。

藉此,在本实施例中,当用户层客户端发起一个读取小文件的请求,发送一个请求去获取namenodesmi和mdi,不是按原始的hdfs去namenode查询分布式文件位置元数据,加快了文件读取速率。

基于本实施例系统,可选的,如图1所示,上述预处理层包括:

文件判断单元,用于判断合并后大文件的大小是否满足上传阈值;如果满足,将文件发送给hdfsclient,否则,将发文件发送给文件处理单元;

文件处理单元,用于计算来自所述文件判断单元的文件的大小,根据小文件的合并顺序得到偏移量,同时产生临时的索引文件,然后将索引文件以及数据文件传递给文件合并单元;

文件合并单元,用于根据来自所述文件处理单元的顺序将文件合并到一个特殊形式的文件,同时,合并临时索引文件以生成smi索引;

hdfsclient,用于将合并的文件写入到hdfs集群中,通过分布式文件系统实例与namenode和datanode建立连接,并通知namenode分配用于写入数据块的datanode,获取合并文件块的位置元数据信息并生成mdi索引,以及将所述smi索引与所述mdi索引缓存在所述namenode上,以及将所述smi索引缓存在相对应的datanode上。

基于本实施例系统,参照图4,文件写入过程具体可为:

步骤一、设置阈值(hdfs块的大小128mb)。当预处理层收到来自用户层客户端的文件写入请求时,文件判断单元首先判断当前的合并文件的大小。如果合并文件大小不为空且小于hdfs块的大小,然后跳到步骤二。如果当前的合并的序列为空,跳转到步骤四;如果当前合并的文件大小大于hdfs块的大小,跳转到步骤五;

步骤二、当文件处理单元收到来自客户端文件时候,计算文件的大小以及建立文件的临时索引,然后跳到步骤三;

步骤三、合并单元将文件内容合并到当前合并单元中,同时将文件索引合并到索引文件中,然后跳转到步骤一;

步骤四、使用一个空白的文件来作为当前的合并文件,使它成为一个完整的数据块并且将它提交给hdfsclient。创建一个新的临时索引文件以及合并文件,它能够更新这个临时索引以及小文件到索引文件和合并文件中,然后跳转到步骤二。

步骤五、将当前的合并文件传给hdfsclient,hdfsclient通过分布式文件系统和hdfs集群连接将当前的合并的文件存储到文件存储层,同时删除当前的合并文件,然后跳转到步骤四。

实施例二

与上述系统实施例相对应的,本实施例公开一种网络溯源系统的数据处理方法,包括:

将所述网络溯源系统划分为用户层、预处理层与存储层,所述用户层用于生成所述溯源系统底层抓取的数据文件;所述存储层包括基于hdfs的namenode和至少两个datanode;

将所述预处理层设于所述用户层与所述存储层之间,并在数据文件的存储过程中,由所述预处理层执行下述步骤:

步骤s1、将所述用户层抓取的至少两个小数据文件合并成一个大文件并生成对应的smi索引,所述smi索引表征合并后的大文件名称与被合并的各个小文件的名称、大小及偏移量之间的关系;以及

步骤s2、在将合并后的所述大文件上传成功后,根据合并文件块的位置元数据信息生成mdi索引,所述mdi索引表征所述大文件名称与存储所述大文件的datanode的对应关系;

步骤s3、将所述smi索引与所述mdi索引缓存在所述namenode上,以及将所述smi索引缓存在相对应的datanode上;

相对应地,在数据文件的存储过程中,所述存储层还配套执行下述步骤:

步骤s10、将所述合并文件块的位置元数据信息从所述namenode内存转移到各对应的分布式datanode内存上;

在读取数据时,所述方法还包括:

步骤s100、所述用户层向所述namenode发送第一读取文件请求,所述第一读取文件请求携带目标小文件的名称;

步骤s200、所述namenode根据所述第一读取文件请求、缓存的smi索引和mdi索引向用户层返回目标小文件所对应的datanode地址信息;

步骤s300、所述用户层根据所述datanode地址信息发送第二读取文件请求,所述第二读取文件请求携带目标小文件的名称;

步骤s400、所述datanode根据所述第二读取文件请求、缓存的smi索引及合并文件块的位置元数据信息查找目标小文件的内容,并返回给所述用户层。

优选地,本实施例方法还包括:

所述预处理层在将合并后的所述大文件上传成功后,在本地删除所述大文件。

进一步地,本实施例方法还包括:

所述预处理模块将合并后的所述大文件以创建时间命名,并在hbase数据库中保存及更新所述大文件的时间戳信息,当所述大文件对应的时间戳信息达到预设的存储时效时,在所述存储层删除所述大文件及相关的smi索引和mdi索引信息。

例如:设置本实施例网络溯源系统的数据保存时间为1周,首先我们将合并的文件按照创建的时间来命名从而达到有序,当一天时间结束时,在hbase数据库中记录当天合并大文件名称的同时添加一个匹配的时间戳为1,然后每过一天时间戳+1,并引进一个时间戳的自动检测模块,当时间戳大于7时,则触发相应的删除机制。

进一步地,本实施例方法还包括:

对所述smi索引和所述mdi索引在所述hbase数据库中备份,备份格式为:key,vaule;其中,key表示合并大文件的名称,value包括按合并顺序来的小文件名称、大小、合并大文件的名称、合并文件块的位置元数据。藉此能够为高效的还原索引和节约使用空间提供极大地便利。

进一步地,本实施例方法还包括:

所述预处理层设有缓存池,并设有从所述缓存池提取文件进行合并的均衡策略。

例如:为了确保文件能够及时被合并,我们缓存池的大小通常设置为5,然后根据当前合并文件的大小从缓存池中选取合适的文件合并使得合并后最接近hdfsblock块的大小128mb,同时当一个文件在缓存池中超过3分钟,则下一个合并就是它,这样能够能够确保文件存储的平衡性,使得文件读取效率更高。

实施例三

本实施例公开一种网络溯源系统,所述网络溯源系统基于hdfs进行数据存储,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例二所述方法的步骤。

实施例四

本实施例公开一种计算机存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述实施例二所述方法中的步骤。

综上,本发明上述各实施例所分别公开的网络溯源系统及其数据处理方法、计算机存储介质,至少具有下述有益效果:

一方面,将所有的文件索引的都加载到内存中不用再去预取浪费时间。另一方面,本发明也改进了hdfs的存储结构,将合并文件块的位置元数据信息从namenode内存转移到各对应的分布式datanode内存上,降低了namenode内存消耗;而且通过smi索引和mdi索引的配合有效避免了合并文件块的位置元数据信息移位所带来的不便。与此同时,在数据存储过程中,增设了预处理层;而在数据读取过程中,则不需要预处理层参与交互。从而从多个维度使得以小文件为主的网络溯源系统能高效的运行在hdfs上,提高了hdfs的资源利用率并进一步提高数据的存取效率。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1