一种大规模网络流式数据缓存写入的方法
技术领域
[0001] 本发明涉及网络技术领域,具体涉及一种大规模网络流式数据缓存写入的方法。背景技术
[0002] 近年来,随着互联网的迅猛发展,数据的快速增长了成了许多行业共同面临的机遇与挑战。在当今网络环境下,大量数据源是实时的不间断的,要求对用户的响应时间也是实时的。这些数据以流式的形式被采集、计算与查询。例如网络异常检测系统,通过采集网络包、网络日志等数据,进行分析,并保证在一定时间范围内返回分析结果,保障网络的高可用性。这种系统的特点在于:每个时刻都有各式各样海量的网络数据流入系统,流入速度各异,数据结构复杂多样(包括二进制文件、文本文件、压缩文件等),网络异常检测只是一种应用。对于此类应用,需要底层存储系统能够支持:对流入的数据以统一格式存储,对上层应用提供统一接口,方便检索,并且对实时性有一定要求。
[0003] 针对现今的大数据趋势,涌现了一批大数据处理平台,应用比较广泛的包括采用MapReduce并行处理框架的Hadoop分布式系统处理架构,在此开源架构中又包括HDFS(Hadoop Distributed File System)、Hbase (Hadoop Database)、Hive (数据仓库工具)等子项目。HDFS的设计能够存储海量的数据(通常是PB甚至更高),应用程序读取文件的方式被假定为流式读取,HDFS在流式读取的性能上做了许多优化;HBase是一个分布式的非关系型数据库系统,HBase搭建在HDFS分布式存储系统之上,也就是说HDFS为HBase提供了高可靠性的分布式底层存储支持,Hadoop MapReduce为HBase提供了高性能的分布式计算引擎;Hive是基于Hadoop底层的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供高层的SQL查询功能,十分适合针对海量结构化数据的统计分析操作;另夕卜,目前应用比较广泛的分布式流式处理平台有Yahoo的S4、Twitter的Storm,这两者都是免费开源、分布式、高容错的实时计算系统。
[0004] 但Hadoop架构的批处理模式不能满足实时计算的要求,系统处理速度减慢,不适合数据直接流入;Hbase与Hive都属于分布式数据库,然而从网络的不同数据源流入系统的数据格式各异,不经处理无法直接提供给分布式数据库使用;Yahoo的S4、Twitter的Storm这类专门针对分布式流式处理平台的问题在于,他们更多的是提供一种流式数据的计算能力,所有到达的数据经过处理后直接进入内存中计算,并不对流入的数据进行持久化存储,不能满足应用的需求。
发明内容
[0005](一)解决的技术问题
[0006] 针对现有技术的不足,本发明提供一种大规模网络流式数据缓存写入方法,能够利用多级缓存机制应对不同数据来源、流入速度各异的大规模网络数据的写入。
[0007] (二)技术方案
[0008] 为了达到以上目的,本发明通过以下技术方案予以实现:[0009] 一种大规模网络流式数据缓存写入的方法,该方法包括:
[0010] 客户端将采集的数据封装后,发送给服务器端;
[0011] 服务器端对接收到的数据进行解析,确认数据的来源,并将数据格式统一;
[0012] 将格式统一后的数据,根据其来源写入不同内存的缓存区域;
[0013] 对写入不同内存缓存区域的数据制定不同的缓存策略,并将满足策略触发条件的数据从内存写入本地文件系统;
[0014] 将写入本地文件系统的数据根据上层应用需求加载到分布式文件系统或分布式数据库中;
[0015] 对于已加载到分布式文件系统或分布式数据库的数据,定期将小数据合并成大数据。
[0016] 其中,所述数据格式统一后,应为Key-Value形式或关系型数据形式。
[0017] 较佳地,该方法进一步包括:对于要加载到分布式数据库中的数据,进一步判断其是否为关系型数据,若是关系型数据,则将其加载到分布式关系型数据库,若不是关系型数据,则将其加载到分布式No-SQL数据库。
[0018] 较佳地,该方法还包括:对于加载到分布式数据库的数据,将合并后的大数据的存储格式转换为针对分布式数据库的专门优化的行列存储格式。
[0019] 一种大规模网络流式数据缓存写入的系统,该系统包括:
[0020] 数据发送模块,用于将采集的数据封装后,发送给服务器端;
[0021] 数据格式化模块,用于对接收到的数据进行解析,确认数据的来源,并将数据格式统一;
[0022] 数据缓存模块,用于将格式统一后的数据,根据其来源写入不同内存的缓存区域;
[0023] 数据持久化模块,用于对写入不同缓存区域的数据定制不同的缓存策略,并将满足策略触发条件的数据从内存写入本地文件系统;
[0024] 数据加载模块,用于将写入本地文件系统的数据根据上层应用需求加载到分布式文件系统或分布式数据库中;
[0025] 数据规整模块,用于对已加载到分布式文件系统或分布式数据库的数据,定期将小数据合并成大数据。
[0026] 其中,所述数据格式化模块,将数据格式统一后,其数据的格式应为Key-Value形式或关系型数据形式。
[0027] 较佳地,所述数据加载模块,进一步判断加载到分布式数据库中的数据是否为关系型数据,若是关系型数据,则将其加载到分布式关系型数据库,若不是关系型数据,则将其加载到分布式No-SQL数据库。
[0028] 较佳地,所述数据规整模块,进一步将分布式数据库中合并后的大数据的存储格式,转换成针对分布式数据库的专门优化的行列存储格式。
[0029](三)有益效果
[0030] 本发明至少有如下有益效果:
[0031] 本发明提供的方法利用多级缓存机制来对数据进行缓存,当服务器接收到数据后,将数据的格式进行了统一,而且根据数据的不同来源制定不同的缓存策略,能够应对不同数据来源、流入速度各异的大规模网络数据的写入,将零碎的小数据合并成大数据块,提高了数据处理速度,减少数据存储空间,降低了数据管理成本,符合大数据处理需求。
[0032] 本发明提供的方法,将数据格式统一,统一后数据格式为Key-Value形式或关系型数据形式,方便后续计算直接调用。
[0033] 本发明提供的方法,除了将加载到分布式数据库的数据中的小数据合并成大数据块,还将数据储存格式转换成针对分布式数据库的专门优化的行列存储格式,在节省储存空间的同时,优化了查询效率。
附图说明
[0034] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
[0035] 图1是本发明实施例提供的一种大规模网络流式数据缓存写入的方法的流程图;
[0036] 图2是本发明一个较佳实施例提供的一种大规模流式数据缓存写入的方法的流程图;
[0037] 图3是关于缓存策略的举例说明。
具体实施方式
[0038] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0039] 参见图1,本发明实施例提供了一种大规模网络流式数据缓存写入的方法,该方法的步骤如下:
[0040] 步骤101:客户端将采集的数据封装后,发送给服务器端;
[0041] 步骤102:服务器端对接收到的数据进行解析,确认数据的来源,并将数据格式统
[0042] 步骤103:将格式统一后的数据,根据其来源写入不同内存的缓存区域;
[0043] 步骤104:对写入不同内存缓存区域的数据制定不同的缓存策略,并将满足策略触发条件的数据从内存写入本地文件系统;
[0044] 步骤105:将写入本地文件系统的数据根据上层应用需求加载到分布式文件系统或分布式数据库中;
[0045] 步骤106:对于已加载到分布式文件系统分布式数据库的数据,按照既定的策略,将小数据合并成大数据。
[0046] 本发明实施例提供的方法利用多级缓存机制来对数据进行缓存,当服务器接收到数据后,将数据的格式进行了统一,而且根据数据的不同来源制定不同的缓存策略,能够应对不同数据来源、流入速度各异的大规模网络数据的写入,将零碎的小数据合并成大数据块,提高了数据处理速度,减少数据存储空间,降低了数据管理成本,符合大数据处理需求。[0047] 下面通过一个更为具体的例子,来说明本发明一个较佳实施例的实现过程,参见图2,该方法的步骤如下所示:
[0048] 步骤201:客户端将采集的数据封装后,发送给服务器端。
[0049] 本步骤中,客户端只负责将每一时刻采集的数据简单封装,标明其数据来源,以POST的方式,通过HTTP协议发送给服务器端。
[0050] 步骤202:服务器端对接收到的数据进行解析,确认数据的来源,并将数据格式统一。
[0051] 本步骤中,将数据格式统一后的数据格式为Key-Value形式或关系型数据形式,方便后续计算直接调用。
[0052] 步骤203:将格式统一后的数据,根据其来源写入不同内存的缓存区域,并对写入不同内存缓存区域的数据制定不同的缓存策略。
[0053] 本步骤中,对于不同类型的数据,依照其流入速度、数据量及上层应用对数据时效性的要求来制定不同的缓存策略。如图3所示,举例说明具体的缓存策略,对于上层应用是要实时监控的,属于时间敏感类的,要保证数据的时效性,同时如果在很短的时间间隔内就可以累积大量数据,如图2中第一行,一分钟可累积400M数据,综合上述几个条件设定缓存策略为每I分钟持久化一次;而对于另一种数据,如图2中的第二行,10分钟才能累计50M,并且根据应用需求得出,对实时性要求不高,可设定缓存策略为每累积128M数据持久化一次;
[0054] 步骤204:判定数据是否相应的缓存策略的阈值条件,若满足,则转至步骤205,若不满足,则转至步骤203。
[0055] 步骤205:将数据从内存写入本地文件系统中。
[0056] 步骤206:根据上层应用需求,判定数据是否要加载到分布式数据库中,若是,则转至步骤207,若不是,则转至步骤210。
[0057] 步骤207:对于加载到分布式数据库的数据,判定其是否为关系型数据,若是,则转至步骤208,若不是,则转至步骤209。
[0058] 步骤208:将数据加载到分布式关系数据库。
[0059] 步骤209:将数据加载到分布式No-SQL数据库。
[0060] 步骤210:将数据加载到分布式文件系统中。
[0061] 步骤211:判定加载到分布式文件系统中的数据是否满足既定策略的条件,如果满足,则转至步骤214,如果不满足,则转至步骤210。
[0062] 本步骤中,需要满足的既定策略条件根据数据的流入速度等来制定,如对于流动速度不是很快的数据,如I天才能累积64M的数据,可定期对其进行小数据块合并,以满足分布式文件系统对大数据处理的需求,如HDFS文件系统存放文件的默认块大小为64M,对于不足64M的数据以64M存储,如果文件小于64M会造成空间浪费,元数据过多,造成系统运行缓慢,本方法定期对小数据块合并成64M的倍数,减少磁盘碎片,提高存储空间利用率以及提升检索效率。
[0063] 步骤212:判定加载到分布式No-SQL数据库中的数据是否满足既定策略的条件,如果满足,则转至步骤214,如果不满足,则转至步骤210。
[0064] 步骤213:判定加载到分布式关系型数据库中的数据是否满足既定策略的条件,如果满足,则转至步骤214,如果不满足,则转至步骤210。
[0065] 步骤214:将分布式文件系统中满足条件的小数据合并成大数据块。
[0066] 步骤215:将分布式No-SQL数据库中满足条件的小数据合并成大数据块。
[0067] 本步骤中,除了将小数据合并成大数据块,还将数据储存格式转换成如RCFile等针对分布式数据库的专门优化的行列存储格式,在节省储存空间的同时,优化了查询效率。
[0068] 步骤216:将分布式关系型数据库中满足条件的小数据块合并成大数据块。
[0069] 本步骤中,除了将小数据合并成大数据块,还将数据储存格式转换成如RCFile等针对分布式数据库的专门优化的行列存储格式,在节省储存空间的同时,优化了查询效率。
[0070] 步骤217:结束数据缓存写入。
[0071] 以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。