CN104408106A - 一种用于分布式文件***中大数据查询的调度方法 - Google Patents
一种用于分布式文件***中大数据查询的调度方法 Download PDFInfo
- Publication number
- CN104408106A CN104408106A CN201410670696.9A CN201410670696A CN104408106A CN 104408106 A CN104408106 A CN 104408106A CN 201410670696 A CN201410670696 A CN 201410670696A CN 104408106 A CN104408106 A CN 104408106A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- inquiry
- query
- copy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于分布式文件***中大数据查询的调度方法,包括如下步骤:(1)按照预设的时间周期定期获取所述分布式文件***的集群负载信息;(2)根据查询语句构建查询计划树、确定查询种类和需要查询的数据表,并根据查询种类确定最终调度策略;(3)根据所述的最终调度策略,为所述查询计划树中各个结点选择执行节点以完成并行查询执行调度。本发明的调度以查询响应时间为优化目标,能够得到更优的查询并行执行调度;区分单表查询和多表查询,考虑通信代价对查询响应时间的影响。尤其是在多查询任务并发执行的情况下,其通过负载均衡,可以更好的满足大数据查询的实时性需求。
Description
技术领域
本发明涉及数据并行查询优化领域,尤其涉及一种用于分布式文件***中大数据查询的调度方法。
背景技术
随着数据的***式增长,大数据时代已经来临。尽管Google Dremel和Cloudera Impala等可扩展、交互式的实时查询***已经能够在秒级时间内分析PB级别的数据,但其性能仍有改进的空间。如何优化并行执行调度以缩短查询响应时间,一直是大数据实时查询***关注的重点。
现有的大数据实时查询***的数据库表一般存储在分布式文件***中。现有的分布式文件***会对文件进行分块,并对每个数据块创建副本。现有的大数据实时查询***首先解析查询语句并构建查询计划树,然后,为查询涉及的数据块选择副本,接着,为查询计划树的所有结点确定执行节点,最后,由各个服务进程并行执行并返回查询结果。现有的大数据实时查询***在为数据块选择副本的过程中以任务量均衡为目标。相比于以任务量均衡为目标,负载均衡考虑各个节点任务量和处理能力之间的差异,因此有了一定的改进。相比于负载均衡,并行执行调度考虑通信代价以及副本选择对连接操作的影响,因此能进一步提高***性能。
例如,集群{n1,n2,n3,n4,n5},每个节点上有1个磁盘,即共有5个磁盘{d1,d2,d3,d4,d5}。节点n5是NameNode,其余节点均为DataNode。每个DataNode上运行1个查询服务进程。用户连接节点n1上的查询服务进程,提交查询请求“SELECT*FROM A,B where A.t=B.t”。数据表A由数据块b1构成,数据表B由数据块b2构成,数据块大小均为128MB。b1在磁盘{d1,d2,d3}上有副本。b2在磁盘{d2,d3,d4}上有副本。所有磁盘的读取速率为128MB/s,网络传输速率为64MB/s。以任务量均衡或负载均衡为优化目标的调度策略是相同的,即n1执行将b1从磁盘读入内存的任务,n2执行将b2从磁盘读入内存的任务,若采用该调度策略,则查询执行1s之后,b1和b2被读入内存。3s之后,b2被发送到n1,开始执行连接操作。若为数据块b1和b2选择磁盘d1上的副本,则查询执行2s之后,b1和b2均被读入内存,开始执行连接操作。因此,为数据块选择副本的过程中,若以任务量均衡或负载均衡作为优化目标,不能有效的提升大数据实时查询***的性能。
发明内容
针对现有技术的不足,本发明提供了一种用于分布式文件***中大数据查询的调度方法,用于解决的问题是多副本条件下MPP(massively parallelprocessing)计算框架的并行查询执行调度。
一种用于分布式文件***中大数据查询的调度方法,包括如下步骤:
(1)按照预设的时间周期定期获取所述分布式文件***的集群负载信息,所述集群负载为分布式文件***中各个节点的负载信息;各个节点的负载信息为该节点的磁盘完成当前I/O任务所需的时间;
(2)根据查询语句构建查询计划树、确定查询种类和需要查询的数据表,并根据查询种类为各个需要查询的数据表进行副本选择,得到最终调度策略:
若查询种类为单表查询,则以负载均衡为调度目标并根据所述的集群负载确定需要查询的数据表的最终调度策略;
若查询种类为多表查询,则以查询响应时间最小为调度目标并根据所述的集群负载确定需要查询的数据表的最终调度策略;
(3)根据所述的最终调度策略,为所述查询计划树中各个结点选择执行节点以完成并行查询执行调度。
本发明中单表查询指仅涉及一个数据表的查询;多表查询指涉及两个及两个以上数据表的查询。
并行调度是大数据实时查询执行的重要步骤之一,在数据多副本情况下,并行调度的第一步就是副本选择。本发明针对现有方法在副本选择的过程中以任务量均衡或负载均衡为目标,不能有效缩短查询响应时间的缺陷,提出了一种用于分布式文件***中大数据查询的调度方法,以查询响应时间为目标,通过将查询分为单表和多表两类来制定并行调度策略,从而提升查询执行速度。
为解决现有的以任务量均衡或负载均衡为目标进行副本选择的问题,本发明在为数据块选择副本的过程中,将所有查询分为单表查询和多表查询,然后分别确定调度策略。实际上在确定调度策略时均是以响应时间最小作为调度目标。但是由于单表查询过程中传输时间的比例较小,可以忽略传输时间对响应时间的影响,因此将响应时间最小的问题转化求解负载均衡的问题,完成调度策略的优化选择。
所述步骤(1)具体如下:
从分布式文件***中任意选择一个节点作为采集节点,所述的采集节点根据预设的时间周期定期获取所有节点的负载并作为集群负载信息。
本发明中具体可采用如下方法实现:
在所述分布式文件***中任意指定一个节点(可以为NameNode)作为采集节点,并在采集节点上设有负载信息收集器,在所有节点(包括采集节点)上设置负载信息汇报器;
各个节点上的负载信息汇报器按照预设的时间周期定期向负载信息收集器汇报相应节点的负载信息,由负载信息收集器形成集群负载信息。
所述时间周期为2~5s。
实际应用时,该时间周期可以根据用户需求进行设定,时间周期越小,负载信息就越精确,但是网络通信负载越大。
所述步骤(2)中当为单表查询时,通过如下步骤得到最终调度策略:
(a1)根据查询语句和所述数据表对应数据块的副本分布构造流网络;
(a2)根据各个数据块的大小和最高磁盘速率计算将一个数据块从磁盘读入内存所需最小时间:
(a3)根据如下公式分别计算单表查询所需的查询响应时间的下限和上限,
(a4)计算查询响应时间的下限和上限的差值,并将所述的差值与将一个数据块从磁盘读入内存所需的最小时间进行比较:若小于,则转步骤(a8),否则,执行步骤(a5);
(a5)以查询响应时间的下限和上限的平均值作为查询响应时间,分别计算各个磁盘顶点到虚拟结束顶点的有向边的容量,并根据得到的容量更新所述的流网络:
(a6)使用压入重标记算法计算更新后的流网络的最大流和结束顶点的溢出量;
(a7)若结束顶点的溢出量等于数据块的数目,则上限更新为平均值,否则,将下限更新为平均值,转步骤(a4);
(a8)利用压入重标记算法计算所述的流网络的最大流和结束顶点的溢出量;
(a9)比较结束顶点的溢出量与数据块的数目的大小关系,若相等则以所述的最大流确定各个数据块的副本来源并得到最终调度策略,否则,将所述流网络中磁盘顶点到结束顶点的容量增加1,并返回执行步骤(a8)。
本发明中一个数据表对应一个文件,一个文件对应多个数据块,即一个数据表由多个数据块组成。
本发明中最高磁盘读取速率和最低磁盘读取速率为整个分布式文件***中,读取速率最快的磁盘的读取速率和读取速率最低的磁盘的读取速率。最小负载和最大负载根据当前时刻对应的集群负载信息确定。每个数据块的大小(即数据块字节量)取决于应用的分布式文件***,且对于分布式文件***而言,通常不同数据块的大小相同。网络传输速率和集群环境相关,为常量。
所述步骤(a1)通过如下步骤构建流网络:
针对所有需要查询的数据表对应的所有数据块b,在流网络中创建相应的顶点vb;针对每个磁盘d,在流网络中创建相应的顶点vd;创建两个特殊的顶点作为虚拟的开始顶点s和结束顶点e;对每个顶点vb,均创建有向边<s,vb>,并令容量为1;对每个vd,均创建有向边<vd,e>,并令容量为1;若数据块b在磁盘d上有副本,则创建有向边<vb,vd>,并令容量为1。
所述步骤(2)中当为多表查询时,通过如下步骤确定最终调度策略:
(b1)根据查询语句获取需要查询的数据表,并构建查询计划树,根据集群负载信息依次为查询计划树中所有数据表的所有数据块指定副本,每次均选择负载最小的磁盘上的副本,并形成初始调度策略;
(b2)计算初始调度策略的代价,记录用于执行将查询计划树中最左表的数据块从磁盘读入内存的节点集合I,并根据最左表的数据块更新节点集合I中各个节点的负载信息,并将迭代次数t初始化为0;
(b3)判断迭代次数t是否大于设定的最大迭代次数maxT:
若大于,则以所述的初始调度策略作为最终调度策略;
否则,执行如下步骤依次为查询计划树中除最左表外其他数据表的数据块指定副本,并形成中间调度策略:
(b4)计算中间调度策略的代价,并判断中间调度策略的代价是否小于初始调度策略的代价,若小于,则以中间调度策略为初始调度策略,否则不操作;
(b5)使迭代次数t增加1,转步骤(b3)。
本发明中每次为某一数据块指定副本后,都需要重新计算指定的副本所在的节点的负载信息。
所述步骤(b1)中依次为查询计划树中所有数据表的所有数据块指定副本中依次指定副本的原因如下:
为前一个指定副本后,需要将该副本任务添加至副本所在磁盘对应节点上,更新被选择的副本所在磁盘对应节点的负载信息后,才能进行为下一个数据块指定副本的操作。
本发明中选择负载最小的节点时,若存在两个或两个以上负载最小的节点,则从中任意选择一个即可。
本发明中将按照选择策略执行查询语句时,从开始执行时刻tstart到预估所有连接操作完成时刻ctallJoin的时间间隔作为选择策略并行执行的代价c,即:
c=ctallJoin-tstart
所有连接操作完成时刻ctallJoin由所有执行节点中最后完成的连接操作的时刻决定即:
其中,NtopJoin表示执行顶层连接操作的节点集合,fttopJoin[k]表示节点k完成连接操作的时刻(节点k属于节点集合NtopJoin);节点k完成连接操作的时刻ftjoin[k]由其开始执行时刻btjoin[k]和执行时间tjoin[k]决定:
ftjoin[k]=btjoin[k]+tjoin[k],
tjoin[k]由CPU性能,左表和右表的大小以及连接结果的大小决定,btjoin[k]等于其左孩子结点数据准备好时刻ftlop[k]和右孩子结点数据准备好时刻ftrop[k]的最大值:
btjoin[k]=max(ftlop[k],ftrop[k]),
数据准备好时刻是指数据已在内存中。因为右孩子结点的数据需传送到左孩子结点上才能进行连接操作,所以右孩子结点数据准备好时刻为其读磁盘操作结束时刻加上网络传输时间。节点k上读磁盘操作的结束时刻ftscan[k]由其开始执行时刻btscan[k]和执行时间tscan[k]决定:
ftscan[k]=btscan[k]+tscan[k]
其中,btscan[k]由磁盘负载决定,而tscan[k]由数据量和磁盘读取速率决定。
所述的最大迭代次数maxT为50~200。作为优选,最大迭代次数maxT为50~100,最优地,最大迭代次数maxT为100。
最大迭代次数maxT的取值直接关系到最终得到的调度策略的准确性,取值越大,最终得到的调度策略越准确,相应的获取该调度策略所需要的时间消耗也越大。
所述步骤(b3)中通过如下步骤为除最左表外其他数据表指定副本:
(b3-1)获得当前数据表的数据块集合;
(b3-2)判断数据块集合是否还存在未指定副本的数据块:若不存在,则结束操作,否则,任选一个未指定副本的数据块,并通过如下步骤为其指定副本:
(b3-3)获得该数据块的副本所在节点集合U:
若U与I有交集并且随机数对maxT取余的结果小于t,则从U与I的交集中选择负载最小的节点对应磁盘上的副本,并更新该节点的负载信息,转步骤(b3-2)
否则,从节点集合U中选择负载最小的节点对应磁盘上的副本,并更新该节点的负载信息,转步骤(b3-2)。
所述步骤(3)包括如下步骤:
(3-1)为所述查询计划树中的叶子结点选择执行节点:
若最终调度策略中,与该叶子结点对应的数据表的各个数据块的副本所在的节点上有数据查询服务进程,则选择该副本所在的节点为执行节点,否则,在所有具有数据查询服务进程的节点中选择负载最小的节点作为执行节点;
(3-2)为查询计划树的非叶子结点选择执行节点:
若该非叶子结点有两个孩子结点,则选择左孩子结点的执行节点作为自身的执行节点,否则,直接选择该孩子结点的执行节点作为自身的执行节点。
查询计划树中的叶子结点表示将数据表的数据从磁盘读入内存的操作,查询计划树中的非叶子结点可能代表连接操作,也可能代表聚集操作,即查询计划树中的结点对应的数据表即为该结点所表示的操作种类的操作对象。
由于一个数据表通常包括多个数据块,对于每个数据块都需要设定相应的执行节点,因此查询计划树中各个结点通常具有多个执行节点。
与现有技术相比,本发明的调度方法以查询响应时间为优化目标,能够得到更优的查询并行执行调度;区分单表查询和多表查询,考虑通信代价对查询响应时间的影响。且综合考虑任务大小及机器现有负载状况,确保负载均衡的有效性,可提升整体查询效率,降低查询响应延迟。尤其是在多查询任务并发执行的情况下,其通过负载均衡,可以更好的满足大数据查询的实时性需求。
附图说明
图1为本实施例的用于分布式文件***中大数据查询的调度方法的流程图;
图2本实施例的流网络示意图;
图3为本实施例的应用最大流方法获得副本选择结果的流程图;
图4本实施例的最大流。
具体实施方式
本发明提出了用于分布式文件***中大数据查询的调度方法,流程如图1所示,主要步骤包括:
1)获得集群负载信息;
任意指定一个节点(可以为NameNode)每隔预设的时间间隔定期采集其他节点也包括自己的负载信息(集群负载信息)。集群负载信息为预估的各个磁盘完成其上I/O任务所需时间。采用集中式的集群负载信息收集机制,即每个节点上有一个负载信息汇报器,整个集群有一个负载信息收集器,负载信息汇报器向负载信息收集器汇报负载信息。
2)根据查询语句构建查询计划树、确定查询种类和需要查询的数据表,且根据查询种类执行如下操作:
若是多表查询,则执行步骤5);否则(即为单表查询),执行步骤3);
3)根据数据表的数据分布构造流网络,其主要步骤包括:
a)对数据表对应的每个数据块b,在流网络中创建顶点vb,即用vb表示b;
b)对每个磁盘d,在流网络中创建顶点vd,即用vd表示d;
c)创建两个特殊的顶点,即虚拟开始顶点s和虚拟结束顶点e;
d)对每个vb,均创建有向边<s,vb>,其容量为1;
e)对每个vd,均创建有向边<vd,e>,其容量为1;
f)若数据块b在磁盘d上有副本,则创建有向边<vb,vd>,其容量为1。
例如,某次单表查询的数据表由数据块b0和数据块b1组成。数据块b0在磁盘d1,d2和d3上有副本,数据块b1在磁盘d2,d3和d4上有副本,则构造出的流网络如图2所示:
图2中的s是虚拟的开始顶点,e是虚拟的结束顶点。图2所示的流网络中所有边的容量均为1。
4)应用最大流方法获得副本选择结果得到最终调度策略并转11);
在上一步构造的流网络的基础上,应用最大流方法获得副本选择结果,流程如图3所示,其主要步骤包括:
a)计算将一个数据块从磁盘读入内存所需最小时间,如式(1)所示:
式(1)
b)计算单表查询所需的查询响应时间的区间,即下限和上限,如式(2)和式(3)所示:
式(2)
式(3)
c)若区间的大小(即上限与下限的差值)小于将一个数据块从磁盘读入内存所需最小时间,则转h);否则,进行步骤d):
d)计算上限和下限的平均值,如式(4)所示:
式(4)
e)以平均值作为响应时间,分别计算各个磁盘顶点到虚拟结束顶点的有向边的容量,并根据得到的容量更新所述的流网络,如式(5)所示:
式(5)
f)对更新后的流网络使用压入重标记算法,计算得到最大流和结束顶点的溢出量;
g)若结束顶点的溢出量excess[ve]等于数据块的数目Nb,则表示存在副本选择策略,将上限更新为平均值,否则,表示不存在副本选择策略,将下限更新为平均值,转c);
h)对流网络使用压入重标记算法得到最大流和结束顶点的溢出量;
i)若虚拟结束顶点的溢出量等于数据块的数目,则以最大流确定各个数据块的副本来源,否则,每个代表磁盘的顶点到虚拟结束顶点的容量增加1,转h)。
例如,对图2所示的流网络应用最大流方法可得到如图4所示的最大流,图中实线表示有流、虚线表示没有流。由图4可知,数据块b0选择磁盘d1上的副本,数据块b1选择磁盘d2上的副本。若从数据块顶点到磁盘顶点有流,则表示选择该磁盘上的副本。
5)进行初始化:计算以负载均衡为目标的调度策略的执行代价,记录从磁盘读取左表数据的节点集合I,其主要步骤包括:
a)根据集群负载信息依次为各个数据表的每个数据块选择副本,每次均选择负载最小(两个磁盘负载相等的时候任意选)的磁盘上的副本;(依次指定的原因是:为前一个指定副本后,需要更新被选择的磁盘的负载信息)
b)使用代价模型计算调度策略的代价(在计算代价和确定策略过程中选定副本后,副本所在磁盘的负载信息都要进行相应的更新,但是只是临时的,由于该操作并未实际执行);
从开始执行时刻tstart到预估所有连接操作完成时刻ctallJoin的时间间隔作为并行执行的代价c,如式(6)所示:
c=ctallJoin-tstart 式(6)
所有连接操作完成时刻ctallJoin由各个执行节点上最后完成的连接操作决定,如式(7)所示:
其中,NtopJoin表示执行顶层连接操作的节点集合,fttopJoin[k]表示节点k完成连接操作的时刻。节点k完成连接操作的时刻ftjoin[k]由其开始执行时刻btjoin[k]和执行时间tjoin[k]决定,如式(8)所示:
ftjoin[k]=btjoin[k]+tjoin[k] 式(8)
tjoin[k]由CPU性能,该操作中左表和右表的大小以及连接结果的大小决定。btjoin[k]等于其左孩子结点数据准备好时刻ftlop[k]和右孩子结点数据准备好时刻ftrop[k]的最大值,如式(9)所示:
btjoin[k]=max(ftlop[k],ftrop[k]) 式(9)
数据准备好时刻是指数据已在内存中。因为右孩子结点的数据需传送到左孩子结点上才能进行连接操作,所以右孩子结点数据准备好时刻为其读磁盘操作结束时刻加上网络传输时间。节点k上读磁盘操作的结束时刻ftscan[k]由其开始执行时刻btscan[k]和执行时间tscan[k]决定,如式(10)所示:
ftscan[k]=btscan[k]+tscan[k] 式(10)
其中,btscan[k]由磁盘负载决定,而tscan[k]由数据量和磁盘读取速率决定。
c)记录负责将最左表的数据从磁盘读入内存的节点集合I;
d)迭代次数t初始化为0。
6)判断迭代次数t是否超过设定的最大迭代次数maxT(本实施例中maxT=100),若是,则得到最终调度策略并转11);
7)若右表的某个数据块的副本所在节点集合U和节点集合I有交集,则随着迭代次数增多,增大在该交集中选择副本的概率,否则在U中选择副本;
除了最左表之外的所有表均为右表,依次改变每个右表的调度策略,主要步骤包括:
a)获得右表的数据块集合;
b)判断是否还有数据块未选择副本,若是,则任选一个数据块,若否,则结束;
c)获得该数据块的副本所在节点集合U;
d)若U与I有交集并且随机数对maxT取余的结果小于t,则从U与I的交集中选择负载最小的节点上的副本,否则从U中选择负载最小的节点上的副本,并更新该副本所在磁盘的负载信息,无论条件是否满足,均转b)。
8)计算新的调度策略的代价;
9)判断当前调度策略是否代价最小,若是,则更新候选的调度策略;
10)迭代次数t增加1,转6),改变右表副本选择;
11)在副本选择的基础上,为查询计划树的叶子结点选择执行节点,若副本所在的节点上有数据查询服务进程,则选择该节点为执行节点,否则,在所有具有数据查询服务进程的节点中选择负载最小的;
12)为查询计划树的非叶子结点选择执行节点,若该结点有两个孩子结点,如连接操作结点,则选择左孩子结点的执行节点,否则,即只有一个孩子结点,如聚集操作结点,则选择该孩子结点的执行节点。
本实施例的调度方法基于分类实现,通过将所有查询分为单表查询和多表查询两类:若是单表查询,则转化为多副本检索优化问题,应用最大流方法选择副本和执行节点;若是多表查询,则结合提出的大数据实时查询并行执行代价模型搜索近似最优调度。该方法可用来减少大数据实时查询的响应时间。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种用于分布式文件***中大数据查询的调度方法,其特征在于,包括如下步骤:
(1)按照预设的时间周期定期获取所述分布式文件***的集群负载信息,所述集群负载为分布式文件***中各个节点的负载信息;
各个节点的负载信息为该节点的磁盘完成当前I/O任务所需的时间;
(2)根据查询语句构建查询计划树、确定查询种类和需要查询的数据表,并根据查询种类为各个需要查询的数据表进行副本选择,得到最终调度策略:
若查询种类为单表查询,则以负载均衡为调度目标并根据所述的集群负载确定需要查询的数据表的最终调度策略;
若查询种类为多表查询,则以查询响应时间最小为调度目标并根据所述的集群负载确定需要查询的数据表的最终调度策略;
(3)根据所述的最终调度策略,为所述查询计划树中各个结点选择执行节点以完成并行查询执行调度。
2.如权利要求1所述的用于分布式文件***的大数据调度方法,其特征在于,所述步骤(1)具体如下:
从分布式文件***中任意选择一个节点作为采集节点,所述的采集节点根据预设的时间周期定期获取所有节点的负载并作为集群负载信息。
3.如权利要求1所述的用于分布式文件***的大数据调度方法,其特征在于,所述时间周期为2~5s。
4.如权利要求1所述的用于分布式文件***的大数据调度方法,其特征在于,所述步骤(2)中当为单表查询时,通过如下步骤得到最终调度策略:
(a1)根据查询语句和所述数据表对应数据块的副本分布构造流网络;
(a2)根据各个数据块的大小和最高磁盘速率计算将一个数据块从磁盘读入内存所需最小时间:
(a3)根据如下公式分别计算单表查询所需的查询响应时间的下限和上限,
(a4)计算查询响应时间的下限和上限的差值,并将所述的差值与将一个数据块从磁盘读入内存所需的最小时间进行比较:若小于,则转步骤(a8),否则,执行步骤(a5);
(a5)以查询响应时间的下限和上限的平均值作为查询响应时间,分别计算各个磁盘顶点到虚拟结束顶点的有向边的容量,并根据得到的容量更新所述的流网络:
(a6)使用压入重标记算法计算更新后的流网络的最大流和结束顶点的溢出量;
(a7)若结束顶点的溢出量等于数据块的数目,则上限更新为平均值,否则,将下限更新为平均值,转步骤(a4);
(a8)利用压入重标记算法计算所述的流网络的最大流和结束顶点的溢出量;
(a9)比较结束顶点的溢出量与数据块的数目的大小关系,若相等则以所述的最大流确定各个数据块的副本来源并得到最终调度策略,否则,将所述流网络中磁盘顶点到结束顶点的容量增加1,并返回步骤(a8)。
5.如权利要求4所述的用于分布式文件***的大数据调度方法,其特征在于,所述步骤(a1)通过如下步骤构建流网络:
针对所有需要查询的数据表对应的所有数据块b,在流网络中创建相应的顶点vb;针对每个磁盘d,在流网络中创建相应的顶点vd;创建两个特殊的顶点作为虚拟的开始顶点s和结束顶点e;对每个顶点vb,均创建有向边<s,vb>,并令容量为1;对每个vd,均创建有向边<vd,e>,并令容量为1;若数据块b在磁盘d上有副本,则创建有向边<vb,vd>,并令容量为1。
6.如权利要求1~5中任意一项所述的用于分布式文件***的大数据调度方法,其特征在于,所述步骤(2)中当为多表查询时,通过如下步骤确定最终调度策略:
(b1)根据查询语句获取需要查询的数据表,并构建查询计划树,根据集群负载信息依次为查询计划树中所有数据表的所有数据块指定副本,每次均选择负载最小的磁盘上的副本,并形成初始调度策略;
(b2)计算初始调度策略的代价,记录用于执行将查询计划树中最左表的数据块从磁盘读入内存的节点集合I,并根据最左表的数据块更新节点集合I中各个节点的负载信息,并将迭代次数t初始化为0;
(b3)判断迭代次数t是否大于设定的最大迭代次数maxT:
若大于,则以所述的初始调度策略作为最终调度策略;
否则,执行如下步骤依次为查询计划树中除最左表外其他数据表的数据块指定副本,并形成中间调度策略:
(b4)计算中间调度策略的代价,并判断中间调度策略的代价是否小于初始调度策略的代价,若小于,则以中间调度策略为初始调度策略,否则不操作;
(b5)使迭代次数t增加1,转步骤(b3)。
7.如权利要求6所述的用于分布式文件***的大数据调度方法,其特征在于,所述的最大迭代次数maxT为50~200。
8.如权利要求7所述的用于分布式文件***的大数据调度方法,其特征在于,所述步骤(b3)中通过如下步骤为除最左表外其他数据表指定副本:
(b3-1)获得当前数据表的数据块集合;
(b3-2)判断数据块集合是否还存在未指定副本的数据块:若不存在,则结束操作,否则,任选一个未指定副本的数据块,并通过如下步骤为其指定副本:
(b3-3)获得该数据块的副本所在节点集合U:
若U与I有交集并且随机数对maxT取余的结果小于t,则从U与I的交集中选择负载最小的节点对应磁盘上的副本,并更新该节点的负载信息,转步骤(b3-2)
否则,从节点集合U中选择负载最小的节点对应磁盘上的副本,并更新该节点的负载信息,转步骤(b3-2)。
9.如权利要求1~5中任意一项所述的用于分布式文件***的大数据调度方法,其特征在于,所述步骤(3)包括如下步骤:
(3-1)为所述查询计划树中的叶子结点选择执行节点:
若最终调度策略中与该叶子结点对应的数据表的各个数据块的副本所在的节点上有数据查询服务进程,则选择该副本所在的节点为执行节点,否则,在所有具有数据查询服务进程的节点中选择负载最小的节点作为执行节点;
(3-2)为查询计划树的非叶子结点选择执行节点:
若该非叶子结点有两个孩子结点,则选择左孩子结点的执行节点作为自身的执行节点,否则,直接选择该孩子结点的执行节点作为自身的执行节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410670696.9A CN104408106B (zh) | 2014-11-20 | 2014-11-20 | 一种用于分布式文件***中大数据查询的调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410670696.9A CN104408106B (zh) | 2014-11-20 | 2014-11-20 | 一种用于分布式文件***中大数据查询的调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104408106A true CN104408106A (zh) | 2015-03-11 |
CN104408106B CN104408106B (zh) | 2017-07-07 |
Family
ID=52645737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410670696.9A Expired - Fee Related CN104408106B (zh) | 2014-11-20 | 2014-11-20 | 一种用于分布式文件***中大数据查询的调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104408106B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740249A (zh) * | 2014-12-08 | 2016-07-06 | Tcl集团股份有限公司 | 一种大数据作业并行调度过程中的处理方法及其*** |
CN106446134A (zh) * | 2016-09-20 | 2017-02-22 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN106569878A (zh) * | 2015-10-08 | 2017-04-19 | 北京奇虎科技有限公司 | 一种分布式定时任务管理方法和*** |
CN106933984A (zh) * | 2017-02-20 | 2017-07-07 | 周长英 | 一种分布式文件***的调度方法及*** |
CN107301205A (zh) * | 2017-06-01 | 2017-10-27 | 华南理工大学 | 一种大数据分布式实时查询方法及*** |
CN108063814A (zh) * | 2017-12-15 | 2018-05-22 | 杭州迪普科技股份有限公司 | 一种负载均衡方法及装置 |
CN108595574A (zh) * | 2018-04-16 | 2018-09-28 | 上海达梦数据库有限公司 | 数据库集群的连接方法、装置、设备及存储介质 |
CN109992594A (zh) * | 2019-03-22 | 2019-07-09 | 跬云(上海)信息科技有限公司 | 基于预计算优化的分布式执行优化方法及*** |
CN111176584A (zh) * | 2019-12-31 | 2020-05-19 | 曙光信息产业(北京)有限公司 | 一种基于混合内存的数据处理方法及装置 |
CN111625696A (zh) * | 2020-07-28 | 2020-09-04 | 北京升鑫网络科技有限公司 | 多源数据分析引擎的分布式调度方法、计算节点及*** |
CN112632116A (zh) * | 2020-12-24 | 2021-04-09 | 苏州浪潮智能科技有限公司 | 一种k-db数据库多节点集群调度的方法、***、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256146A1 (en) * | 2005-06-03 | 2008-10-16 | Itaru Nishizawa | Query processing method for stream data processing systems |
CN101697526A (zh) * | 2009-10-10 | 2010-04-21 | 中国科学技术大学 | 分布式文件***中元数据管理的负载均衡方法及其*** |
US8392680B1 (en) * | 2010-03-30 | 2013-03-05 | Emc International Company | Accessing a volume in a distributed environment |
CN103731498A (zh) * | 2013-12-31 | 2014-04-16 | 浙江鸿程计算机***有限公司 | 一种基于副本选择的大数据实时查询***负载均衡方法 |
-
2014
- 2014-11-20 CN CN201410670696.9A patent/CN104408106B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256146A1 (en) * | 2005-06-03 | 2008-10-16 | Itaru Nishizawa | Query processing method for stream data processing systems |
CN101697526A (zh) * | 2009-10-10 | 2010-04-21 | 中国科学技术大学 | 分布式文件***中元数据管理的负载均衡方法及其*** |
US8392680B1 (en) * | 2010-03-30 | 2013-03-05 | Emc International Company | Accessing a volume in a distributed environment |
CN103731498A (zh) * | 2013-12-31 | 2014-04-16 | 浙江鸿程计算机***有限公司 | 一种基于副本选择的大数据实时查询***负载均衡方法 |
Non-Patent Citations (4)
Title |
---|
ABDELKADERHAMEURLAIN等: "Evolution of Query Optimization Methods", 《LECTURE NOTES IN COMPUTER SCIENCE》 * |
CARMEN ELENA ODUBASTEANU等: "Parallel query optimization:Pipelinedparallelism scheduling and golden number", 《UNIVERSITY POLITEHNICAOF BUCHAREST SCIENTIFIC BULLETIN SERIES C: ELECTRICAL ENGINEERING AND COMPUTER SCIENCE》 * |
周强等: "基于改进DPhyp算法的Impala查询优化", 《计算机研究与发展》 * |
段翰聪等: "分布式结构化数据分页查询中的动态归并算法", 《小型微型计算机***》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740249B (zh) * | 2014-12-08 | 2020-05-22 | Tcl科技集团股份有限公司 | 一种大数据作业并行调度过程中的处理方法及其*** |
CN105740249A (zh) * | 2014-12-08 | 2016-07-06 | Tcl集团股份有限公司 | 一种大数据作业并行调度过程中的处理方法及其*** |
CN106569878A (zh) * | 2015-10-08 | 2017-04-19 | 北京奇虎科技有限公司 | 一种分布式定时任务管理方法和*** |
CN106446134A (zh) * | 2016-09-20 | 2017-02-22 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN106446134B (zh) * | 2016-09-20 | 2019-07-09 | 浙江大学 | 基于谓词规约和代价估算的局部多查询优化方法 |
CN106933984A (zh) * | 2017-02-20 | 2017-07-07 | 周长英 | 一种分布式文件***的调度方法及*** |
CN107301205A (zh) * | 2017-06-01 | 2017-10-27 | 华南理工大学 | 一种大数据分布式实时查询方法及*** |
CN108063814A (zh) * | 2017-12-15 | 2018-05-22 | 杭州迪普科技股份有限公司 | 一种负载均衡方法及装置 |
CN108063814B (zh) * | 2017-12-15 | 2021-09-21 | 杭州迪普科技股份有限公司 | 一种负载均衡方法及装置 |
CN108595574A (zh) * | 2018-04-16 | 2018-09-28 | 上海达梦数据库有限公司 | 数据库集群的连接方法、装置、设备及存储介质 |
CN109992594A (zh) * | 2019-03-22 | 2019-07-09 | 跬云(上海)信息科技有限公司 | 基于预计算优化的分布式执行优化方法及*** |
CN111176584A (zh) * | 2019-12-31 | 2020-05-19 | 曙光信息产业(北京)有限公司 | 一种基于混合内存的数据处理方法及装置 |
CN111176584B (zh) * | 2019-12-31 | 2023-10-31 | 曙光信息产业(北京)有限公司 | 一种基于混合内存的数据处理方法及装置 |
CN111625696A (zh) * | 2020-07-28 | 2020-09-04 | 北京升鑫网络科技有限公司 | 多源数据分析引擎的分布式调度方法、计算节点及*** |
CN112632116A (zh) * | 2020-12-24 | 2021-04-09 | 苏州浪潮智能科技有限公司 | 一种k-db数据库多节点集群调度的方法、***、设备及介质 |
CN112632116B (zh) * | 2020-12-24 | 2022-06-24 | 苏州浪潮智能科技有限公司 | 一种k-db数据库多节点集群调度的方法、***、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104408106B (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104408106A (zh) | 一种用于分布式文件***中大数据查询的调度方法 | |
US11249997B1 (en) | System-wide query optimization | |
CN109492774B (zh) | 一种基于深度学习的云资源调度方法 | |
EP3251034B1 (en) | Query optimization adaptive to system memory load for parallel database systems | |
CN103106249B (zh) | 一种基于Cassandra的数据并行处理*** | |
CN109120715A (zh) | 一种云环境下动态负载均衡方法 | |
Xu et al. | Cadre: Carbon-aware data replication for geo-diverse services | |
CN103930888B (zh) | 基于更新、储存及响应约束的多粒度分组聚合选择 | |
WO2022267791A1 (zh) | 一种基于多目标粒子群算法的工作流调度方法、***及存储介质 | |
CN104750780B (zh) | 一种基于统计分析的Hadoop配置参数优化方法 | |
CN102982489A (zh) | 一种基于海量计量数据的电力客户在线分群方法 | |
CN106446134B (zh) | 基于谓词规约和代价估算的局部多查询优化方法 | |
CN105302858B (zh) | 一种分布式数据库***的跨节点查询优化方法及*** | |
CN111752678A (zh) | 面向边缘计算中分布式协同学习的低功耗容器放置方法 | |
CN106339252B (zh) | 分布式dag***的自适应优化方法和装置 | |
Wu et al. | A deadline-aware estimation of distribution algorithm for resource scheduling in fog computing systems | |
CN102158533B (zh) | 基于QoS的分布式web服务选择方法 | |
US9292405B2 (en) | HANA based multiple scenario simulation enabling automated decision making for complex business processes | |
CN110119399A (zh) | 基于机器学习的业务流程优化方法 | |
CN108304253A (zh) | 基于缓存感知和数据本地性的map任务调度方法 | |
CN102833326A (zh) | 一种基于灰色预测的云存储负载均衡方法 | |
CN110297836A (zh) | 基于压缩位图方式的用户标签存储方法和检索方法 | |
CN108924196A (zh) | 工业互联网绿色能源管理*** | |
US11762831B2 (en) | Adaptive sparse indexing in cloud-based data warehouses | |
CN109039698A (zh) | 工业互联网智能服务处理方法、可读存储介质、终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170707 Termination date: 20201120 |