一种基于HDFS集群的海量数据分析统计方法转让专利

申请号 : CN201710206439.3

文献号 : CN107025140B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 林森唐宁马娜

申请人 : 北京快友世纪科技股份有限公司

摘要 :

本发明涉及一种基于HDFS集群的海量数据分析统计方法,其特征在于:包括建立支线调度器,采用配置文件创建支线,初始化支线,数据分组,数据统计输出,以及释放资源。本发明通过设置支线,将全部数据扫描的次数从数据维度数降为1次,从而大幅提高统计分析数据的效率。并且,由于采用“支线”,在完成一个数据维度的统计后,负责该维度统计的支线所占用的系统资源释放将得到释放,这些系统资源又可运用于其他数据统计和分析,在不增加硬件设备的情况下,满足了当前广告业界对业务数据统计的高需求。

权利要求 :

1.一种基于HDFS集群的海量数据分析统计方法,其特征在于:建立支线调度器,由一个单独的管理节点实现;

采用配置文件创建支线,所述支线是最小的统计单元,一个支线完成一个数据维度的统计;

初始化支线,支线调度器赋予支线在本次统计任务中一个全局唯一的支线ID;

数据分组,进行全部数据扫描,将原始数据根据不同支线所需要统计的数据维度进行划分并赋予对应的分组键,形成[分组键,数据值]键值对,所述分组键含有对应的支线ID信息;

数据合并,在各个工作节点中根据键值对的分组键将支线ID解析出来,再根据支线ID 去支线调度器中找到对应支线,然后将具有相同分组键的键值对归入对应支线中,在每个支线中对键值对中的数据值进行统计,合并成一对分组数据;

数据统计输出,将集群中的各个节点的分组数据汇集在一起,将具有相同分组键的分组数据进行归约,最后将归约结果输出至对应支线,再由支线输出;

释放资源,在完成一个数据维度的统计后支线调度器将负责该数据维度统计的支线所占用的系统资源释放;

所述支线的数量与工作节点的数量的比值为0.67-1之间。

2.根据权利要求1所述的基于HDFS集群的海量数据分析统计方法,其特征在于:所述分组键的组成为:支线ID_统计数据键。

3.根据权利要求1所述的基于HDFS集群的海量数据分析统计方法,其特征在于:在初始化支线后,还对支线ID进行校验,以避免支线ID与其他参数重合。

说明书 :

一种基于HDFS集群的海量数据分析统计方法

技术领域

[0001] 本发明一般地涉及海量数据处理方法,并且更特别地,涉及一种基于HDFS集群的海量数据分析统计方法。

背景技术

[0002] 随着移动互联网的爆发式发展,人们已经从传统的PC端,快速切换到手机端,并且手机端已经站稳用户的“第一屏幕”。在这种趋势下,广大应用开发者有变现的需求,自然会选择接入移动广告平台,而需求方平台(Demand-Side Platform,DSP)有精准投放广告的需求,在这种市场需求下,广告交易平台每天会完成几十亿次的广告交易,随之而来的是服务器每天产生上百TB的广告交易数据。在基于终端设备、地域、GPS等海量数据处理中,需要进行广告交易数据的分析,用户行为的分析,用户作弊行为的分析(恶意刷量),需求方平台每天消费等不同种类或维度的数据统计分析。
[0003] 目前来说,对于海量大数据的统计分析一般是使用传统的Hadoop中MapReduce来实现的。Hadoop是一种分布式系统基础架构,实现了一个分布式文件系统(Hadoop Distributed File System)。Hadoop的框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算。在实际应用中,hadoop的HDFS服务器集群会接收到不同交易服务器产生的交易日志或其他数据;此后经HDFS的管理节点(NameNode),又称主控服务器,分配后多个工作节点(DataNode)上运行MapReduce作业,实现单一维度的数据统计分析,其具体算法如下:首先根据统计维度的算法进行全部数据扫描,以进行数据分组并据此分配任务至多个工作节点,即映射(map)过程,然后使多个工作节点进行数据排序及合并的并行处理,最后将各个节点合并后的数据统一汇总,执行归约(reduce)操作,并将统计分析后的结果数据进行储存。此后依次重复MapReduce以执行剩余维度的数据统计。MapReduce的流程示意图在附图中显示。
[0004] MapReduce在每次执行一个维度的统计分析运算时都需要进行全部数据的扫描,以完成数据统计分析。其统计总时间的估算公式为:T(n)=∑(Td(n)+Tm(n)+Tr(n)),其中,T(n)为n种统计分析运行总时间,Td(n)为n次全表扫描总时间,Tm(n)为n种统计分析的map总时间,Tr(n)为n种统计分析的reduce总时间。当需要进行比较多的数据统计分析时,该方法会长时间占用相对有限的HDFS服务器集群资源。并且,由于这种统计分析方法计算用时太久,目前已不能满足每天给开发者和需求方结算的要求。

