基于大数据的海量数据并行处理方法技术

技术编号:17837668 阅读:74 留言:0更新日期:2018-05-03 19:19
本发明专利技术提供了一种基于大数据的海量数据并行处理方法,该方法包括:(1)获取并行计算平台当前可用进程数;(2)根据可用进程数,分配和初始化用于存储进位的缓存队列;(3)根据可用进程数将需要进行求和操作的运算任务进行区域切分;(4)多进程并行求取各区域的计算任务,将最后的进位值保存到缓存队列中相应的项中;(5)对已更新的缓存队列中每个区域的结果进行统一操作。本发明专利技术提出了一种基于大数据的海量数据并行处理方法,在多核计算平台的基础上,充分利用分布式并行环境提高运算速度。

Large data based parallel processing method for massive data

The present invention provides a parallel processing method of massive data based on large data, which includes: (1) obtaining the available process number of the parallel computing platform; (2) assigning and initializing the cache queues for the storage based on the number of available processes; (3) operation tasks that need to be requested and operated according to the number of available processes. Regional segmentation; (4) multiple processes parallel computing tasks in each region, save the last entry values to the corresponding items in the cache queue; (5) unify the results of each region in the updated cache queue. This invention puts forward a parallel processing method of massive data based on large data. On the basis of multi core computing platform, it makes full use of the distributed parallel environment to improve the computing speed.

【技术实现步骤摘要】
基于大数据的海量数据并行处理方法
本专利技术涉及并行计算,特别涉及一种海量数据的并行处理方法。
技术介绍
大数据的分析和处理已经成为企业重要的IT能力。因为大数据的体量大、速度快、种类多,具有大量异构非结构化数据,使得大数据分析处理和利用也存在巨大的困难。为了解决大数据运算的问题,世界各国的软件开发人员和研究学者都进行了很多的研究和实践。近年来,越来越多的开发人员开始重视软件工程的作用,为了减少重复劳动,提高软件的质量和代码复用,许多优秀的大数据运算库随之出现。现有的大数据运算库所提供的只是数学运算功能,并且只实现各种运算的串行算法,对于多核分布式计算平台并不适用。当前还没有在多核分布式计算平台上产生任何相关的并行计算。在并行计算中克服的主要问题之一是数据相关性,而累加算法中按位求和操作使算法本身存在很大的相关性问题。
技术实现思路
为解决上述现有技术所存在的问题,本专利技术提出了一种基于大数据的海量数据并行处理方法,包括:(1)获取并行计算平台当前可用进程数;(2)根据步骤(1)中得到的可用进程数,分配和初始化用于存储进位的缓存队列,其项数为N;(3)根据步骤(1)中得到的可用进程数将需要进行求和操作的运算任务进行区域切分,区域中的子任务的个数与缓存队列的个数一一对应,大于等于可用进程数;(4)使用动态调度策略,多进程并行求取各区域的计算任务,率先执行完任务的进程接着从由子任务形成的任务池中分配一个子任务,各进程在求取子任务时需判断当前子任务是不是最后一个子任务,如果是最后一个子任务则调用串行累加算法,否则直接调用串行累加算法计算当前子任务,然后将最后的进位值保存到步骤(2)缓存队列中相应的项中,将结果存储在结果的相应位置;(5)对步骤(4)中已更新的缓存队列中每个区域的结果进行统一操作,具体过程为:遍历缓存队列中除缓存队列N-1的每一个值,如果进位值为零,则继续遍历下一个,如果值为非零,则对步骤(4)得到的结果中从下一个区域结果开始到结果的最高位的整个区域进行加1操作,且当加1过程中新的当前进位不为1时,跳出此次遍历过程;遍历完除缓存队列N-1的每一个值后更新最高位的进位Flag。本专利技术相比现有技术,具有以下优点:本专利技术提出了一种基于大数据的海量数据并行处理方法,在多核计算平台的基础上,充分利用分布式并行环境提高运算速度。附图说明图1是根据本专利技术实施例的基于大数据的海量数据并行处理方法的流程图。具体实施方式下文与图示本专利技术原理的附图一起提供对本专利技术一个或者多个实施例的详细描述。结合这样的实施例描述本专利技术,但是本专利技术不限于任何实施例。本专利技术的范围仅由权利要求书限定,并且本专利技术涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本专利技术的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本专利技术。本专利技术的一方面提供了一种基于大数据的海量数据并行处理方法。图1是根据本专利技术实施例的基于大数据的海量数据并行处理方法流程图。本专利技术的并行运算方法具体实现步骤如下:(1)输入两个正数x和y;(2)求出x和y的规模大小,xs和ys,(xs和ys可正可负,正表示为正数,负表示此正数为负数),以及x和y的绝对规模大小abs_xs和abs_ys(abs_xs和abs_ys>=0);(3)abs_xs和abs_ys进行比较,如果abs_xs小于abs_ys,将两个数进行交换,确保被加数的规模大于等于加数的规模;(4)为两个数的和分配内存ws,内存大小为abs_xs+1;(5)获取两个数的指针,xp和yp;(6)根据两个数的具体情况,选择相应的操作。如果两个数的符号不同时需要进行减法操作,则由第一个正数的符号决定结果的符号;当两个数的符号相同时需要进行求和操作,正数的符号由第一个数的符号决定。(7)对于两个数x和y的规模相同的情况,对x和y进行逐数位求和操作,具体过程见步骤(8),然后返回最后一位的进位Flag;对于x和y的规模不同的情况(xs>ys),完成x中的ys位与y进行逐数位求和操作,得到进位的值cy,然后将x的ys位中的值和cy加到结果的第ys位中,最后将x中其余的部分赋值到结果中(可能会有逐数位进位的操作),最后返回进位的值cy;(8)调用本专利技术的多核并行方案对于x和y的逐数位求和操作,具体实现步骤:(8.1)获取并行计算平台当前可用进程数;(8.2)根据步骤(8.1)中得到的可用进程数,分配和初始化用于存储进位的缓存队列,其项数为N;(8.3)根据步骤(8.1)中得到的可用进程数将需要进行逐数位求和操作的运算任务进行区域切分,具体的过程:(8.31)根据并行计算平台当前可用进程数m和需要进行逐数位求和操作的个数n求出每个子任务的大小和特殊子任务的大小;(8.32)声明并初始化迭代变量为0,设置迭代变量的值为0到N-1,每次迭代完成迭代变量乘以步骤(8.31)中的子任务的大小,其得到的值即为每个子任务的起始点,完成区域切分;缓存队列的项数与子任务的个数相等,但是与进程数并不一定相等,当与进程数相等时,即一个进程对应一个子任务,但子任务ID与进程ID按静态调度以外的方式对应;另外,缓存队列0号项的值对应第0号任务的进位Flag,缓存队列1号项的值对应第1号任务的进位Flag,缓存队列2号项的值对应第2号任务的进位Flag,缓存队列N-1号项的值对应第N-1号任务的进位Flag,N为缓存队列的项数。(8.4)使用动态调度策略,多进程并行求取各区域的计算任务,率先执行完任务的进程接着从由子任务形成的任务池中分配一个子任务,各进程在求取子任务时需判断当前子任务是不是最后一个子任务,如果是最后一个子任务需要调用串行求和操作,否则可以直接调用串行求和操作计算当前子任务,然后将最后的进位值保存到步骤(8.2)缓存队列中相应的项中,将结果存储在结果的相应位置;利用进程数对任务进行区域切分,得到的子任务的大小不相同,正数最高位对应的子任务中的求和运算操作与其他子任务中的求和运算操作个数是不同的,需要进行特殊处理,即将这个正数最高位对应的子任务这个特殊子任务与除特殊任务之外其他子任务进行相同处理,但是每次在执行前都要根据子任务对应的子任务ID判断当前进程执行的区域是不是特殊子任务;具体的串行进行求和操作的过程:1)将进位cr赋值为零,指针变量xp和yp分别指向两个数的最低位;2)取得被加数指针所指位的值并将指针指向下一位,xl=*xp++;取得加数指针所指位的值并将指针指向下一位,yl=*yp++;3)将取得的当前位的数值进行求和操作,并将结果存储在变量sl中,sl=xl+yl;4)判断上步中求和结果是否小于被加数的当前位的值,cy1=sl<xl;如果cy1=1表示求和的结果有向下一位的进位,cy1保存进位值;如果cy1=0表示求和的结果没有向下一位的进位;5)将求和结果加上上一位的进位值cy,并将结果存在rl中,rl=sl+cy;6)用rl中的结果值与sl中的值比较,cy2=rl<sl;如果cy2=1表示由于求和结果加上进位导致有向下一位的进位,cy2保存进位值;如果cy2=0表示求和的结果加上进位后没有向下一位本文档来自技高网...
基于大数据的海量数据并行处理方法

