发明内容
为了解决现有技术的问题,本发明实施例提供了一种用于Hadoop平台的计费系统及方法。所述技术方案如下:
第一方面,提供了一种用于Hadoop平台的计费系统,所述Hadoop平台包括:映射化简MapReduce系统和分布式文件系统HDFS,所述计费系统包括:资源统计模块、配置模块、计费模块,
所述资源统计模块,用于统计所述MapReduce系统的计算任务的资源使用情况和所述HDFS的存储空间占用情况,生成所述计算任务的资源使用日志,并向所述计费模块发送所述计算任务的资源使用日志;
所述配置模块,用于根据预设计费因素,确定资源单价和计费策略,并向所述计费模块发送所述资源单价和所述计费策略;
所述计费模块,用于根据接收到的资源使用日志、资源单价和计费策略,生成所述计算任务的计费报表。
在第一方面的第一种可能实现方式中,所述资源统计模块包括:资源统计单元、空间统计单元、日志生成单元,
资源统计单元,用于以第一预设时长为周期,统计所述资源使用情况,并向所述日志生成单元发送所述资源使用情况;
所述空间统计单元,用于以第二预设时长为周期,统计所述存储空间占用情况,并向所述日志生成单元发送所述存储空间占用情况;
日志生成单元,用于接收所述资源使用情况和所述存储空间占用情况,生成所述计算任务的资源使用日志,并向所述计费模块发送所述资源使用日志。
结合第一方面的第一种可能实现方式,在第二种可能实现方式中,所述空间统计单元包括:接口调用子单元、空间统计子单元,
所述接口调用子单元,用于以所述第二预设时长为周期,调用所述HDFS的主节点NameNode的接口,获取存储空间占用情况,并向所述空间统计子单元发送所述存储空间占用情况;
所述空间统计子单元,用于对接收到的存储空间占用情况进行统计,并向所述日志生成单元发送所述存储空间占用情况。
结合第一方面的第一种可能实现方式,在第三种可能实现方式中,所述MapReduce系统包括主节点Master和至少一个工作节点Worker,相应地,所述资源统计单元包括:每个Worker对应的资源采集子单元、资源统计子单元,
所述资源采集子单元,用于以第三预设时长为周期,采集对应Worker的资源使用情况,并以所述第一预设时长为周期,向所述资源统计子单元发送所述资源使用情况,所述第三预设时长小于所述第一预设时长;
所述资源统计子单元,用于对接收到的资源使用情况进行统计,并向所述日志生成单元发送所述资源使用情况。
结合第一方面的第三种可能实现方式,在第四种可能实现方式中,所述资源采集子单元位于所述Worker中;
所述资源统计子单元位于所述Master中。
第二方面,提供了一种用于Hadoop平台的计费方法,所述Hadoop平台包括:映射化简MapReduce系统和分布式文件系统HDFS,所述计费方法包括:
统计所述MapReduce系统的计算任务的资源使用情况和所述HDFS的存储空间占用情况,生成所述计算任务的资源使用日志;
根据预设计费因素,确定所述资源单价和所述计费策略;
根据所述资源使用日志、资源单价和计费策略,生成所述计算任务的计费报表。
在第二方面的第一种可能实现方式中,统计所述MapReduce系统的计算任务的资源使用情况和所述HDFS的存储空间占用情况,生成所述计算任务的资源使用日志,包括:
以第一预设时长为周期,统计所述资源使用情况;
以第二预设时长为周期,统计所述存储空间占用情况;
根据所述资源使用情况和所述存储空间占用情况,生成所述计算任务的资源使用日志。
结合第二方面的第一种可能实现方式,在第二种可能实现方式中,以第一预设时长为周期,统计所述资源使用情况包括:
以第三预设时长为周期,采集所述资源使用情况,所述第三预设时长小于所述第一预设时长;
以所述第一预设时长为周期,对所述资源使用情况进行统计。
结合第二方面的第一种可能实现方式,在第三种可能实现方式中,所述MapReduce系统包括主节点Master和至少一个工作节点Worker,相应地,以第一预设时长为周期,统计所述资源使用情况,包括:
以所述第三预设时长为周期,采集对应Worker的资源使用情况;
以所述第一预设时长为周期,对所有Worker的资源使用情况进行统计。
结合第二方面的第一种可能实现方式,在第四种可能实现方式中,以第二预设时长为周期,统计所述存储空间占用情况包括:
以所述第二预设时长为周期,调用所述NameNode的接口,获取存储空间占用情况;
对所述存储空间占用情况进行统计。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供的系统及方法,对于分布式计算Hadoop平台,通过对该计算任务的资源使用情况和存储空间占用情况进行统计,并根据资源使用情况和存储空间占用情况以及计费策略生成该计算任务的计费报表,对该计算任务进行收费,提高了计费的精确性,实现了计费策略的灵活配置。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种用于Hadoop平台的计费系统的结构示意图。该Hadoop平台包括:
映射化简MapReduce系统和分布式文件系统HDFS,其中,HDFS用于分布式存储数据,MapReduce系统用于分布式计算,参见图1,所述系统包括:资源统计模块101、配置模块102、计费模块103,资源统计模块101、配置模块102分别与计费模块103连接;
该资源统计模块101,用于统计该MapReduce系统的计算任务的资源使用情况和该HDFS的存储空间占用情况,生成该计算任务的资源使用日志,并向该计费模块103发送该计算任务的资源使用日志;
其中,计算任务为Hadoop平台中的资源情况统计单位,而计算任务在该Hadoop平台中是以分布式形式,由多个节点实现的。
该资源使用情况包括但不限于该计算任务所属用户、CPU使用情况、内存使用情况和网络流量。在Hadoop平台为用户提供计算任务的服务时,占用了HDFS的存储空间和MapReduce系统的资源,因此,为了准确地对计算任务进行计费,需要对该计算任务的资源使用情况和存储空间占用情况分别进行统计。
该配置模块102,用于根据预设计费因素,确定资源单价和计费策略,并向该计费模块103发送该资源单价和该计费策略;
其中,预设计费因素是指当前的促销活动、忙时或闲时的价格差别等,资源单价是指单位资源的价格,而计费策略是根据预设计费因素确定。该资源使用日志中记录的该计算任务的统计时间不同,其对应的预设计费因素不同,则该统计时间对应的计费策略不同。
该计费模块103,用于根据接收到的资源使用日志、资源单价和计费策略,生成该计算任务的计费报表。
该计费报表可以列表的形式详细记录每个统计时间对应的计费,也可以仅记录该计算任务的总计费,本发明实施例对此不做限定。
本发明实施例中,当该计算任务处理完成时,计费模块103根据该资源使用日志中记录的该计算任务的详细的资源使用情况和存储空间占用情况以及资源单价和计费策略,生成该计算任务的计费报表,提供给用户。
需要说明的是,上述各个模块均可以作为独立的设备实现相应的功能,还可以作为同一设备上的不同功能模块实现相应的功能,本发明实施例对此不做限定。
本发明实施例提供的系统,对于为用户提供服务的分布式计算的Hadoop平台,通过对该计算任务的资源使用情况和存储空间占用情况进行统计,并根据资源使用情况和存储空间占用情况以及计费策略生成该计算任务的计费报表,对该计算任务进行收费,提高了计费的精确性,实现了计费策略的灵活配置。
可选地,参见图2,该资源统计模块101包括:资源统计单元1011、空间统计单元1012、日志生成单元1013,其中,该资源统计单元1011,用于以第一预设时长为周期,统计该资源使用情况,并向该日志生成单元1013发送该资源使用情况;该空间统计单元1012,用于以第二预设时长为周期,统计该存储空间占用情况,并向该日志生成单元1013发送该存储空间占用情况;该日志生成单元1013,用于接收该资源使用情况和该存储空间占用情况,生成该计算任务的资源使用日志,并向该计费模块103发送该资源使用日志。
进一步可选地,该空间统计单元1012包括:接口调用子单元10121、空间统计子单元10122,其中,该接口调用子单元10121,用于以该第二预设时长为周期,调用该HDFS的主节点NameNode的接口,获取存储空间占用情况,并向该空间统计子单元10122发送该存储空间占用情况;
该空间统计子单元10122,用于对接收到的存储空间占用情况进行统计,并向该日志生成单元1013发送该存储空间占用情况。
该MapReduce系统包括主节点Master和至少一个工作节点Worker,则该资源统计单元1011包括:每个Worker对应的资源采集子单元10111、资源统计子单元10112,其中,该资源采集子单元10111,用于以第三预设时长为周期,采集对应Worker的资源使用情况,并以该第一预设时长为周期,向该资源统计子单元10112发送该资源使用情况,该第三预设时长小于该第一预设时长;该资源统计子单元10112,用于对接收到的资源使用情况进行统计,并向该日志生成单元1013发送该资源使用情况。
可选地,该资源采集子单元10111位于该Worker中;该资源统计子单元10112位于该Master中。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图3是本发明实施例提供的一种用于Hadoop平台的计费方法的流程图。所述Hadoop平台包括:映射化简MapReduce系统和分布式文件系统HDFS,参见图3,所述计费方法包括:
301:统计该MapReduce系统的计算任务的资源使用情况和该HDFS的存储空间占用情况,生成该计算任务的资源使用日志,执行步骤303;
本发明实施例中,对该资源使用情况和该存储空间占用情况的统计可以周期性进行,在一个统计周期内的多个统计时刻采集资源使用情况和存储空间占用情况,分别计算采集资源使用情况和存储空间占用情况的平均值,将得到的平均值作为该统计周期内的每个时刻的资源使用情况和存储空间占用情况。
例如,资源使用情况当前的统计周期为t0-t0+△t的时间段,当在t0时刻采集到该计算任务的CPU使用率为3%,在t0-t0+△t中的t1时刻采集到该计算任务的CPU使用率为2%,在t0-t0+△t中的t2时刻采集到该计算任务的CPU使用率为4%时,计算出该统计周期内资源使用情况的平均值为3%,则在该统计周期内,该计算任务的CPU使用率为3%*△t。
其中,该资源使用日志用于记录该计算任务的资源使用情况和存储空间占用情况,并保存在数据库中。可选地,该资源使用日志以列表的形式记录统计到的计算任务的所属用户、根据统计周期所选取的多个统计时间、每个统计时间对应统计到的存储空间占用情况、内存使用情况、网络流量等资源使用情况。
在处理该计算任务的过程中,该资源统计模块通过周期性地对该计算任务的资源使用情况和存储空间占用情况进行统计,使得该资源使用日志不断进行更新,直至该计算任务处理完成,不再更新该资源使用日志。
302:根据预设计费因素,确定该资源单价和该计费策略;
该预设计费因素包括但不限于该计算任务的优先级、促销活动、忙时闲时情况等,综合考虑该预设计费因素,可以确定该资源单价和该计费策略。
如,该计算任务优先级越高,该资源单价越高,或者,在进行促销活动时该资源单价减少,在忙时时段该资源单价增加等。
本发明实施例中,该资源单价和计费策略可以由运营管理人员预先设定,并在用户使用过程中进行修改,如增加或删除促销活动等项目,改变资源单价等,本发明实施例对此不做限定。
由于步骤303中需要根据该资源单价和该计费策略生成该计算任务的计费报表,因此在执行步骤303之前,需要确定该资源单价和该计费策略,即该步骤302需在步骤303之前执行。
303:根据该资源使用日志、资源单价和计费策略,生成该计算任务的计费报表。
本发明实施例中,当该计算任务处理完成时,根据该资源使用日志中记录的该计算任务的详细的资源使用情况和存储空间占用情况以及资源单价和计费策略,生成该计算任务的计费报表,提供给用户。
需要说明的是,若在对该计算任务的处理过程中,改变了该资源单价和该计费策略,则在生成计费报表时,可以分别按照各个统计时间对应的该资源单价和该计费策略进行计费,将各个统计时间的计费结果汇总后生成计费报表。
例如,资源使用情况统计周期的时间跨度为△t,当该计算任务在第一个统计周期t0-t0+△t的时间段内的t1时刻统计到的内存使用大小为3MB,t2时刻统计到的内存使用大小为8MB,t3时刻统计到的内存使用大小为4MB时,则可以计算出该第一个统计周期内内存使用大小的平均值为5MB;当该计算任务在第二个统计周期t4-t4+△t的时间段内的t4时刻统计到的内存使用大小为2MB,t5时刻统计到的内存使用大小为10MB,t6时刻所统计到的内存使用大小为6MB时,则可以计算出该第二个统计周期内内存使用大小的平均值为6MB。当根据计费策略确定内存的资源单价为S,且在第一个统计周期内正常收费,在第二个统计周期内五折促销时,则该计算任务在第一个统计周期的计费为5*△t*S,在第二个统计周期的计费为(6*50%)*△t*S。
又如,资源使用情况统计周期的时间跨度为△t,当该计算任务在统计周期t0-t0+△t的时间段内的t1时刻统计到的内存使用大小为3MB,t2时刻统计到的内存使用大小为8MB,t3时刻统计到的内存使用大小为8MB,且当根据计费策略确定内存的资源单价为S,在t1时刻和t2时刻正常收费,在t3时刻五折促销时,则根据该计费策略可以计算出内存使用大小的平均值为(3+8+8*50%)/3=5MB,进而得出该计算任务在该统计周期内的计费为5*△t*S。
其中,该计费报表可以列表的形式详细记录该计算任务的每个统计时间对应的计费,也可以仅记录该计算任务的总计费,本发明实施例对此不做限定。
本发明实施例提供的方法,通过统计该MapReduce系统的计算任务的资源使用情况和该HDFS的存储空间占用情况,生成该计算任务的资源使用日志;根据该资源使用日志、资源单价和计费策略,生成该计算任务的计费报表。采用本发明的技术方案,对于为用户提供服务的分布式计算Hadoop平台,通过对该计算任务的资源使用情况和存储空间占用情况进行统计,并根据资源使用情况和存储空间占用情况以及计费策略生成该计算任务的计费报表,对该计算任务进行收费,提高了计费的精确性,实现了计费策略的灵活配置。
可选地,统计所述MapReduce系统的计算任务的资源使用情况和所述HDFS的存储空间占用情况,生成所述计算任务的资源使用日志,包括:
以第一预设时长为周期,统计所述资源使用情况;
以第二预设时长为周期,统计所述存储空间占用情况;
根据所述资源使用情况和所述存储空间占用情况,生成所述计算任务的资源使用日志。
可选地,以第一预设时长为周期,统计所述资源使用情况包括:
以第三预设时长为周期,采集所述资源使用情况,所述第三预设时长小于所述第一预设时长;
以所述第一预设时长为周期,对所述资源使用情况进行统计。
可选地,所述MapReduce系统包括主节点Master和至少一个工作节点Worker,相应地,以第一预设时长为周期,统计所述资源使用情况,包括:
以所述第三预设时长为周期,采集对应Worker的资源使用情况;
以所述第一预设时长为周期,对所有Worker的资源使用情况进行统计。
可选地,以第二预设时长为周期,统计所述存储空间占用情况包括:
以所述第二预设时长为周期,调用所述NameNode的接口,获取存储空间占用情况;
对所述存储空间占用情况进行统计。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图4是本发明实施例提供的一种用于Hadoop平台的计费方法的流程图。所述Hadoop平台包括:映射化简MapReduce系统和分布式文件系统HDFS,其中,所述MapReduce系统包括:
主节点Master和至少一个工作节点Worker,参见图4,所述方法包括:
401:每个Worker的资源采集子单元以时长t3为周期,采集MapReduce系统中的Worker的资源使用情况;
本领域的技术人员可以获知,用户将需要处理的计算任务提交给Master,由Master将该计算任务划分为多个子任务,并根据Worker的工作状态,将该多个子任务分配给该至少一个Worker执行。其中,该多个子任务包括Map任务和Reduce任务,Map任务的输出数据为Reduce任务的输入数据。
该资源使用情况包括但不限于该计算任务所属用户、IO使用情况、CPU使用情况、内存使用情况和网络流量。
其中,CPU使用情况可以由采集到的CPU使用率与该时长t3的乘积确定。内存使用情况可以由采集到的该计算任务正在使用的内存与该时长t3的乘积确定。网络流量是指该计算任务的计算结果传输到其他Worker时产生的流量,不包括输入数据的流量。IO使用情况是指Map任务读取的输入数据的大小。由于Map任务从本地或者网络中读取输入数据,在读取数据时可能会因为Hadoop平台的优化不足而产生网络流量,因此在这种情况下,将读取输入数据的大小计为IO使用情况,而不计入网络流量。
该步骤中,该时长t3可以为由技术人员预先设定的时长值,t3的值可以为0,即设置为实时地对该至少一个Worker的资源使用情况进行采集,本发明实施例对此不做限定。
402:位于Master的资源统计子单元以时长t1为周期,对所有Worker的资源使用情况进行统计,执行步骤405;
优选地,每个Worker中均具有资源采集子单元,每个资源采集子单元负责每隔t3时长,对该Worker的资源使用情况进行采集,保存采集到的数据,并每隔t1时长,将采集到的资源使用情况发送至位于Master中的资源统计子单元,由资源统计子单元对Worker的资源使用情况进行汇总统计,以便获取该计算任务的资源使用情况。
可选地,获取到的任一个Worker的资源使用情况的具体数据格式为(资源使用大小*使用时长),根据该资源使用情况格式可以获知在该统计周期内的资源使用大小,且便于在后续的计费过程中根据各个统计时间段的资源使用大小和相应的时间直接进行计算。
其中,时长t3小于时长t1,即以t3为采集周期,采集该计算任务的该至少一个Worker的资源使用情况,并以t1为统计周期,在进行了多次采集之后,将在以t1为时间间隔的统计周期内多次采集到的该计算任务的资源使用情况进行汇总统计,实现了在处理该计算任务的过程中不断地对采集到的资源使用情况进行统计,避免了在该计算任务处理完成时一次性对多次采集到的资源使用情况进行统计而造成延时或者网络负担。
403:位于Master的接口调用子单元以时长t2为周期,调用该NameNode的接口,获取存储空间占用情况;
本领域的技术人员可以获知,通过调用HDFS的主节点NameNode的接口,即可获取该计算任务的存储空间占用情况。
本发明实施例中,在处理该计算任务的过程中,以t2为周期获取存储空间占用情况,该存储空间占用情况包括该计算任务所需的元数据占用的存储空间和当前该计算任务的中间数据所占用的存储空间。其中,每个计算任务所需的元数据变化不大,占用的存储空间也没有明显的变化,而计算过程是动态的,在计算过程中产生的中间数据的变化很大,相应地,占用的存储空间的变化很大,因此,为了在保证精确地获取存储空间占用情况的同时,降低流程的复杂度,可以在调用NameNode的接口获取存储空间占用情况时,以较小的周期t2获取中间数据占用的存储空间,以较大的周期t0获取元数据占用的存储空间。
404:位于Master的空间统计子单元对该存储空间占用情况进行统计,执行步骤405;
该存储空间占用情况包括中间数据占用的存储空间和元数据占用的存储空间,在到达统计时间时,获取到的存储空间占用情况即为当前中间数据占用的存储空间与当前元数据占用的存储空间之和,对这两部分存储空间进行统计;在当前统计完成后,将当前统计的存储空间占用情况与之前统计的所有存储空间占用情况汇总,统计该计算任务当前的总存储空间占用情况。在该计算任务的处理过程中,对该计算任务的存储空间占用情况不断进行叠加求和,以便在该计算任务处理完成时,快速获取该计算任务的总存储空间占用情况,减少延时。
可选地,为了便于在后续过程中对该资源使用情况和存储空间占用情况进行统计,该周期t2与该周期t1相等;该对所有Worker的资源使用情况进行统计的过程和对该存储空间占用情况进行统计的过程可以同时进行,也可以一前一后进行,本发明实施例对此不做限定。在上述两个过程执行结束后,执行步骤405。
405:位于Master的日志生成单元根据该资源使用情况和该存储空间占用情况,生成该计算任务的资源使用日志;
将统计到的该计算任务的资源使用情况和存储空间占用情况进行汇总,生成该计算任务的资源使用日志。该生成过程在每个统计周期中对所有Worker的资源使用情况进行统计的过程和对该存储空间占用情况进行统计的过程均执行结束后即可进行,即在该计算任务的处理过程中,按照设置的统计周期不断地添加最新统计到的资源使用情况和存储空间占用情况,对该资源使用日志进行更新,直至该计算任务处理完成。
在上述步骤401-405中,以该时长t3为周期,采集该至少一个Worker的资源使用情况,以该时长t1为周期,对所有Worker的资源使用情况进行统计,实现对该计算任务的资源使用情况的统计,并以该时长t2为周期,调用HDFS的主节点NameNode的接口,获取存储空间占用情况,并对所述存储空间占用情况进行统计,在每个统计周期中对所有Worker的资源使用情况进行统计的过程和对该存储空间占用情况进行统计的过程均执行结束后,即可生成资源使用日志,即在该计算任务的处理过程中,按照设置的统计周期不断地添加最新统计到的资源使用情况和存储空间占用情况,对该资源使用日志进行更新,直至该计算任务处理完成。
406:该计费模块根据该资源使用日志、资源单价和计费策略,生成该计算任务的计费报表。
本发明实施例中,当该计算任务处理完成时,根据该资源使用日志中记录的该计算任务的详细的资源使用情况和存储空间占用情况以及资源单价和计费策略,生成该计算任务的计费报表,提供给用户。
具体地,对于该资源使用日志中记录的该计算任务的每个统计时间,查询该统计时间对应的资源单价和计费策略,并根据该统计时间对应的资源使用情况和存储空间占用情况,确定该统计时间的计费。对该资源使用日志中记录的每个统计时间分别进行计费,最终,将每个统计时间对应的计费汇总,得出该计算任务的总计费,生成该计算任务的计费报表。
该计费报表可以列表的形式详细记录每个统计时间对应的计费,也可以仅记录该计算任务的总计费,本发明实施例对此不做限定。
该步骤406之前,所述方法还包括:
400:该配置模块根据预设计费因素,确定该资源单价和该计费策略;
该预设计费因素可以默认设置,也可以由运营管理人员进行添加或删除等修改操作。在执行步骤406时,按照每个统计时间对应的资源单价和计费策略进行计费即可。
本发明实施例提供的方法,通过统计该MapReduce系统的计算任务的资源使用情况和该HDFS的存储空间占用情况,生成该计算任务的资源使用日志;根据该资源使用日志、资源单价和计费策略,生成该计算任务的计费报表。采用本发明的技术方案,对于为用户提供服务的分布式计算Hadoop平台,通过对该计算任务的资源使用情况和存储空间占用情况进行统计,并根据资源使用情况和存储空间占用情况以及计费策略生成该计算任务的计费报表,对该计算任务进行收费,提高了计费的精确性,实现了计费策略的灵活配置。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。