日志数据统计方法、装置及节点与流程

文档序号:16146757发布日期:2018-12-05 16:33阅读:156来源:国知局
本发明涉及大数据领域,特别涉及一种日志数据统计方法、装置及节点。
背景技术
mapreduce(映射化简)是一种分布式计算框架,可以运行于大型的分布式处理系统中,并行处理成千上万的数据。mapreduce包括map(映射)节点和reduce(化简)节点,其中map节点用于对多条数据进行同一种操作,而reduce节点用于对map节点输出的数据进行汇总统计。mapreduce常用于对日志数据进行统计的场景下,当要对目标对象在目标指标下的度量值进行统计时,map节点可以获取指定日志数据,指定日志数据包括目标对象和目标对象在目标指标下的度量值,将指定日志数据写入到存储空间中,从而将多条指定日志数据存储于存储空间中。reduce节点可以从存储空间中拉取该多条指定日志数据,根据该多条指定日志数据,对目标对象在目标指标下的度量值进行统计。例如,当要统计广告主a所发布的广告的总点击量时,map节点会获取多条指定日志数据,每条指定日志数据包括广告主a和广告主a所发布的广告的点击量,并将该多条指定日志数据存储于存储空间中,而reduce节点从存储空间中拉取多条指定日志数据,求取该多条指定日志数据中的点击量的和值,该和值即为广告主a的总点击量。在实现本发明的过程中,发明人发现相关技术至少存在以下问题:reduce节点从存储空间中拉取多条指定日志数据时会占用较大的网络带宽,对多条指定日志数据进行处理时耗费的时间过长,导致处理效率不高。技术实现要素:为了解决相关技术的问题,本发明实施例提供了一种日志数据统计方法、装置及节点。所述技术方案如下:第一方面,提供了一种日志数据统计方法,应用于map(映射)节点中,所述方法包括:获取指定日志数据,所述指定日志数据包括目标对象和所述目标对象在目标指标下的度量值;将所述指定日志数据写入到第一存储空间中;获取由已写入到所述第一存储空间中的多条指定日志数据聚合得到的聚合日志数据,所述聚合日志数据包括所述目标对象和所述目标对象在所述目标指标下的聚合度量值,所述聚合度量值由所述多条指定日志数据中的度量值聚合得到;将所述聚合日志数据写入到第二存储空间中,reduce(化简)节点用于从所述第二存储空间中拉取所述聚合日志数据,根据所述聚合度量值,获取对所述目标对象在所述目标指标下的度量值的统计结果。第二方面,提供了一种日志数据统计方法,应用于reduce节点中,所述方法包括:获取历史统计记录,所述历史统计记录中包括至少一个对象在至少一个指标下的历史度量值,所述至少一个对象包括目标对象;根据所述历史统计记录中每个对象在所述至少一个指标下的历史度量值,获取所述每个对象的历史总度量值,并获取所述至少一个对象的历史总度量值的和值;计算所述目标对象的历史总度量值与所述和值的比值,作为所述目标对象的历史统计值;向map节点发送所述历史统计值;其中,所述map节点用于将包括所述目标对象和所述目标对象在目标指标下的度量值的指定日志数据写入到第一存储空间中,获取由已写入到所述第一存储空间中的多条指定日志数据聚合得到的聚合日志数据,将所述聚合日志数据写入到第二存储空间中,所述聚合日志数据包括所述目标对象和所述目标对象在所述目标指标下的聚合度量值,所述聚合度量值由所述多条指定日志数据中的度量值聚合得到。第三方面,提供了一种日志数据统计装置,应用于map节点中,所述方法包括:获取模块,用于获取指定日志数据,所述指定日志数据包括目标对象和所述目标对象在目标指标下的度量值;写入模块,用于将所述指定日志数据写入到第一存储空间中;所述获取模块,还用于获取由已写入到所述第一存储空间中的多条指定日志数据聚合得到的聚合日志数据,所述聚合日志数据包括所述目标对象和所述目标对象在所述目标指标下的聚合度量值,所述聚合度量值由所述多条指定日志数据中的度量值聚合得到;所述写入模块,还用于将所述聚合日志数据写入到第二存储空间中,reduce节点用于从所述第二存储空间中拉取所述聚合日志数据,根据所述聚合度量值,获取对所述目标对象在所述目标指标下的度量值的统计结果。第四方面,提供了一种日志数据统计装置,应用于reduce节点中,所述装置包括:获取模块,用于获取历史统计记录,所述历史统计记录中包括至少一个对象在至少一个指标下的历史度量值,所述至少一个对象包括目标对象;所述获取模块,还用于根据所述历史统计记录中每个对象在所述至少一个指标下的历史度量值,获取所述每个对象的历史总度量值,并获取所述至少一个对象的历史总度量值的和值;计算模块,用于计算所述目标对象的历史总度量值与所述和值的比值,作为所述目标对象的历史统计值;发送模块,用于向map节点发送所述历史统计值;其中,所述map节点用于将包括所述目标对象和所述目标对象在目标指标下的度量值的指定日志数据写入到第一存储空间中,获取由已写入到所述第一存储空间中的多条指定日志数据聚合得到的聚合日志数据,将所述聚合日志数据写入到第二存储空间中,所述聚合日志数据包括所述目标对象和所述目标对象在所述目标指标下的聚合度量值,所述聚合度量值由所述多条指定日志数据中的度量值聚合得到。第五方面,提供了一种map节点,所述map节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上述第一方面所述的日志数据统计方法中所执行的操作。第六方面,提供了reduce节点,所述reduce节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上述第二方面所述的日志数据统计方法中所执行的操作。第七方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上述第一方面所述的日志数据统计方法中所执行的操作。第八方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上述第二方面所述的日志数据统计方法中所执行的操作。本发明实施例提供的技术方案带来的有益效果是:本发明实施例提供的方法、装置及节点,通过将目标对象的指定日志数据写入到第一存储空间中,在第一存储空间中对多条指定日志数据进行聚合得到聚合日志数据,从而实现了将目标对象在目标指标下的多个度量值聚合成一个聚合度量值,该聚合度量值能够代表该目标对象在目标指标下的度量值大小,而且由于聚合度量值的数据量要小于多个度量值的数据量,则聚合日志数据的数据量要小于多个指定日志数据的数据量,因此reduce节点拉取聚合日志数据时减少了占用的网络带宽,对聚合日志数据进行处理时节省了处理时间,提高了处理效率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1a是本发明实施例提供的一种实施环境的示意图;图1b是本发明实施例提供的一种实施环境的示意图;图2a是本发明实施例提供的一种日志数据统计方法的流程图;图2b是本发明实施例提供的一种日志数据统计方法的操作流程图;图2c是本发明实施例提供的一种处理日志数据的流程图;图2d是本发明实施例提供的一种发布广告的场景中map节点的操作流程图;图2e是本发明实施例提供的一种发布广告的场景中reduce节点的操作流程图;图2f是本发明实施例提供的一种日志数据统计方法的流程图;图2g是本发明实施例提供的一种日志数据统计方法的流程图;图3是本发明实施例提供的一种日志数据统计装置的结构示意图;图4是本发明实施例提供的一种日志数据统计装置的结构示意图;图5是本发明实施例提供的一种服务器的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1a是本发明实施例提供的一种实施环境的示意图,该实施环境包括:map节点101和reduce节点102,map节点101和reduce节点102通过网络连接。map节点101用于对多条原始日志数据进行同一种操作,reduce节点102用于对map节点101输出的日志数据进行汇总统计。其中,该map节点101可以为计算机、服务器等,reduce节点102也可以为计算机、服务器等。为了实现处理海量日志数据的功能,参见图1b,该实施环境还可以包括多个map节点101和多个reduce节点102,由多个map节点101分别对大量的原始日志数据进行处理,以分担运算量,由多个reduce节点102分别对map节点101输出的日志数据进行汇总统计,以分担运算量。其中,多个map节点101会将同一个对象的日志数据输出至同一个reduce节点中,以便在同一个reduce节点102上对同一个对象的日志数据进行汇总统计。进一步地,各个map节点101可以并行运算,各个reduce节点102也可以并行运算,以保证快速处理大量日志数据。进一步地,本实施环境还可以包括控制节点,控制节点与多个map节点101和多个reduce节点102分别连接,控制节点用于为每个map节点101和每个reduce节点102分配任务,而每个map节点101和每个reduce节点102会每隔指定时间间隔向控制节点发送心跳信息,在心跳信息中携带任务的完成进度、日志数据的存储位置等,以便控制节点统领日志数据的整体处理过程。该控制节点可以为jobtracker(作业追踪)节点、tasktracker(任务追踪)节点等。进一步地,本实施环境还可以包括服务器,服务器与控制节点连接,服务器可以生成原始日志数据并向控制节点下发任务,该任务中可以携带原始日志数据以及确定要统计的目标对象和目标指标,由控制节点通过map节点和reduce节点进行统计。相关技术中,map节点会直接将多条指定日志数据存储于存储空间中,reduce节点会从存储空间中拉取该多条指定日志数据,从而获取对目标对象在目标指标下的度量值的统计结果。但是,考虑到该多条指定日志数据量较大,导致拉取该多条指定日志数据时占用的网络带宽较大,本发明实施例中对该多条指定日志数据进行聚合,得到聚合日志数据,聚合日志数据中的聚合度量值能够代表该多条指定日志数据的度量值的大小,且聚合日志数据的数据量小于该多条指定日志数据的数据量,reduce节点拉取聚合日志数据时可以减小占用的网络带宽。图2a是本发明实施例提供的一种日志数据统计方法的流程图,该日志数据统计方法可以应用于上述实施例所示的实施环境中,交互主体为map节点和reduce节点,参见图2a,该方法包括:201、map节点根据确定的目标对象和目标指标以及原始日志数据,获取指定日志数据。每条原始日志数据包括至少一个对象在至少一个指标下的度量值,例如广告日志数据中的对象可以包括广告主、广告位等,指标可以包括点击量、曝光量和效果量等。又如交易日志数据中的对象可以包括卖家、物品等,指标可以包括成交量、好评量等。其中,原始日志数据可以由服务器根据检测到的操作事件生成。例如服务器检测到对某一对象的操作事件时,可以根据该对象以及该操作事件的操作类型、操作时间、操作次数等相关数据生成原始日志数据,或者,用户可以通过终端对某一对象触发操作事件,由终端将该操作事件上报给服务器,服务器根据该操作事件生成原始日志数据。例如广告服务器检测到点击广告的操作事件时,生成广告日志数据,交易服务器检测到买家和卖家进行交易的操作事件时生成交易日志数据。并且,服务器可以为每个操作事件均生成对应的原始日志数据,也即是,每当检测到一个操作事件即生成一条原始日志数据,该原始日志数据用于记录该操作事件的相关数据。或者,服务器可以每隔指定时间段生成一条原始日志数据,该原始日志数据记录了该指定时间段内检测到的多个操作事件的相关数据。进一步地,服务器可以运行cgi(commongatewayinterface,公共网关接口),当服务器检测到操作事件并对该操作事件进行处理,此时cgi会根据该操作事件生成原始日志数据。map节点确定要统计的目标对象和目标指标,并获取原始日志数据,以便根据原始日志数据进行统计。其中,服务器可以向控制节点发送原始日志数据、目标对象和目标指标,控制节点接收到原始日志数据、目标对象和目标指标后发送给map节点,则map节点可以基于该目标对象和目标指标遍历该多条原始日志数据,对每条原始日志数据进行处理。其中,对于当前遍历到的原始日志数据,map节点可以判断该原始日志数据是否包括该目标对象和该目标对象在该目标指标下的度量值,如果该原始日志数据包括该目标对象和该目标对象在该目标指标下的度量值,则提取该目标对象和该度量值,将该目标对象和该度量值构成指定日志数据,如果该原始日志数据不包括该目标对象,或者不包括该目标对象在该目标指标下的度量值,则继续遍历下一条原始日志数据,直至多条原始日志数据遍历完成。其中,目标对象是指至少一个对象中的任一对象,目标指标是指至少一个指标中的任一指标,指定日志数据是指包括目标对象和目标对象在目标指标下的度量值的日志数据。例如,原始日志数据可以如下表1所示,若确定目标对象为广告主a,目标指标为点击量,则指定日志数据可以如下表2所示:表1广告主广告位点击量曝光量下单量ax10305表2广告主点击量a10202、如果目标对象的历史统计值大于历史统计值阈值,将该指定日志数据写入到第一存储空间中。历史统计值为目标对象的历史总度量值与至少一个对象的历史总度量值的和值的比值,表示目标对象在至少一个对象中度量值的占比大小。目标对象的历史统计值越大,表示一般情况下目标对象的度量值占比越大,则生成的指定日志数据的数量可能较多,则需要对该对象的指定日志数据进行聚合。目标对象的历史统计值越小,表示一般情况下目标对象的度量值占比越小,则生成的指定日志数据的数量可能较少,则无需对该目标对象的指定日志数据进行聚合。其中,历史统计值由reduce节点通过以下方法确定:reduce节点获取历史统计记录,历史统计记录中包括至少一个对象在至少一个指标下的历史度量值,该至少一个对象包括目标对象。根据历史统计记录中每个对象在至少一个指标下的历史度量值,获取每个对象的历史总度量值,并获取至少一个对象的历史总度量值的和值,计算该目标对象的历史总度量值与该和值的比值,作为该目标对象的历史统计值。针对历史统计记录,reduce节点每次在统计某个对象在某个指标下的度量值后,会将得到的度量值作为该对象的历史度量值,存储于历史统计记录中。本发明实施例以目标对象为例,该历史统计记录中包括该目标对象在至少一个指标下的历史度量值。举例来说,至少一个对象可以包括广告主a、广告主b和广告主c,该至少一个指标可以包括点击量和曝光量,历史统计记录可以如下表3所示。其中,广告主a的历史总度量值等于400+600=1000,广告主b的历史总度量值等于200+400=600,广告主c的历史总度量值等于150+250=400,广告主a、广告主b和广告主c的历史总度量值的和值=1000+600+400=2000,则广告主a的历史统计值为1000÷2000=0.5,广告主b的历史统计值为600÷2000=0.3,广告主c的历史统计值为400÷2000=0.2。表3广告主点击量曝光量a400600b200400c150250进一步地,reduce节点可以预先计算曾经统计过的每个对象的历史统计值,并存储至少一个对象和历史统计值之间的对应关系。当要对目标对象进行统计时,控制节点会通知reduce节点本次要统计的目标对象,reduce节点会查询到该目标对象的历史统计值。或者,reduce节点可以不计算每个对象的历史统计值,而是在获知本次要统计的目标对象后,再计算该目标对象的历史统计值。其中,对每个对象历史统计值的计算过程与对目标对象的历史统计值的计算过程类似,在此不再赘述。reduce节点在得到目标对象的历史统计值后,会向map节点发送该历史统计值。map节点接收历史统计值,以便根据历史统计值判断是否要将该指定日志数据写入到第一存储空间中以进行聚合。本发明实施例为各个对象设置了统一的历史统计值阈值,将历史统计值阈值作为衡量任一对象历史统计值多少的标准。那么,map节点得到该目标对象的指定日志数据时,判断目标对象的历史统计值是否大于历史统计值阈值,如果目标对象的历史统计值大于历史统计值阈值,会将指定日志数据写入到第一存储空间中以便对目标对象的指定日志数据进行聚合,如果目标对象的历史统计值不大于该历史统计值阈值,则将指定日志数据写入到第二存储空间中,而无需对指定日志数据进行聚合。例如,假设历史统计值阈值为0.4,如果广告主a的历史统计值为0.5,map节点在统计广告主a时,会将广告主a对应的指定日志数据均写入到第一存储空间并对这些指定日志数据进行聚合,如果广告主a的历史统计值为0.1,map节点在统计广告主a时,会将广告主a对应的指定日志数据均直接写入到第二存储空间中而不进行聚合。需要说明的是,本发明实施例中,历史统计值阈值可以根据实际需求动态调整。由于对于任一目标对象来说,历史统计阈值会直接决定该目标对象的日志数据是否要聚合,从而影响到最终得到的日志数据的数量。如果历史统计阈值过大,很多对象的历史统计值达不到历史统计值阈值,这些对象对应的指定日志数据均不会写入到第一存储空间中也不会进行聚合,导致第二存储空间中存储的数据量不变,无法对数据统计的过程进行优化。如果历史统计阈值过小,很多对象的历史统计值均能够达到历史统计值阈值,这些对象对应的指定日志数据均写入到第一存储空间中,导致第一存储空间中存储的数据量过大,存在第一存储空间损坏的风险。并且,将大量数据从第一存储空间写入到第二存储空间的过程会增大map节点的处理开销。因此,可以根据第一存储空间中存储的数据量、将数据写入到第二存储空间的次数和第二存储空间中存储的数据量等因素对历史统计值阈值进行调整。在第一种可能的实现方式中,map节点可以统计第一存储空间中存储的数据量,根据该数据量大小对历史统计值阈值进行调整。其中,如果map节点确定第一存储空间中存储的数据量过大,为了避免第一存储空间损坏,可以增大历史统计值阈值。以目标对象为例,原本目标对象的历史统计值大于历史统计值阈值,会将该目标对象的指定日志数据写入到第一存储空间中,但是当历史统计值阈值增大而导致目标对象的历史统计值不大于增大后的历史统计值阈值时,不再将该目标对象的指定日志数据写入到第一存储空间中而是直接写入到第二存储空间中。因此,第一存储空间中将不会再增加该目标对象的指定日志数据,也即是减少了将要写入到第一存储空间中的数据,降低了第一存储空间的数据量的增长速度。在第二种可能的实现方式中,map节点可以统计第二存储空间的写入次数,根据该写入次数对历史统计值阈值进行调整。其中,如果map节点确定第二存储空间的写入次数过多,为了节省系统开销,可以减小历史统计值阈值。在第三种可能的实现方式中,map节点可以统计第二存储空间中存储的数据量大小,根据该数据量大小对历史统计值阈值进行调整。其中,如果map节点确定第二存储空间中存储的数据量过大,可以减小历史统计值阈值。以目标对象为例,原本目标对象的历史统计值不大于历史统计值阈值,不会对该目标对象的指定日志数据进行聚合,直接将指定日志数据写入到第二存储空间中,但是当历史统计值阈值减小而导致目标对象的历史统计值大于减小后的历史统计值阈值时,对该目标对象的多条指定日志数据进行聚合后再将聚合得到的聚合日志数据写入到第二存储空间中。因此,减少了第二存储空间的写入次数,降低了第二存储空间的数据量的增长速度。203、map节点获取由已写入到第一存储空间中的多条指定日志数据聚合得到的聚合日志数据。为了减少该多条指定日志数据的数量,map节点会将该多条指定日志数据中的度量值聚合为聚合度量值,从而将多条指定日志数据聚合为聚合日志数据,该聚合日志数据包括该目标对象和该目标对象在该目标指标下的聚合度量值。map节点可以采用以下两种方式对多条指定日志数据进行聚合:在第一种可能的实现方式中,如果第一存储空间中已存储包括该目标对象的多条指定日志数据,求取多条指定日志数据中的度量值的和值,将该和值作为聚合度量值,将该目标对象和该聚合度量值构成聚合日志数据。map节点可以将多条指定日志数据写入到第一存储空间中后,再对该多条指定日志数据进行聚合,生成聚合日志数据。其中,该多条指定日志数据可以为根据目标对象的所有原始日志数据获取到的所有指定日志数据,也可以为根据目标对象的部分原始日志数据获取到的部分指定日志数据。例如,如果第一存储空间中已存储的指定日志数据的数目达到n时(n为大于1的正整数),对n条指定日志数据进行聚合。或者每隔指定时间间隔将第一存储空间中已存储的指定日志数据进行聚合,生成聚合日志数据。其中,对多条指定日志数据进行聚合实际上指求取多条指定日志数据对应的多个度量值的和值,该和值即为该多个度量值对应的聚合度量值。例如,指定日志数据1、指定日志数据2和指定日志数据3分别如下表4、表5和表6所示,则这3条指定日志数据对应的聚合日志数据如下表7所示。表4广告主点击量a2表5广告主点击量a3表6广告主点击量a4表7广告主点击量a9在第二种可能的实现方式中,如果该第一存储空间中已存储包括该目标对象的一条聚合日志数据,将指定日志数据写入到第一存储空间时,求取该聚合日志数据中的聚合度量值与该指定日志数据中的度量值的和值,将该聚合日志数据中的聚合度量值替换为该和值。map节点可以每将一条指定日志数据写入到第一存储空间时,即对写入的这条指定日志数据与由之前写入的指定日志数据聚合而成的聚合日志数据进行聚合。其中,对写入的指定日志数据与聚合日志数据进行聚合,实际上指求取指定日志数据中的度量值和聚合日志数据中的聚合度量值的和值,并将该聚合度量值替换为该和值。例如,指定日志数据1如上表4所示,已存储的聚合日志数据如上表7所示,则将指定日志数据1与该聚合日志数据聚合的聚合日志数据为下表8所示:表8广告主点击量a11需要说明的是,在map节点上将多个度量值的和值作为聚合度量值时,以一个数值(聚合度量值)替换掉多个数值(多个度量值),减小了数据量。并且由于reduce节点获取目标对象在目标指标下的度量值的统计结果实际上就是要求取目标对象在目标指标下的多个度量值的和值,因此在map节点计算多个度量值的和值并不会影响reduce节点的统计结果。204、map节点将该聚合日志数据写入到第二存储空间中。该步骤204可以包括以下两种可能实现方式:第一种可能实现方式、当第一存储空间当前存储的数据量大于数据量阈值时,将聚合日志数据写入到第二存储空间中。map节点可以监听第一存储空间存储的数据量,当确定第一存储空间当前存储的数据量大于数据量阈值时,认为第一存储空间已经不能再存储更多的数据,因此会将第一存储空间中的聚合日志数据写入到第二存储空间中。其中,该数据量阈值用于规定该第一存储空间能够存储的最大数据量,例如为200m。第二种可能实现方式、当对所有指定日志数据进行聚合并得到聚合日志数据后,将该聚合日志数据写入到第二存储空间中。其中,所有指定日志数据是指本次统计日志数据的过程中map节点根据控制节点下发的所有原始日志数据获取到的指定日志数据。步骤204中的两种可能实现方式可以与上述步骤203中的两种可能实现方式以任意方式进行结合,形成本发明实施例保护的方案。例如,将步骤203的第一种可能实现方式与步骤204的第一种可能实现方式结合时,将第一存储空间中的多条指定日志数据聚合得到聚合日志数据,并在第一存储空间的数据量大于数据量阈值时,将聚合日志数据写入到第二存储空间中。或者,将步骤203的第一种可能实现方式与步骤204的第二种可能实现方式结合时,将目标对象的所有指定日志数据写入到第一存储空间,并聚合得到聚合日志数据后,将聚合日志数据写入到第二存储空间中。又如,将步骤203的第二种可能实现方式与步骤204的第一种可能实现方式结合时,每次向第一存储空间新写入一条指定日志数据时,将新写入的指定日志数据与已经得到的聚合日志数据继续进行聚合,则第一存储空间的数据量不断增大,当第一存储空间的数据量大于数据量阈值时,将聚合日志数据写入到第二存储空间中。或者,将步骤203的第二种可能实现方式与步骤204的第二种可能实现方式结合时,每次向第一存储空间新写入一条指定日志数据时,将新写入的指定日志数据与已经得到的聚合日志数据继续进行聚合,直至目标对象的所有指定日志数据均写入到第一存储空间中并聚合完成时,将得到的聚合日志数据写入到第二存储空间中。当然,除了这两种实现方式中的情况,map节点还可以在其他情况下将聚合日志数据写入到第二存储空间中。例如,map节点可以配置定时器并设置指定时间间隔,每隔指定时间间隔将第一存储空间中的聚合日志数据写入到第二存储空间中。需要说明的第一点是,针对将聚合日志数据从第一存储空间写入到第二存储空间的过程,map节点可以配置read接口和write接口,通过调用read接口从第一存储空间中读取聚合日志数据,并通过调用write接口将聚合日志数据写入到第二存储空间中。需要说明的第二点是,当将多条指定日志数据聚合为聚合日志数据后,map节点即可删除该多条指定日志数据。与相关技术中存储多条指定日志数据的方案相比,由于map节点无需存储该多条指定日志数据而只需存储聚合日志数据,能够节省存储空间。并且,当将聚合日志数据从第一存储空间写入到第二存储空间后,map节点即可删除第一存储空间中的聚合日志数据,来清空第一存储空间,仅在第二存储空间存储聚合日志数据,以避免重复地存储日志数据,进一步节省存储空间。需要说明的第三点是,第一存储空间和第二存储空间可以是map节点配置的任两个互相独立的存储空间,其中第二存储空间是用于存储输出结果并由reduce节点拉取的存储空间,可以由map节点与reduce节点协商确定,或者由控制节点确定。需要说明的第四点是,第二存储空间实际上可以包括环形内存缓冲区和磁盘,当得到聚合日志数据后,map节点会将聚合日志数据写入到环形内存缓冲区中,当环形内存缓冲区将溢出时,map节点会将聚合日志数据写入到磁盘中,当对所有原始日志数据处理完毕后,map节点会对磁盘中的聚合日志数据进行整理、排序和合并等操作,生成整理后的聚合日志数据,以便提高数据的条理性。进一步地,针对将聚合日志数据写入到第二存储空间中的过程,第二存储空间可以包括至少一个文件夹,map节点可以采用hash(哈希)函数求取目标对象的hash值,并建立hash值与文件夹的对应关系,从而将目标对象映射到该文件夹中。当map节点在第一存储空间中聚合得到聚合日志数据时,可以采用hash函数求取目标对象的hash值,并根据目标对象的哈希hash值与文件夹的对应关系,将聚合日志数据写入到该hash值对应的文件夹中,从而保证同一目标对象的聚合日志数据均会存储于同一个文件夹中。205、reduce节点从第二存储空间中拉取目标对象的日志数据,根据拉取的日志数据中的度量值,获取目标对象在目标指标下的度量值的统计结果。reduce节点会监听map节点对原始日志数据处理的进度,当确定map节点已处理了所有原始日志数据后,从第二存储空间中拉取日志数据。当然,reduce节点也可以每隔指定时间间隔从第二存储空间中拉取已存储的日志数据,或者当监听到map节点已经处理了指定数量的原始日志数据后,拉取日志数据。针对从第二存储空间中拉取日志数据的过程,reduce节点会启动拉取线程(fetcher),向控制节点发送http(hypertexttransferprotocol超文本传输协议)请求,该http请求用于获取第二存储空间的地址信息,控制节点会响应该http请求,向reduce节点发送地址信息,reduce节点获知地址信息后,可以根据该地址信息拉取第二存储空间中存储的日志数据。由于待拉取的日志数据通常存储于第二存储空间中的磁盘,则该地址信息可以用于指示磁盘的地址。拉取到目标对象的日志数据后,reduce节点会对拉取的日志数据进行汇总统计,得到目标对象在目标指标下的总度量值,作为统计结果。如果map节点仅获取到一条指定日志数据,或者将多条指定日志数据聚合成一条聚合日志数据时,reduce节点仅会拉取到一条日志数据,此时可以直接将该日志数据中的度量值作为统计结果。或者,如果map节点获取到多条日志数据时,reduce节点会拉取到多条日志数据,求取多条日志数据中度量值的和值,将和值作为统计结果。或者reduce节点从多个map节点拉取到多条日志数据,求取多条日志数据中度量值的和值,将和值作为统计结果。map节点获取到多条日志数据可以包括以下情况:如果map节点每隔指定时间间隔将当前的时间间隔内得到的指定日志数据聚合为一条聚合日志数据,则经过多个周期后可以得到多条聚合日志数据。或者map节点每次将指定数目的指定日志数据聚合为一条聚合日志数据,则根据多个指定日志数据可能会得到多条聚合日志数据。或者map节点每隔指定时间间隔将第一存储空间得到的聚合日志数据写入到第二存储空间中,之后又会在第一存储空间中得到新的聚合日志数据,写入到第二存储空间中,从而导致map节点经过多次聚合之后得到多条聚合日志数据。当然在其他情况下map节点也可能会获取到多条日志数据,在此不再赘述。在第一种可能的实现方式中,如果目标对象的历史统计值大于历史统计值阈值,map节点的第二存储空间中存储的日志数据为聚合日志数据,因此reduce节点会从第二存储空间中拉取聚合日志数据,根据聚合日志数据中的聚合度量值,获取目标对象在该目标指标下的度量值的统计结果。例如,当要统计目标对象在该目标指标下的总度量值时,reduce节点可以将拉取到的一条聚合日志数据中的聚合度量值,作为目标对象在该目标指标下的总度量值。或者求取多条聚合日志数据中聚合度量值的和值,将该和值作为目标对象在该目标指标下的总度量值。在第二种可能的实现方式中,如果目标对象的历史统计值不大于历史统计值阈值,map节点的第二存储空间中存储的日志数据为指定日志数据,因此reduce节点会从第二存储空间中拉取多条指定日志数据,根据多条指定日志数据中的度量值,获取对目标对象在目标指标下的度量值的统计结果。例如,当要统计目标对象在该目标指标下的总度量值时,reduce节点可以求取多条指定日志数据中度量值的和值,将和值作为目标对象在该目标指标下的总度量值。在第三种可能的实现方式中,由于map节点处理原始日志数据的过程中,历史统计值阈值可能发生变化,如果针对目标对象的一次处理过程中,该目标对象有时大于历史统计值阈值,有时不大于历史统计值阈值,会导致目标对象的指定日志数据有的聚合成为聚合日志数据,有的未进行聚合。那么,第二存储空间中可以同时包括该目标对象的聚合日志数据和指定日志数据,reduce节点会拉取到该目标对象的聚合日志数据和指定日志数据,得到聚合日志数据对应的聚合度量值和指定日志数据对应的度量值,并根据得到的度量值获取目标对象在该目标指标下的统计结果。例如,当要统计目标对象在该目标指标下的总度量值时,reduce节点可以求取该目标对象的聚合日志数据中聚合度量值和指定日志数据中度量值的和值,将和值作为目标对象在该目标指标下的总度量值。需要说明的第一点是,reduce节点在得到目标对象在目标指标下度量值的统计结果后,会将统计结果存储于历史统计记录中,并根据统计结果更新目标对象的历史总度量值,并更新至少一个对象的历史总度量值的和值,从而更新该目标对象的历史统计值,并可以更新该至少一个对象中除该目标对象以外的其他对象的历史统计值。例如,对象1的历史总度量值为x,对象2的历史总度量值为y,已统计过的所有对象的历史总度量值的和值为m,则对象1的历史统计值为x/m,对象2的历史统计值为y/m。当本次统计得到对象1的总度量值x1后,对象1的历史总度量值变化为x+x1,则所有对象的历史总度量的和值变化为m+x1,因此将对象1的历史统计值替换为(x+x1)/(m+x1),将对象2的历史统计值替换为y/(m+x1)。需要说明的第二点是,本发明实施例以目标指标为一个指标为例,在目标指标为多个指标的情况下,map节点会确定目标对象和多个目标指标,将目标对象和该多个目标指标对应的多个度量值组成指定日志数据,如果该目标对象的历史统计值大于历史统计值阈值,则将指定日志数据写入到第一存储空间中。而在对多个目标指标对应的多条指定日志数据进行聚合时,会分别聚合每个目标指标下的度量值,得到的聚合日志数据中包括与多个目标指标对应的多个聚合度量值。reduce节点拉取聚合日志数据后,会分别根据每个目标指标下的聚合度量值获取相应的统计结果。例如,指定日志数据a如表9所示,指定日志数据b如表10所示,则这两条指定日志数据聚合得到的聚合日志数据包括如表11所示。表9广告主点击量曝光量a1020表10广告主点击量曝光量a2030表11广告主点击量曝光量a3050需要说明的第三点是,本发明实施例以目标对象为一个对象为例,在目标对象为多个对象的情况下,map节点会采用本发明实施例提供的方法对多个对象的日志数据分别进行统计。例如,要统计广告主a和广告主b的总点击量时,指定日志数据1、指定日志数据2和指定日志数据3分别如上述表4、表5和表6所示,指定日志数据4如下表12所示,指定日志数据5如下表13所示,则这五条指定日志数据会聚合为两条聚合日志数据,聚合日志数据1如上述表7所示,聚合日志数据2如下表14所示。表12广告主点击量b1表13广告主点击量b1表14广告主点击量b2需要说明的第四点是,本发明实施例仅是以一个map节点处理目标对象的日志数据为例,实际应用中可以由多个map节点处理目标对象的日志数据,则reduce节点可以分别从多个map节点的第二存储空间中拉取该目标对象的日志数据,从而对多个map节点输出的该目标对象的日志数据进行汇总统计。本发明实施例中,参见图2b和图2c,在初始化阶段,map节点会分配一个存储空间来存储控制节点发送的原始日志数据、目标对象、目标指标和目标对象的历史统计值,由处理器读取原始日志数据、目标对象、目标指标和目标对象的历史统计值。在处理阶段,处理器对原始日志数据进行提取处理得到指定日志数据,将指定日志数据写入到第一存储空间,在第一存储空间中聚合为聚合日志数据后再写入到第二存储空间,或者直接将指定日志数据写入到第二存储空间,则第二存储空间存储map节点的输出结果。reduce节点从各个map节点的第二存储空间拉取日志数据并存储于存储空间中,通过处理器进行汇总统计后输出统计结果。本发明实施例提供的方法,通过将目标对象的指定日志数据写入到第一存储空间中,在第一存储空间中对多条指定日志数据进行聚合得到聚合日志数据,从而实现了将目标对象在目标指标下的多个度量值聚合成一个聚合度量值,该聚合度量值既能够代表该目标对象在目标指标下的度量值大小,而且由于聚合度量值的数据量要小于多个度量值的数据量,则聚合日志数据的数据量要小于多个指定日志数据的数据量,reduce节点拉取聚合日志数据时减少了占用的网络带宽。而且,相关技术中,由于reduce节点要拉取大量的指定日志数据,耗费的时间过长,影响了统计日志数据的整体速度。而本发明实施例由于减少了日志数据的数量,对聚合日志数据进行处理时节省了处理时间,提高了处理效率,提高了数据处理的整体速度。进一步地,map节点可以删除已进行聚合的多条指定日志数据,并从第一存储空间中删除已写入到第二存储空间的聚合日志数据,能够减少存储的日志数据数量,节省存储空间。进一步地,相关技术中,map节点会将大量的指定日志数据写入到磁盘中,导致磁盘的io(inputoutput,输入输出)增大,而执行大量的io工作将导致map节点处理数据的速度变慢并导致任务延迟。本发明实施例中对指定日志数据进行了聚合,减少了要写入到磁盘中日志数据的数量,降低了磁盘的io,因此提高了map节点处理数据的速度,避免了任务延迟。进一步地,相关技术中,map节点在输出数据之前需要对数据进行排序、分类等工作,reduce节点在拉取数据后也需要对数据进行排序、分类等工作。而由于指定日志数据的数量过多,导致对其排序、分类等工作时任务量大,将对map节点和reduce节点的cpu(centralprocessingunit,中央处理器)造成很大的压力。而本发明实施例由于聚合日志数据的数量少于指定日志数据的数量,对聚合日志数据进行排序、整理等工作时任务量较小,能够减轻map节点和reduce节点上cpu的压力。进一步地,由于历史统计值由目标对象的历史总度量值确定,实现了将目标对象本身的特征纳入对数据聚合过程的考虑范畴,由于历史统计值能够反映目标对象在本次统计过程中指定日志数据较多的概率,为指定日志数据较多的目标对象进行聚合,而不为指定日志数据较少的目标对象进行聚合,来做到大幅度减少指定日志数据,并且不会过多地占用map节点的第一存储空间。本发明实施例可以应用于多种场景下,不同场景可以对应于不同类型的原始日志数据。针对发布广告的场景,服务器可以在客户端或者网页上发布广告,在检测到点击广告、浏览广告、通过广告进行交易等操作事件时生成原始日志数据,该原始日志数据的对象可以包括广告主、广告位,指标可以包括点击量、曝光量和交易量等。则map节点和reduce节点可以根据原始日志数据对广告主的相关数据或者广告位的相关数据进行统计。针对网络购物场景,服务器可以为与购物应用关联的服务器,在检测到购买物品、支付货款、评价物品等操作事件时生成原始日志数据,该原始日志数据的对象可以包括卖家、物品,指标可以包括下单量、支付总量和好评量等,则map节点和reduce节点可以根据原始日志数据对某个卖家或者物品的相关数据进行统计。针对网络社交场景,服务器可以为与博客应用关联的服务器,在检测到关注博主、转发博客、评价博客等操作事件时生成原始日志数据,该原始日志数据的对象可以包括博主、博客,指标可以包括粉丝量、转发量和评论量等,则map节点和reduce节点可以根据原始日志数据对某个博主或博客的相关数据进行统计。以下实施例将对发布广告的场景中统计广告主a所发布的广告的总点击量的过程进行说明。图2d是本发明实施例提供的一种发布广告的场景中map节点的操作流程图,参见图2d,以统计广告主a对应的总点击量为例,该方法可以包括:210、map节点确定要统计的目标对象为广告主a,目标指标为点击量,并获取广告主a的历史统计值和多条原始日志数据。211、对于任一条原始日志数据,如果该原始日志数据中包括广告主a和对应的点击量,提取广告主a和点击量,构成一条指定日志数据。212、map节点判断广告主a的历史统计值是否大于历史统计值阈值,如果历史统计值大于历史统计阈值,执行步骤213,如果历史统计值不大于历史统计值阈值,执行步骤214。213、map节点将这条指定日志数据写入到第一存储空间中,求取广告主a的聚合日志数据中的点击量和这条指定日志数据中的点击量的和值,并用和值替换该聚合日志数据中的点击量,继续执行步骤211,并且如果在重复执行步骤211-步骤213的过程中监听到第一存储空间中存储的数据量超过数据量阈值,则将聚合日志数据写入到第二存储空间中,并清空第一存储空间。214、map节点将这条指定日志数据写入到第二存储空间中,继续执行步骤211。相应地,图2e是本发明实施例提供的一种发布广告的场景中reduce节点的操作流程图,参见图2e,以统计广告主a对应的总点击量为例,该方法可以包括:215、reduce节点从第二存储空间中拉取广告主a对应的日志数据。216、reduce节点求取广告主a的所有日志数据中点击量的和值,作为广告主a所发布的广告的总点击量。217、reduce节点将广告主a的总点击量存储于历史统计记录中,并更新广告主a的历史统计值。图2f是本发明实施例提供的一种日志数据统计方法的流程图,应用于map节点中,该方法包括:221、获取指定日志数据,该指定日志数据包括目标对象和该目标对象在目标指标下的度量值。222、将该指定日志数据写入到第一存储空间中。223、获取由已写入到该第一存储空间中的多条指定日志数据聚合得到的聚合日志数据,该聚合日志数据包括该目标对象和该目标对象在该目标指标下的聚合度量值,该聚合度量值由该多条指定日志数据中的度量值聚合得到。224、将该聚合日志数据写入到第二存储空间中,reduce节点用于从该第二存储空间中拉取该聚合日志数据,根据该聚合度量值,获取对该目标对象在该目标指标下的度量值的统计结果。进一步地,该获取由已写入到该第一存储空间中的多条指定日志数据聚合得到的聚合日志数据,包括:如果该第一存储空间中已存储多条指定日志数据,求取该多条指定日志数据中的度量值的和值,将该和值作为聚合度量值,将该目标对象和该聚合度量值构成该聚合日志数据;或者,如果该第一存储空间中已存储一条聚合日志数据,求取该聚合日志数据中的聚合度量值与该指定日志数据中的度量值的和值,将该聚合日志数据中的聚合度量值替换为该和值。图2g是本发明实施例提供的一种日志数据统计方法的流程图,应用于reduce节点中,该方法包括:231、获取历史统计记录,该历史统计记录中包括至少一个对象在至少一个指标下的历史度量值,该至少一个对象包括目标对象。232、根据历史统计记录中每个对象在至少一个指标下的历史度量值,获取每个对象的历史总度量值,并获取至少一个对象的历史总度量值的和值。233、计算目标对象的历史总度量值与和值的比值,作为目标对象的历史统计值。234、向map节点发送历史统计值。其中,map节点用于将包括该目标对象和该目标对象在目标指标下的度量值的指定日志数据写入到第一存储空间中,获取由已写入到该第一存储空间中的多条指定日志数据聚合得到的聚合日志数据,将该聚合日志数据写入到第二存储空间中,该聚合日志数据包括该目标对象和该目标对象在该目标指标下的聚合度量值,该聚合度量值由该多条指定日志数据中的度量值聚合得到。图3是本发明实施例提供的一种日志数据统计装置的结构示意图,应用于map节点中,参见图3,该装置包括:获取模块301和写入模块302。获取模块301,用于执行上述实施例中的步骤201;写入模块302,用于执行上述实施例中的步骤202中将指定日志数据写入到第一存储空间的步骤;该获取模块301,还用于执行上述实施例中的步骤203;该写入模块302,用于执行上述实施例中的步骤204;可选地,该获取模块301,还用于执行上述步骤203中的第一种可能实现方式或者第二种可能实现方式。可选地,该写入模块302,还用于如果该目标对象的历史统计值大于历史统计值阈值,执行将指定日志数据写入到第一存储空间的步骤。图4是本发明实施例提供的一种日志数据统计装置的结构示意图,应用于reduce节点中,参见图4,该装置包括:获取模块401、计算模块402和发送模块403。获取模块401,用于执行上述实施例中获取历史统计记录的步骤;该获取模块401,还用于执行上述实施例中获取至少一个对象的历史总度量值的和值的步骤;计算模块402,用于执行上述实施例中计算历史统计值的步骤;发送模块403,用于执行上述实施例中发送历史统计值的步骤。上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。需要说明的是:上述实施例提供的日志数据统计装置在统计日志数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将map节点和reduce节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的日志数据统计装置与日志数据统计方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。图5是本发明实施例提供的一种服务器的结构示意图,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,一个或一个以上键盘556,和/或,一个或一个以上操作系统541,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。该服务器500可以用于执行上述实施例提供的日志数据统计方法中map节点或reduce节点所执行的步骤。本发明实施例还提供了一种map节点,该map节点包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现上述实施例的日志数据统计方法中map节点所执行的操作。本发明实施例还提供了一种reduce节点,该reduce节点包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述实施例的日志数据统计方法中reduce节点所执行的操作。本发明实施例还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现上述实施例的日志数据统计方法中map节点所执行的操作。本发明实施例还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现上述实施例的日志数据统计方法中reduce节点所执行的操作。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1