基于HBase的海量日志存储和查询方法与流程

文档序号:12034770阅读:4543来源:国知局

本发明涉及计算机数据存取技术领域,具体涉及一种基于hbase的海量日志存储和查询方法。



背景技术:

具有安全防护功能的办公管理系统(例如审计系统),需要详细的记录海量日志信息(例如审计信息),用于出现安全问题后,能够迅速、准确地进行问题追溯,查询相关信息和责任人。为此,需要提供一种能够存储海量日志存储系统和支持快速、多条件查询的日志存取方法(例如审计日志存储与查询方法)。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是:如何设计一种可进行动态、高速的数据条件查询,并能够自动过滤掉冗余数据,减少数据量存储的海量日志存储和查询方法。

(二)技术方案

为了解决上述技术问题,本发明提供了一种基于hbase的海量日志存储和查询方法,包括:

日志接收解析步骤:在接收到日志信息后,解析出用户信息、用户事件信息,以及用户事件发生的时间信息;所述用户信息为用户组织结构、用户姓名、用户账号中的一种,所述用户事件信息是对日志事件的说明;

日志存储步骤:按照用户信息md5值+用户事件信息md5值+时间戳的格式设计rowkey;根据日志接收解析步骤解析出的信息,将用户信息转换为md5值,将用户事件信息转换成md5值,并将用户事件发生的时间信息作为时间戳,从而计算出rowkey,并存储在hbase系统中;

日志查询步骤:根据查询条件设置startrow和endrow进行日志查询,查询出rowkey字典序在startrow和endrow之间的全部rowkey,进而查出rowkey对应的日志信息,所述查询条件包括用户信息、用户事件、起始时间、终止时间。

优选地,所述日志存储步骤中,计算rowkey时,截取用户信息md5值的后n位,并存储在hbase表中。

优选地,所述日志存储步骤中,计算rowkey时,截取用户事件信息md5值的后n位,并存储在hbase表中。

优选地,所述日志信息为审计日志信息。

(三)有益效果

本发明中利用了数据库hbase的特性,并设计一种用户信息md5值+用户事件信息md5值+时间戳的rowkey格式实现海量日志数据存取,可进行动态、高速的数据条件查询,并能够自动过滤掉冗余数据,减少数据量的存储。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。

hbase是一种分布式、面向列的开源数据库,构建于hdfs上,是一种典型的key/value格式的存储系统,利用其缓存、分布式的特性,可高并发地存储数十亿行、上百万列的数据。

本发明实施例利用hbase的上述特性,提供一种rowkey设计方法,进而实现了一种基于hbase的海量日志存储和查询方法,能够进行动态、高速的数据条件查询,并能够自动过滤掉冗余数据,减少数据量的存储。

本发明实施例提供了一种基于hbase的海量日志存储和查询方法,包括:

日志接收解析步骤:在接收到日志信息后,解析出用户信息、用户事件信息,以及用户事件发生的时间信息,供后续使用;

本发明提出的日志存取方法针对日志格式至少包含以下字段:用户信息、用户事件、事件发生时间。即该审计日志需要能够详细说明何人何时做了哪些事情,其中用户信息可以只是用户姓名或账号信息,也可包括用户的组织机构等其他信息,所述用户事件信息是对日志事件的说明。

日志存储步骤:按照用户信息md5值+用户事件信息md5值+时间戳的格式设计rowkey;根据日志接收解析步骤解析出的信息,将用户信息转换为md5值,将用户事件信息转换成md5值,并将用户事件发生的时间信息作为时间戳,从而计算出rowkey,并存储在hbase系统中;

使用hbase存储信息时,首先需要完成rowkey的设计。

rowkey是hbase表中每条记录的主键,方便快速查找,rowkey的设计非常重要。

本发明使用用户信息md5值、用户事件信息md5值和时间戳作为rowkey,标识一条审计日志信息,用于条件查询审计日志。

例如,通过对日志解析后,获取用户信息为zhangsan,用户事件为文件操作,事件发生事件为2017年6月6日,通过计算,得到rowkey为ab9afrst1j1465142401537,其中ab9af为用户信息转换md5值得后5位,rst1j为文件操作事件转换为md5值得后5为,1465142401537为时间戳内容。

