一种预编译函数缓存引擎的大数据处理方法技术

技术编号:21115349 阅读:22 留言:0更新日期:2019-05-16 08:52
本发明专利技术实施例公开了一种预编译函数缓存引擎的大数据处理方法,所述方法包括:引擎缓存大小及优化策略设置;根据用户需求生成表达式树;遍历所述表达式树,生成该表达式树的特征字符串,同时提取常量节点数据并缓存;生成所述特征字符串的唯一值;根据所述唯一值查找缓存中是否存储有预编译的即时编译函数;若不存在,则生成即时编译函数并缓存;将所述常量节点数据代入所述即时编译函数进行处理,在高并发单点查询的场景下对海量数据处理的延迟时间在毫秒级别,大大加快了大数据处理速度,有效的利用了CPU和内存资源,减轻了分布式OLAP或OLTP数据库的查询负载,满足高性能大数据处理需求。

A Large Data Processing Method for Pre-compiled Function Caching Engine

【技术实现步骤摘要】
一种预编译函数缓存引擎的大数据处理方法
本专利技术实施例涉及计算机算法
,具体涉及一种预编译函数缓存引擎的大数据处理方法。
技术介绍
云计算大数据时代,随着企业业务日益增加与复杂,产生的数据量也越来越庞大,如何在海量数据高并发场景下快速检索出想要的数据,对分布式数据库也有了更高的需求。某些用户的业务场景是海量数据,当碰到相同表达式,只是常量不同情况下如何能够获取更高的性能,例如银行用户查帐期,输出条件都相同,但只换用户号码,在传统的数据库软件每一次都会下发相同SQL(结构化查询语言),并且每次都会重复进行,存储资源、内存资源、计算资源等的调度,导致资源重复申请与释放,造成查询时间瓶颈。目前比较流行的分布式大数据,高性能的计算框架有如下:(1)基于Hadoop的MapReduce并行计算框架。MapReduce作业可以将数据集分割为Map(映射)函数并行处理的数据块,框架对Map过程产生的数据进行排序,然后作为reduce(归约)函数的数据输入,通常作业的的输出和输入数据保存在一个分布式文件系统(HDFS)。(2)基于LLVM(底层虚拟机即时编译技术,LowLevelVirtualMachineJust-in-timecompilation)的高性能内存计算框架。根据用户的需求生成表达式树,根据表达式树生成即时编译函数,即时编译函数只包含了和本次处理工作有关的指令,大大减少了指令的数量来提高性能。而现有的计算模型存在以下缺点:MR(MapReduce)计算模型会把任务的中间结果都落到HDFS上面,然后在从HDFS上面把数据读取出来再进行运算,所以其时延性要远远低于基于内存计算的模型,因此MR计算模型大多用于非实时计算的场景上面;而LLVM的高性能内存计算框架时延确实低,但是在高并发场景下,LLVM内存计算框架中,编译LLVMJIT函数的时间却很长,因为需要LLVMJIT引擎处理内存的管理、符号的重定向、处理外部符号等等诸多复杂的编译器后端问题,所以每一个LLVMJIT函数的创建都会争抢CPU资源、内存资源等系统资源的问题,所以性能会降下来。
技术实现思路
为此,本专利技术实施例提供一种预编译函数缓存引擎的大数据处理方法,以解决现有的计算框架存在的在海量数据高并发场景下单点查询延迟时间长、无法满足高性能需求的问题。为了实现上述目的,本专利技术的实施方式提供如下技术方案:在本专利技术的实施方式的第一方面中,提供了一种预编译函数缓存引擎的大数据处理方法,所述方法包括:引擎缓存大小及优化策略设置;根据用户需求生成表达式树;遍历所述表达式树,生成该表达式树的特征字符串,同时提取常量节点数据并缓存;生成所述特征字符串的唯一值;根据所述唯一值查找缓存中是否存储有预编译的即时编译函数;若不存在,则生成即时编译函数并缓存;将所述常量节点数据代入所述即时编译函数进行处理。进一步地,所述引擎缓存大小及优化策略设置包括:预设缓存大小以及将缓存进行分桶。进一步地,所述将缓存进行分桶包括:根据用户配置文件预设桶的个数;或者,根据历史数据统计信息直方图中即时编译函数指针的个数预估每个即时编译函数指针所需要的内存FM,根据BucketNum=M/FM计算出桶的个数,其中,BucketNum为桶的个数,M为缓存的预设大小。进一步地,所述生成该表达式树的特征字符串包括:获取所述表达式树的属性信息,将所述属性信息合并生成该表达式树的特征字符串,其中,所述属性信息包括数据类型、数据列宽或者数据索引信息。进一步地,所述提取常量节点数据并缓存包括:建立所述常量节点数据的索引,根据所述索引划分缓存空间,并将所述常量节点数据分别存储到与索引对应的缓存空间内。进一步地,所述生成所述特征字符串的唯一值包括:根据MD5消息摘要算法计算出所述特征字符串的前32位字符的消息摘要字符串,以及根据Huffman编码方法计算出所述特征字符串的Huffman字符串,将计算得到的消息摘要字符串和Huffman字符串合并得到所述特征字符串的唯一值。进一步地,所述根据所述唯一值查找缓存中是否存储有预编译的即时编译函数包括:将所述唯一值的前32位字符作为关键字在缓存中进行查找,若查到,则继续将所述唯一值的前32位字符之后的其余字符与查到的字符串进行memcmp函数比较。进一步地,所述生成即时编译函数包括:建立指令库,所述指令库内存储有多种中间表示指令;根据用户需求确定相应的函数执行流程;根据所述函数执行流程选取所述指令库中存储的与所述函数执行流程匹配的所述中间表示指令,生成中间指令集;根据所述中间指令集生成所述即时编译函数。进一步地,所述将所述常量节点数据代入即时编译函数进行处理还包括:执行常量获取指令获取常量节点数据,所述常量获取指令是封装在静态库中并存储在缓存中的。在本专利技术的实施方式的第二方面中,提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令用于执行如上所述的预编译函数缓存引擎方法。本专利技术实施例提出的一种预编译函数缓存引擎的大数据处理方法,具有如下优点:根据用户需求生成表达式树,遍历表达式树,生成该表达式树的特征字符串,提取常量节点数据并缓存,最后生成特征字符串的唯一值,根据唯一值查找缓存中预先编译好的即时编译函数直接调用进行计算,避免了计算引擎在碰到相同表达式,只是常量不同的情况下对存储资源、内存资源、计算资源等等的重复申请与释放,相比于未使用预编译函数缓存引擎,使用预编译函数缓存引擎的服务器在高并发单点查询的场景下对海量数据处理的延迟时间在毫秒级别,大大加快了大数据处理速度,有效的利用了CPU和内存资源,减轻了分布式OLAP或OLTP数据库的查询负载,满足高性能大数据处理需求。附图说明为了更清楚地说明本专利技术的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。图1为本专利技术的一实施例提供的一种预编译函数缓存引擎的大数据处理方法流程示意图;图2为本专利技术的一实施例提供的一种预编译函数缓存引擎的大数据处理方法即时编译函数查找方法流程示意图。具体实施方式以下由特定的具体实施例说明本专利技术的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本专利技术的其他优点及功效,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示,本专利技术的一个实施例提供了一种预编译函数缓存引擎的大数据处理方法,该方法包括以下步骤:S10、引擎缓存大小及优化策略设置。进一步地,引擎缓存大小设置有以下几种方式:(1)计算系统当前进程可用内存量的八分之一的值,然后预申请这么大的内存作为缓存的大小,然后通过SlabAllocator(缓存分配)的机制来实现分配、管理内存;SlabAllocation的原理,首先从操作系统申请一大块内存,并将其分割成各种尺寸的块Chunk,并把尺寸相同的块分成组SlabClass,其中,Chunk就是用来存储key(键)-val本文档来自技高网
...

