在Presto计算节点混合使用内存和临时表空间的方法和装置制造方法及图纸

技术编号:13239298 阅读:34 留言:0更新日期:2016-05-15 01:17
本发明专利技术提供了一种在Presto中混合使用内存和临时表空间的方法,包括:将计算数据传输给Presto计算节点;如果所需内存超过Presto计算节点的空闲内存或者超过单个计算任务在该Presto计算节点上允许使用的最大内存,使用临时表空间。本发明专利技术在Presto应用中添加临时表空间功能,使用内存和临时表空间混合使用的方法,有效解决了集群内存不足的问题,而且简单易用,可以极大提升集群查询性能以及并发性。本发明专利技术还提供了对应的装置。

【技术实现步骤摘要】

本专利技术涉及计算机技术,具体涉及大数据应用中在Presto计算节点混合使用内存 和临时表空间的方法和装置。
技术介绍
Presto是一种应用于大数据方面的分布式SQL查询引擎,所有数据处理和传输都 是基于内存和网络,计算过程一气呵成,不分阶段,没有中间temp阶段,避免了不必要的I/O 和延迟开销,因此总体查询效率比Hive高出近10倍。 Presto在计算过程中,需要把所有参与计算的元数据拆分并加载到各个计算节点 的内存中完成计算,例如:查询、排序、存放中间结果集等。Presto支持多个作业并行执行, 因此需要设定单个计算任务在每个计算节点服务器上可以使用的内存最大值,这个值由参 数task.max-memory来控制,通常情况下该参数最大值不超过服务器总内存大小的80 %,其 执行过程如图1所示。 Pre s to使用过程中常遇到如下的问题: 1、单台服务器的内存较少,标准的大数据服务器通常配置64GB或128GB的内存,而 存储的数据量通常在10TB左右,数据量远远大于内存的大小, 2、在有并发操作的情况下,参与计算的数据量远大于服务器的内存大小, 3、直接扩容服务器内存的成本较高,且受到服务器内存插槽的个数限制。 上述问题现有技术方案无好的解决办法,因此需要新的技术方案以满足大数据量 的要求。
技术实现思路
有鉴于此,本专利技术提出了 一种在Presto中混合使用内存和临时表空间的方法,包 括:将计算数据传输给Presto计算节点;如果所需内存超过Presto计算节点的空闲内存或 者超过单个计算任务在该Presto计算节点上允许使用的最大内存,使用临时表空间。本专利技术还提出了一种在Presto中混合使用内存和临时表空间的装置,包括:传输 模块,被配置为将计算数据传输给Presto计算节点;临时表空间模块,被配置为如果所需内 存超过Presto计算节点的空闲内存或者超过单个计算任务在该Presto计算节点上允许使 用的最大内存,使用临时表空间。 本专利技术在PrestO应用中添加临时表空间功能,使用内存和临时表空间混合使用的 方法,有效解决了集群内存不足的问题,而且简单易用,可以极大提升集群查询性能以及并 发性。【附图说明】 图1示出了现有技术中只使用内存的Presto计算节点的流程图。 图2示出了根据本专利技术实施例的在Presto计算节点混合使用内存和临时表空间的 方法的流程图。图3示出了根据本专利技术实施例的在Presto计算节点中混合使用内存和临时表空间 的方法的流程图。图4示出了根据本专利技术实施例的在Presto中混合使用内存和临时表空间的装置。【具体实施方式】 以下对本专利技术的示例性实施例做出说明,其中包括本专利技术实施例的各种细节以有 助于理解,应当将它们认为仅仅是示例性的。因此,本领域的技术人员应当认识到,可对本 文描述的实施例做出各种修改和改变,而不脱离本专利技术的范围和精神。 一般来说,Presto数据处理要求内存大小可以容下所参与计算的全部数据量大 小,否则,计算会十分缓慢或者出现内存错误,导致计算任务失败,同时太过于依赖内存大 小,也导致Presto的并发性不高。 基于现有技术方案存在的缺点,我们提出了在Presto各计算节点增加临时表空间 与内存一起混合使用的方法,临时表空间主要用来做排序操作以及用于存储临时表、中间 排序结果集等临时对象,如CREATE TABLE、SELECT DISTINCT、0RDER BY、GR0UP BY、UNI0N ALL、MINUS、SORT-MERGE JOINS、HASH JOIN等原本在内存中的操作都可以用到临时表空间。 该方法解决了内存容量不足的问题,同时也提高了集群性能以及并发能力。同时,该方法无 需额外的硬件投入,操作起来也比较简单。图2示出了根据本专利技术实施例的在Pr e s to计算节点中混合使用内存和临时表空间 的方法200的流程图。在步骤210,将计算数据传输给Presto计算节点。在步骤220,计算各计算节点的内 存。然后在步骤230和步骤240分别判断计算节点的空闲内存是否大于所需内存以及所需内 存是否小于task. max. memory (也就是单个计算任务在每个计算节点服务器上可以使用的 内存最大值)。如果步骤230判断为"否"或者步骤240判断为"否",这表明计算节点的内存不 够,这时可以前进到步骤250,使用临时表空间。如果步骤230和步骤240判断都为"是",表明 计算节点内存足够,这时前进到步骤280继续计算,然后结束。在步骤250后的步骤260中,判 断临时表空间是否足够,如果临时空间足够,则前进到步骤280继续计算,然后结束;如果临 时表空间不足,则前进到步骤270,执行十分缓慢或出错,然后结束。 在一个实施例中,可以修改Presto源码,识别临时表空间。具体地,Presto临时表 空间有如下特征:临时表空间的大小最大为32TB,且不超过服务器硬盘总容量的大小。 进程执行完成后,临时表间空会自动释放数据,这里的释放只是标记为空闲、可以 重用,其实实质占用的磁盘空间并没有真正释放。 临时表空间使用贪心算法,所占用的存储空间只增加,不减少。 当创建临时表空间时,自动启用一个后台进程检测临时表空间的有效性,当删除 临时表空间后,后台进程同时删除。 临时表空间存储大规模排序操作和散列操作的中间结果。它跟永久表空间不同之 处在于它由临时数据文件组成的,而不是永久数据文件。临时表空间不会存储永久类型的 对象,所以它不需要额外二个副本。(像Hadoop分布式文件系统(HDFS)-般都有二个副本)创建临时表空间或临时表空间添加临时数据文件时,即使临时数据文件很大,添 加过程也相当快。这是因为临时数据文件是一类特殊的数据文件:稀疏文件,当临时表空间 文件创建时,它只会写入文件头部和最后块信息。它的空间是延后分配的。这就是在创建临 时表空间或给临时表空间添加当前第1页1 2 本文档来自技高网...

【技术保护点】
一种在Presto中混合使用内存和临时表空间的方法,包括:将计算数据传输给Presto计算节点;如果所需内存超过Presto计算节点的空闲内存或者超过单个计算任务在该Presto计算节点上允许使用的最大内存,使用临时表空间。

【技术特征摘要】

【专利技术属性】
技术研发人员:戴东东吕信郭李明袁安峰
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

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

1