计算出rowkey后,将日志信息存入到hbase系统中。下面分别对用户信息md5值、用户事件信息md5值以及时间戳分别说明。

用户信息md5值:

用户信息可以是能代表用户的唯一性信息,其中可包括用户组织结构、用户姓名、用户账号等信息,但一条用户信息必须能唯一标名唯一一个用户,本步骤将用户信息转换为md5值作为rowkey的一部分,具有如下优点:

md5值不仅能唯一标明用户,而且能够将字符长度不同的用户信息变成长度相同的md5值,符合rowkey设计中长度相同的要求;

将用户信息加入到rowkey中后,可利用hbase的rowkey查询特性,可通过用户信息,迅速找到符合条件rowkey,进而通过符合条件的rowkey查询到用户日志信息。

存储过程中可根据需要,使用者可使用用户信息md5值的后n位作为rowkey中的一部分,代表用户信息,以减少rowkey长度,节省存储空间。

用户事件信息md5值:

用户事件信息是对日志具体事件的说明,将用户事件信息转换成md5值,并作为日志rowkey的一部分,具有如下优点:

md5值可唯一标识一个事件信息,并且可将字符长度长短不一的事件信息转换为长度相同的md5值,符合rowkey设计中长度相同的要求;

过滤冗余日志(冗余日志为相同用户信息、相同事件、相同时间点或事件发生时间在预设一定范围内的审计日志信息),根据hbase特性,相同rowkey的多条记录,仅存储最后存入的信息。将用户事件md5值信息加入到rowkey中后,可实现多条冗余日志经过日志解析和rowkey计算后,其具有完全相同的rowkey,从而保证冗余日志在存储过程中,仅存储最新的唯一一条记录,从而节约hbase的硬盘存储空间。

可根据需要,使用者可使用用户事件信息md5值的后n位作为rowkey中的一部分,代表用户事件信息,以减少rowkey长度,节省存储空间。

时间戳:

时间戳是对日志信息中提取的事件发生时间的标识,将时间戳加入到rowkey中具有如下优点:

根据hbase特性,其对存储的信息是按照rowkey的字典序进行排序。rowkey结尾加入时间戳后,hbase可对用户的审计日志进行排序,也可利用hbase的rowkey查询特性,设置检索条件的起始时间戳、终止时间戳,进而找到rowkey中时间戳全部在起始时间戳和终止时间戳之间的全部信息,进而可以通过时间检索到全部日志信息。

本发明在rowkey的设计过程中,曾经提出两种rowkey方案,第一种是rowkey是用户信息+时间戳,实际使用过程中,该方案的在接收日志过程中,会将同一用户、同一时间段的不同事件的日志信息丢失,即用户相同、时间戳或时间范围相同、事件信息不同情况下,新的事件日志会将旧的事件日志替换,从而导致审计日志丢失;第二种rowkey方案是用户信息+事件信息+时间戳,在实际使用中缺陷是事件信息过长,导致rowkey过长从而占用过多的存储空间,并且导致rowkey长短不一,在rowkey查询时要做较多的考虑。本发明最终提出的rowkey设计方法正解决了上面两种方案的不足,又能满足日志存储和查询的需求。

日志查询步骤:根据查询条件设置startrow和endrow进行日志查询,查询出rowkey字典序在startrow和endrow之间的全部rowkey,进而查出rowkey对应的日志信息。

hbase提供rowkey查询方法和filter查询方法,而作为一种key/value格式的存储系统,rowkey查询的效率要远远高于filter查询效率,在海量数据情况下,利用rowkey查询方法效率更高。通过本发明提出的rowkey设计方案,仅通过rowkey查询就可以满足查询需求,从而提高查询效率。特殊情况可根据需要配合filter查询,既能满足多条件查询需要,又能提高查询速度。

根据本发明提出的rowkey设计准则,在条件查询时,可根据查询条件(即用户信息、用户事件、起始时间、终止时间)设置startrow和endrow。例如:需要查询用户zhangsan在2017年6月6日的是否有文件操作日志,则设置startrow为ab9afrst1j1465142400537,设置endrow为ab9afrst1j1465228799537。hbase可查询出rowkey字典序在startrow和endrow之间的全部rowkey,进而查出rowkey对应的日志信息。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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