发明内容

[0005] 针对上述问题,本发明通过一种基于HDFS集群的海量数据分析统计方法,解决了现有技术,即MapReduce方法,在统计分析海量数据时占用有限的HDFS服务器集群资源时间太长以及统计分析本身时间太长的问题。
[0006] 为了实现上述目的,本发明采用如下技术方案。
[0007] 一种基于HDFS集群的海量数据分析统计方法,其特征在于:
[0008] 建立支线调度器,由一个单独的管理节点实现;
[0009] 采用配置文件创建支线,所述支线是最小的统计单元,一个支线完成一个数据维度的统计;
[0010] 初始化支线,支线调度器赋予支线在本次统计任务中一个全局唯一的支线ID;
[0011] 数据分组,进行全部数据扫描,将原始数据根据不同支线所需要统计的数据维度进行划分并赋予对应的分组键,形成[分组键,数据值]键值对,所述分组键含有对应的支线ID信息,;
[0012] 数据合并,在各个工作节点中根据键值对的分组键将支线ID解析出来,再根据支线ID去支线调度器中找到对应支线,然后将具有相同分组键的键值对归入对应支线中,在每个支线中对键值对中的数据值进行统计,合并成一对分组数据;
[0013] 数据统计输出,将集群中的各个节点的分组数据汇集在一起,将具有相同分组键的分组数据进行归约,最后将归约结果输出至对应支线,再由支线输出;
[0014] 释放资源,在完成一个数据维度的统计后支线调度器将负责该数据维度统计的支线所占用的系统资源释放。
[0015] 所述系统资源包括数据库连接资源、文件资源、数据集合资源。
[0016] 本发明所述的实现支线调度器的管理节点不同于现有技术中的管理节点Namenode,本发明所述的管理节点在于实现支线的调配,即支线所占用若干个工作节点的调配。
[0017] 进一步地,所述分组键的组成为:支线ID_统计数据键。
[0018] 进一步地,在初始化支线后,还对支线ID进行校验,以避免支线ID与其他参数重合。
[0019] 进一步地,所述支线的数量与工作节点的数量的比值大于0且不大于2,优选比值为0.67-1之间。当支线数量与工作节点的数量比值过大时,会显著增加节点集群间的数据传输,也不利于支线调度器的调度,增加实现支线调度器的管理节点的宕机风险。当支线数量与工作节点的数量比值在0.67-1之间时,系统的运算效率更优。
[0020] 由上述发明方案可知,本发明所述的基于HDFS集群的海量数据分析统计方法的统计总时间估算公式为T(n)=∑(Td(1)+Tm(n)+Tr(n))+ΔT,Td(1)为一次全表扫描总时间,Tm(n)为n种统计的map总时间,Tr(n)为n种统计的归约总时间,ΔT为支线调度器处理所需运算时间。
[0021] 而在实际应用中,在支线数和工作节点数的比例不超过2的情况下,支线调度器处理所需运算时间很短,可以忽略不计。即本发明披露的数据分析统计方法的统计总时间估算公式为T(n)=∑(Td(1)+Tm(n)+Tr(n))。
[0022] 因此,相对于现有技术,本发明通过设置支线,将全部数据扫描的次数从数据维度数降为1次,从而大幅提高统计分析数据的效率。并且,由于本发明提供的方法采用“支线”,在完成一个数据维度的统计后,负责该维度统计的支线所占用的系统资源释放将得到释放,这些系统资源又可运用于其他数据统计和分析,在不增加硬件设备的情况下,满足了当前广告业界对业务数据统计的高需求。
[0023] 另外,本发明通过本地工作节点的数据合并可以有效减少节点集群间的数据传输,有利于减少海量数据分析统计的运算时间。

附图说明

[0024] 图1是现有技术Hadoop中MapReduce流程示意图;
[0025] 图2是根据本发明公开的一个较佳实施例的流程示意图。

具体实施方式