【技术保护点】
1.一种预编译函数缓存引擎的大数据处理方法,其特征在于,所述方法包括:引擎缓存大小及优化策略设置;根据用户需求生成表达式树;遍历所述表达式树,生成该表达式树的特征字符串,同时提取常量节点数据并缓存;生成所述特征字符串的唯一值;根据所述唯一值查找缓存中是否存储有预编译的即时编译函数;若不存在,则生成即时编译函数并缓存;将所述常量节点数据代入所述即时编译函数进行处理。

【技术特征摘要】
1.一种预编译函数缓存引擎的大数据处理方法,其特征在于,所述方法包括:引擎缓存大小及优化策略设置;根据用户需求生成表达式树;遍历所述表达式树,生成该表达式树的特征字符串,同时提取常量节点数据并缓存;生成所述特征字符串的唯一值;根据所述唯一值查找缓存中是否存储有预编译的即时编译函数;若不存在,则生成即时编译函数并缓存;将所述常量节点数据代入所述即时编译函数进行处理。2.根据权利要求1所述的一种预编译函数缓存引擎的大数据处理方法,其特征在于,所述引擎缓存大小及优化策略设置包括:预设缓存大小以及将缓存进行分桶。3.根据权利要求2所述的一种预编译函数缓存引擎的大数据处理方法,其特征在于,所述将缓存进行分桶包括:根据用户配置文件预设桶的个数;或者,根据历史数据统计信息直方图中即时编译函数指针的个数预估每个即时编译函数指针所需要的内存FM,根据BucketNum=M/FM计算出桶的个数,其中,BucketNum为桶的个数,M为缓存的预设大小。4.根据权利要求1所述的一种预编译函数缓存引擎的大数据处理方法,其特征在于,所述生成该表达式树的特征字符串包括:获取所述表达式树的属性信息,将所述属性信息合并生成该表达式树的特征字符串,其中,所述属性信息包括数据类型、数据列宽或者数据索引信息。5.根据权利要求1所述的一种预编译函数缓存引擎的大数据处理方法,其特征在于,所述提取常量节点数据并缓存包括:建立所述常量节点数据的索引,根据所述索引划分缓存空间,并将所述常量节点数据分别存储到与索引对应的缓存空间内。6...

【专利技术属性】
技术研发人员:周伟余佳阳季桃桃周群年金正皓
申请(专利权)人:北京东方国信科技股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1