【技术保护点】
一种基于大数据的海量数据并行处理方法,其特征在于,包括:(1)获取并行计算平台当前可用进程数;(2)根据步骤(1)中得到的可用进程数,分配和初始化用于存储进位的缓存队列,其项数为N;(3)根据步骤(1)中得到的可用进程数将需要进行求和操作的运算任务进行区域切分,区域中的子任务的个数与缓存队列的个数一一对应,大于等于可用进程数;(4)使用动态调度策略,多进程并行求取各区域的计算任务,率先执行完任务的进程接着从由子任务形成的任务池中分配一个子任务,各进程在求取子任务时需判断当前子任务是不是最后一个子任务,如果是最后一个子任务则调用串行累加算法,否则直接调用串行累加算法计算当前子任务,然后将最后的进位值保存到步骤(2)缓存队列中相应的项中,将结果存储在结果的相应位置;(5)对步骤(4)中已更新的缓存队列中每个区域的结果进行统一操作,具体过程为:遍历缓存队列中除缓存队列N‑1的每一个值,如果进位值为零,则继续遍历下一个,如果值为非零,则对步骤(4)得到的结果中从下一个区域结果开始到结果的最高位的整个区域进行加1操作,且当加1过程中新的当前进位不为1时,跳出此次遍历过程;遍历完除缓存队列N‑1的每一个值后更新最高位的进位Flag。...

【技术特征摘要】
1.一种基于大数据的海量数据并行处理方法,其特征在于,包括:(1)获取并行计算平台当前可用进程数;(2)根据步骤(1)中得到的可用进程数,分配和初始化用于存储进位的缓存队列,其项数为N;(3)根据步骤(1)中得到的可用进程数将需要进行求和操作的运算任务进行区域切分,区域中的子任务的个数与缓存队列的个数一一对应,大于等于可用进程数;(4)使用动态调度策略,多进程并行求取各区域的计算任务,率先执行完任务的进程接着从由子任务形成的任务池中分配一个子任务,各进程在求取子任务时需判断当前子任务是不是最后一个子任务,如果是最后一个子任务则调用串行累加算法,否则直接调用串行累加算法计算当前子任务,然后将最后的进位值保存到步骤(2)缓存队列中相应的项中,将结果存储在结果的相应位置;(5)对步骤(4)中已更新的缓存队列中每个区域的结果进行统一操作,具体过程为:遍历缓存队列中除缓存队列N-1的每一个值,如果进位值为零,则继续遍历下一个,如果值为非零,...

【专利技术属性】
技术研发人员:李垚霖
申请(专利权)人:成都博睿德科技有限公司
类型:发明
国别省市:四川,51

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

1