[0026] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出。所述参考附图描述的实施例是示例性的,仅用于解释本发明,而不能视为对本发明的限制。为了避免不必要地模糊所述实施例,本部分对一些本领域的公知技术,即对于本领域技术人员而言是显而易见的技术,未进行详细描述。
[0027] 实施例1
[0028] 一种基于HDFS集群的海量数据分析统计方法,其流程示意如图2所示,其特征在于:
[0029] 建立支线调度器,由一个单独的管理节点实现;
[0030] 采用配置文件创建支线1、支线2和支线3,所述支线是最小的统计单元,一个支线完成一个数据维度的统计;
[0031] 初始化支线,支线调度器赋予支线在本次统计任务中一个全局唯一的支线ID,支线1的ID为subline_1,支线2的ID为subline_2,支线3的ID为subline_3,并对所述3个ID进行校验,以避免支线ID与其他参数重合;
[0032] 数据分组,进行全部数据扫描,将原始数据根据不同支线所需要统计的数据维度进行划分并赋予对应的分组键,形成[分组键,数据值]键值对,所述分组键含有对应的支线ID信息;
[0033] 数据合并,在各个工作节点中根据键值对的分组键将支线ID解析出来,再根据支线ID去支线调度器中找到对应支线,然后将具有相同分组键的键值对归入对应支线中,在每个支线中对键值对中的数据值进行统计,合并成一对分组数据;
[0034] 数据统计输出,将集群中的各个节点的分组数据汇集在一起,将具有相同分组键的分组数据进行归约,最后将归约结果输出至对应支线,再由支线输出;
[0035] 释放资源,在完成一个数据维度的统计后支线调度器将负责该数据维度统计的支线所占用的系统资源释放。
[0036] 实施例2
[0037] 使用一种基于HDFS集群的海量数据分析统计方法对16TB量级的广告平台数据进行广告交易数据的分析、用户行为的分析、用户作弊行为的分析和需求方平台每天消费的分析,其特征在于:
[0038] 建立支线调度器,由一个单独的管理节点实现;
[0039] 采用配置文件创建支线1、支线2、支线3和支线4分别对应广告交易数据、用户行为、用户作弊行为和需求方平台每天消费这4个维度的分析,所述支线是最小的统计单元,一个支线完成一个数据维度的统计;
[0040] 初始化支线,支线调度器赋予支线在本次统计任务中一个全局唯一的支线ID,支线1的ID为subline_1,支线2的ID为subline_2,支线3的ID为subline_3,支线4的ID为subline_4,并对所4个ID进行校验,以避免支线ID与其他参数重合;
[0041] 数据分组,进行全部数据扫描,将原始数据根据不同支线所需要统计的数据维度进行划分并赋予对应的分组键,形成[分组键,数据值]键值对,所述分组键含有对应的支线ID信息;
[0042] 数据合并,在各个工作节点中根据键值对的分组键将支线ID解析出来,再根据支线ID去支线调度器中找到对应支线,然后将具有相同分组键的键值对归入对应支线中,在每个支线中对键值对中的数据值进行统计,合并成一对分组数据;
[0043] 数据统计输出,将集群中的各个节点的分组数据汇集在一起,将具有相同分组键的分组数据进行归约,最后将归约结果输出至对应支线,再由支线输出;
[0044] 释放资源,在完成一个数据维度的统计后支线调度器将负责该数据维度统计的支线所占用的系统资源释放。
[0045] 实施例3-8除了广告平台交易数据的量级、分析维度数量、支线个数如表1所示,以及对应的支线ID有对应的变化外,其余与实施例2相同。
[0046] 对比例1-7使用传统Hadoop中MapReduce来实现对实施例2-8所述广告平台交易数据的数据分析。
[0047] 实施例2-8及对比例1-7所基于的HDFS集群具有相同数量的工作节点(12个),即实际数据处理运算能力是相同的。
[0048] T(n)为n种统计分析运行总时间,Td(n)为n次全表扫描总时间,Tm(n)为n种统计分析的map总时间,Tr(n)为n种统计分析的reduce总时间,ΔT为支线调度器处理所需运算时间。表1中的T(n)、Td(n)、Tm(n)、Tr(n)和ΔT是将实施例2-8以及比例1-7重复3次后所得对应参数的平均数。表1
[0049]  数据量级 分析维度 支线数 Td(n) Tm(n) Tr(n) ΔT T(n)
实施例2 16TB 4 4 6h 3h 1.5h 2min 10.5h
对比例1 16TB 4 \ 23h 3.2h 2h 0 28.2h
实施例3 10TB 5 5 4.25h 2h 1.25h 3min 7.5h
对比例2 10TB 5 \ 17.5h 2.1h 1.5h 0 21.1h
实施例4 10TB 15 15 5h 2.3h 1.4h 12min 8.9h
对比例3 10TB 15 \ 70h 2.5h 1.75h 0 74.25h
实施例5 5TB 8 8 2h 1.5h 1.2h 5min 4.8h
对比例4 5TB 8 \ 15.5h 1.75h 1.5h 0 18.75
实施例6 5TB 30 30 8.5h 2.5h 2.1h 35min 13.7h
对比例5 5TB 30 \ 56h 2h 1.75h 0 59.75h
实施例7 1.5TB 12 12 0.7h 1h 0.75h 8min 2.6h
对比例6 1.5TB 12 \ 7.8h 1.2h 1h 0 10h
实施例8 1.5TB 36 12 2h 2.8h 2.2h 26min 7.4h
对比例7 1.5TB 36 \ 23h 3.3h 2.5h 0 28.8h