CN110347489A - 一种基于Spark的多中心数据协同计算的流处理方法 - Google Patents

一种基于Spark的多中心数据协同计算的流处理方法 Download PDF

Info

Publication number
CN110347489A
CN110347489A CN201910629253.8A CN201910629253A CN110347489A CN 110347489 A CN110347489 A CN 110347489A CN 201910629253 A CN201910629253 A CN 201910629253A CN 110347489 A CN110347489 A CN 110347489A
Authority
CN
China
Prior art keywords
task
calculating
client
queue
stream
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
Application number
CN201910629253.8A
Other languages
English (en)
Other versions
CN110347489B (zh
Inventor
李劲松
李润泽
陆遥
王昱
赵英浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhijiang Laboratory
Original Assignee
Zhijiang Laboratory
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhijiang Laboratory filed Critical Zhijiang Laboratory
Priority to CN201910629253.8A priority Critical patent/CN110347489B/zh
Publication of CN110347489A publication Critical patent/CN110347489A/zh
Priority to JP2021533418A priority patent/JP6990802B1/ja
Priority to PCT/CN2020/083593 priority patent/WO2020233262A1/zh
Application granted granted Critical
Publication of CN110347489B publication Critical patent/CN110347489B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了一种基于Spark的多中心数据协同计算的流处理方法,多个客户端生成和提交用户的计算任务请求给计算端,计算端解析请求,生成并执行计算指令;本发明对于多中心的数据计算的需求和操作的执行流处理计算,提高程序执行性能和资源分配效率;设置资源管理的日志和RESTFul,准确调控记录来自多中心的Spark请求任务所占用和需求的内存和线程资源;利用最大最小公平原则的策略,执行对流计算中每一步的资源分配;本发明解决了多中心数据协同计算的大批量的线程阻塞延迟问题,减少单个用户的等待时间,提升资源分配的灵活性和公平程度。

Description

一种基于Spark的多中心数据协同计算的流处理方法
技术领域
本发明属于流处理技术领域,尤其涉及一种基于Spark的多中心数据协同计算的流处理方法。
背景技术
流处理技术(Stream Processing)是一种计算机编程范式,也可以叫做数据流编程或者交互式编程,是一种让计算应用在有限的并行处理模式下获得更高效使用效率的技术。这一类型的技术应用可以在多种运算单元上存在,比如图形运算单元(GraphicProcessing Unit,GPU)或者可编程阵列门电路(Field-programmable Gate Arrays,FPGA),并且不显式的管理内存分配,同步和单元之间的交流。Spark streaming是Spark核心API的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。主要提供的接口为上下文创建StreamingContext,流开始start,流结束stop,缓存cache,Checkpointing等。
多中心数据协同计算是大数据背景下出现的应用场景,多方数据中心需要统筹数据资源以及数据处理的需求,以求为各个单体用户提供更易用和强大的数据处理平台资源。单个个体用户可以选择将自己的数据资源和多方的数据资源整合进行集中分析,同时可以选择多种运算需求,在多中心背景下进行并行计算。
现有的多中心协同分析平台大多为实质上的单中心,即将多方数据库缓存到同一处数据节点,再将多种分析需求逐个进行处理,实际上等价于将所有并发默认到一个流上进行,这种方式会导致大批量的线程阻塞延迟,每个批在队列中的等待时间增加,新加入用户的计算需求很难得到即时的反馈和满足,数据实时性也难以保持。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于Spark的多中心数据协同计算的流处理方法,本发明通过资源管理日志和Spark的流计算实现对多中心数据协同计算的流处理化,将流处理的资源分配优势和多中心化的异质化计算需求进行耦合,提高多中心协同计算的资源分配公平性和数据分析效率,降低计算队列任务等待时间。
本发明的目的是通过以下技术方案来实现的:一种基于Spark的多中心数据协同计算的流处理方法,该方法在多中心数据协同计算系统上实现,所述多中心数据协同计算系统包括若干客户端和一个计算端,所述客户端用于生成和提交用户的计算任务请求给计算端,所述计算端用于解析请求,生成并执行计算指令;该方法包括以下步骤:
(1)在客户端和计算端建立RESTFul服务,记计算任务队列为Q=[(ck,tk,ntk,nmk,Dk)],1≤k≤L,L为计算任务队列Q的长度,任意一个客户端ck向计算端发起一个新的计算任务请求tk,该请求包括计算的线程资源需求ntk、计算内存的需求nmk、对应此任务的待计算数据Dk
(2)计算端解析客户端ck发送的计算任务请求,得到(ck,tk,ntk,nmk,Dk);
(3)计算端将(ck,tk,ntk,nmk,Dk)作为一个元素插入计算任务队列Q,之后发起Scheduling计算,在Scheduling计算中任务队列Q各个元素的计算需求取值按照客户端为单位的最大最小原则进行优化,更新每个元素的ntk和nmk
(4)计算队列Q的长度len(Q)=L,以L为循环边界条件,用Spark.StreamingContext(Spark.StreamingContext为Spark框架下的流处理任务创建指令接口)创建L个流,并用Spark.Conf(Spark.Conf为Spark框架下的流处理任务配置指令接口)声明分配给各个流的资源;对于依次向Spark发起实际的流任务,载入数据Dk,对数据执行计算任务tk,分配的线程资源为ntk,内存资源为nmk;其中,如果Dk中存在中间结果和计算任务元数据,则直接从其对应的步骤开始计算任务。
流1:载入数据D1,对数据执行计算任务t1,分配的线程资源为nt1,内存资源为nm1
流2:载入数据D2,对数据执行计算任务t2,分配的线程资源为nt2,内存资源为nm2
流L:载入数据DL,对数据执行计算任务tL,分配的线程资源为ntL,内存资源为nmL
(5)对于已经在流处理的任务(cl,tl,ntl,nml,Dl),利用StreamingContext.CheckPointing(StreamingContext.CheckPointing为Spark框架下的流处理任务数据持久化指令接口)在流处理过程中的数据读取至HDFS、数据预处理缓存、计算、返回这四个步骤中执行数据流持久化操作,保存中间结果和计算任务元数据至Dl;同时监听队列的更新状况,如果监听到队列更新,则利用StreamingContext.stop(StreamingContext.stop为Spark框架下的流处理任务中止指令接口)停止该流,返回步骤(4);如果完成了流处理过程中的计算任务,则向该流处理任务对应的客户端返回任务处理结果,并将任务从队列Q弹出。
进一步地,所述步骤(3)中,基于客户端的Scheduling计算流程如下:
(3.1)对于队列Q=[(ck,tk,ntk,nmk,Dk)],1≤k≤L,L为计算队列Q的长度,如果客户端存在多条记录,先按照客户端进行求和,得到以客户端为单位的新队列Lmid为Qmid长度,sj为每个客户端发起的任务总数,分别为客户端cj请求的线程资源总数和内存资源总数;
(3.2)对于线程资源,执行如下优化分配流程:
(3.2.1)对于所有客户端的线程资源请求总数队列按大小进行排序得到和下标映射记计算中心计算资源池的总线程资源为NT,则预给的资源为
(3.2.2)如果存在记这个集合为进入步骤(3.2.3);否则输出最终的线程资源分配策略利用下标映射得到对应恢复排序前顺序的线程资源分配策略进入步骤(3.2.4);
(3.2.3)需要重新分配的线程资源为其中|J|为J的元素个数,返回步骤(3.2.2);
(3.2.4)将同一个客户端所分配到的线程资源平均分配给该客户端所对应的所有任务,对于同一cj对应任务Tj={tz|1≤z≤sj},其中为用户cj实际提交的一个任务tz所分配到的线程资源,为(3.2.2)得到的该用户分配到的所有线程资源,sj为用户cj发起的任务总数。
(3.3)对于内存资源,执行如下优化分配流程:
(3.3.1)对于所有客户端的内存资源请求总数队列按大小进行排序得到和下标映射记计算中心计算资源池的总内存资源为NM,则预给的资源为
(3.3.2)如果存在记这个集合为进入步骤(3.2.3);否则输出最终的内存资源分配策略利用下标映射得到对应恢复排序前顺序的内存资源分配策略进入步骤(3.2.4);
(3.3.3)需要重新分配的内存资源为其中|J|为J的元素个数,返回步骤(3.3.2);
(3.3.4)将同一个客户端所分配到的内存资源平均分配给该客户端所对应的所有任务,对于同一cj对应任务Tj={tz|1≤z≤sj},其中为用户cj实际提交的一个任务tz所分配到的内存资源,为(3.2.2)得到的该用户分配到的所有内存资源,sj为用户cj发起的任务总数。
(3.4)从(3.2)和(3.3)中得到的[ntk]和[nmk],重新组成Q=[(ck,tk,ntk,nmk,Dk)]。
本发明的有益效果是:本发明对于多中心的数据计算的需求和操作的执行流处理计算,提高程序执行性能和资源分配效率;设置资源管理的日志和RESTFul,准确调控记录来自多中心的Spark请求任务所占用和需求的内存和线程资源;利用最大最小公平原则的策略,执行对流计算中每一步的资源分配;本发明解决了多中心数据协同计算的大批量的线程阻塞延迟问题,减少单个用户的等待时间,提升资源分配的灵活性和公平程度。
附图说明
图1为本发明中心协同计算流处理方法流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
如图1所示,本发明提供的一种基于Spark的多中心数据协同计算的流处理方法,该方法在多中心数据协同计算系统上实现,所述多中心数据协同计算系统包括若干客户端和一个计算端,所述客户端用于生成和提交用户的计算任务请求给计算端,所述计算端用于解析请求,生成并执行计算指令;该方法包括以下步骤:
(1)在客户端和计算端建立RESTFul服务,记计算任务队列为Q=[(ck,tk,ntk,nmk,Dk)],1≤k≤L,L为计算任务队列Q的长度,任意一个客户端ck向计算端发起一个新的计算任务请求tk,该请求包括计算的线程资源需求ntk、计算内存的需求nmk、对应此任务的待计算数据Dk
(2)计算端解析客户端ck发送的计算任务请求,得到(ck,tk,ntk,nmk,Dk);
(3)计算端将(ck,tk,ntk,nmk,Dk)作为一个元素插入计算任务队列Q,之后发起Scheduling计算,在Scheduling计算中任务队列Q各个元素的计算需求取值按照客户端为单位的最大最小原则进行优化,更新每个元素的ntk和nmk
(4)计算队列Q的长度len(Q)=L,以L为循环边界条件,用Spark.StreamingContext(Spark.StreamingContext为Spark框架下的流处理任务创建指令接口)创建L个流,并用Spark.Conf(Spark.Conf为Spark框架下的流处理任务配置指令接口)声明分配给各个流的资源;对于依次向Spark发起实际的流任务,载入数据Dk,对数据执行计算任务tk,分配的线程资源为ntk,内存资源为nmk;其中,如果Dk中存在中间结果和计算任务元数据,则直接从其对应的步骤开始计算任务。
流1:载入数据D1,对数据执行计算任务t1,分配的线程资源为nt1,内存资源为nm1
流2:载入数据D2,对数据执行计算任务t2,分配的线程资源为nt2,内存资源为nm2
流L:载入数据DL,对数据执行计算任务tL,分配的线程资源为ntL,内存资源为nmL
(5)对于已经在流处理的任务(cl,tl,ntl,nml,Dl),利用StreamingContext.CheckPointing(StreamingContext.CheckPointing为Spark框架下的流处理任务数据持久化指令接口)在流处理过程中的数据读取至HDFS、数据预处理缓存、计算、返回这四个步骤中执行数据流持久化操作,保存中间结果和计算任务元数据至Dl;同时监听队列的更新状况,如果监听到队列更新,则利用StreamingContext.stop(StreamingContext.stop为Spark框架下的流处理任务中止指令接口)停止该流,返回步骤(4);如果完成了流处理过程中的计算任务,则向该流处理任务对应的客户端返回任务处理结果,并将任务从队列Q弹出。
进一步地,所述步骤(3)中,基于客户端的Scheduling计算流程如下:
(3.1)对于队列Q=[(ck,tk,ntk,nmk,Dk)],1≤k≤L,L为计算队列Q的长度,如果客户端存在多条记录,先按照客户端进行求和,得到以客户端为单位的新队列Lmid为Qmid长度,sj为每个客户端发起的任务总数,分别为客户端cj请求的线程资源总数和内存资源总数;
(3.2)对于线程资源,执行如下优化分配流程:
(3.2.1)对于所有客户端的线程资源请求总数队列按大小进行排序得到和下标映射记计算中心计算资源池的总线程资源为NT,则预给的资源为
(3.2.2)如果存在记这个集合为进入步骤(3.2.3);否则输出最终的线程资源分配策略利用下标映射得到对应恢复排序前顺序的线程资源分配策略进入步骤(3.2.4);
(3.2.3)需要重新分配的线程资源为其中|J|为J的元素个数,返回步骤(3.2.2);
(3.2.4)将同一个客户端所分配到的线程资源平均分配给该客户端所对应的所有任务,对于同一cj对应任务Tj={tz|1≤z≤sj},其中为用户cj实际提交的一个任务tz所分配到的线程资源,为(3.2.2)得到的该用户分配到的所有线程资源,sj为用户cj发起的任务总数。
(3.3)对于内存资源,执行如下优化分配流程:
(3.3.1)对于所有客户端的内存资源请求总数队列按大小进行排序得到和下标映射记计算中心计算资源池的总内存资源为NM,则预给的资源为
(3.3.2)如果存在记这个集合为进入步骤(3.2.3);否则输出最终的内存资源分配策略利用下标映射得到对应恢复排序前顺序的内存资源分配策略进入步骤(3.2.4);
(3.3.3)需要重新分配的内存资源为其中|J|为J的元素个数,返回步骤(3.3.2);
(3.3.4)将同一个客户端所分配到的内存资源平均分配给该客户端所对应的所有任务,对于同一cj对应任务Tj={tz|1≤z≤sj},其中为用户cj实际提交的一个任务tz所分配到的内存资源,为(3.2.2)得到的该用户分配到的所有内存资源,sj为用户cj发起的任务总数。
(3.4)从(3.2)和(3.3)中得到的[ntk]和[nmk],重新组成Q=[(ck,tk,ntk,nmk,Dk)]。
以下给出本发明基于Spark的多中心数据协同计算的流处理方法在多中心医学数据协同计算平台上应用的一个具体实例,该实例的实现具体包括以下步骤:
(1)在客户端(3家医院)和计算端(数据中心)建立RESTFul服务,记计算任务队列为
Q=[(“hospital1”,”task1”,8,4,”path1”),(″hospital2″,″task2″,8,8,″path2″),
(″hospital2″,″task3″,4,8,″path3″)],
L=3,第三家医院″hospital3″向计算端发起一个新的计算任务请求″task4″,该请求包括计算的线程资源需求16、计算内存的需求16、对应此任务的待计算数据″path4″;
(2)计算端解析客户端ci发送的计算任务请求,得到(“hospital3”,”task4”,16,16,”path4”);
(3)计算端将(“hospital3”,”task4”,16,16,”path4”)作为一个元素插入计算任务队列Q,
Q=[(“hospital1”,”task1”,8,4,”pathl”),(″hospital2″,″task2″,8,8,″path2″),
(″hospital2″,″task3″,4,8,″path3″),(″hospital3″,″task4″,16,16,″path4″)];
之后发起Scheduling计算,在Scheduling计算中任务队列Q各个元素的计算需求取值按照客户端为单位的最大最小原则进行优化,更新每个元素的ntk和nmk,队列Q取值变为:
Q=[(″hospital1″,″task1″,8,4,″path1″),(″hospital2″,″task2″,5,6.5,″path2″),
(″hospital2″,″task3″,6,6.5,″path3″),(″hospital3″,″task4″,13,15,″path4″)];
其中,Scheduling计算流程如下:
(3.1)对于队列
Q=[(“hospital1”,”task1”,8,4,”path1”),(″hospital2″,″task2″,8,8,″path2″),
(″hospital2″,″task3″,4,8,″path3″),(″hospital3″,″task4″,16,16,″path4″)]
L为计算队列Q的长度L=4,如果客户端″hospital2″存在多条记录,先按照客户端进行求和,得到
Qmid=[(″hospital1″,8,4,1),(″hospital2″,12,16,2),(″hospital1″,16,16,1)],
Lmid为Qmid长度Lmid=3;
(3.2)对于线程资源,执行如下优化分配流程:
(3.2.1)对于所有客户端的线程资源请求总数队列[8,12,16],按大小进行排序得到[8,12,16]和下标映射M=[1,2,3];记计算中心计算资源池的总线程资源为NT=32,则预给[8,12,16]的资源为[10,10,12];
(3.2.2)存在记这个集合为J={1},进入步骤(3.2.3);
(3.2.3)需要重新分配的线程资源为R=10-8=2, 其中|J|为J的元素个数|J|=1,返回步骤(3.2.2);
(3.2.2)不存在所以输出最终的线程资源分配策略Pmid=[8 11 13],利用下标映射得到对应恢复排序前顺序的线程资源分配策略P=[8 11 13],进入步骤(3.2.4);
(3.2.4)对于同一″hospital2″对应任务z=2,3,
(3.3)对于内存资源,执行如下优化分配流程:
(3.3.1)对于所有客户端的内存资源请求总数队列[4 16 16],按大小进行排序得到[4 16 16]和下标映射M=[1 2 3];记计算中心计算资源池的总内存资源为32,则预给[416 16]的资源为[10 10 12];
(3.3.2)存在记这个集合为J={1},进入步骤(3.3.3);
(3.3.3)需要重新分配的线程资源为R=10-4=6, 其中|J|=1为J的元素个数,返回步骤(3.3.2);
(3.3.2)不存在输出最终的线程资源分配策略Pmid=[41315],利用下标映射得到对应恢复排序前顺序的线程资源分配策略P=[41315],进入步骤(3.3.4);
(3.3.4)对于同一″hospital2″对应任务z=2,3,
(3.4)从(3.2)和(3.3)中得到的[ntk]和[nmk],重新组成
Q=[(″hospital1″,″task1″,8,4,″path1″),(″hospital2″,″task2″,5,6.5,″path2″),
(″hospital2″,″task3″,6,6.5,″path3″),(″hospital3″,″task4″,13,15,″path4″)]
(4)计算队列Q的长度len(Q)=4,以4为循环边界条件,用Spark.StreamingContext(Spark.StreamingContext为Spark框架下的流处理任务创建指令接口)创建4个流,并用Spark.Conf(Spark.Conf为Spark框架下的流处理任务配置指令接口)声明分配给各个流的资源;对于依次向Spark发起实际的流任务,
流1:载入数据″path1″,对数据执行计算任务″task1″,分配的线程资源为9,内存资源为4;
流2:载入数据″path2″,对数据执行计算任务″task2″,分配的线程资源为9,内存资源为9;
流3:载入数据″path3″,对数据执行计算任务″task3″,分配的线程资源为4,内存资源为9;
流4:载入数据″path4″,对数据执行计算任务″task4″,分配的线程资源为10,内存资源为10;
其中,如果流1、流2、流3中检查存在中间结果和计算任务元数据,则直接从其对应的步骤开始计算任务。
(5)对于已经在流处理的任务
Q=[(″hospital1″,″task1″,8,4,″path1″),(″hospital2″,″task2″,5,6.5,″path2″),
(″hospital2″,″task3″,6,6.5,″path3″),(″hospital3″,″task4″,13,15,″path4″)]
利用StreamingContext.CheckPointing(StreamingContext.CheckPointing为Spark框架下的流处理任务数据持久化指令接口)在流处理过程中的数据读取至HDFS、数据预处理缓存、计算、返回这四个步骤中执行数据流持久化操作,保存中间结果和计算任务元数据至path1,path2,path3,path4;同时监听队列的更新状况,如果监听到队列更新,则利用StreamingContext.stop(StreamingContext.stop为Spark框架下的流处理任务中止指令接口)停止该流,返回步骤(4);如果完成了流处理过程中的计算任务,则向该流处理任务对应的客户端返回任务处理结果,并将任务从队列Q弹出。
以上仅为本发明的实施实例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,不经过创造性劳动所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (2)

1.一种基于Spark的多中心数据协同计算的流处理方法,其特征在于,该方法在多中心数据协同计算系统上实现,所述多中心数据协同计算系统包括若干客户端和一个计算端,所述客户端用于生成和提交用户的计算任务请求给计算端,所述计算端用于解析请求,生成并执行计算指令;该方法包括以下步骤:
(1)在客户端和计算端建立RESTFul服务,记计算任务队列为Q=[(ck,tk,ntk,nmk,Dk)],1≤k≤L,L为计算任务队列Q的长度,任意一个客户端ck向计算端发起一个新的计算任务请求tk,该请求包括计算的线程资源需求ntk、计算内存的需求nmk、对应此任务的待计算数据Dk
(2)计算端解析客户端ck发送的计算任务请求,得到(ck,tk,ntk,nmk,Dk)。
(3)计算端将(ck,tk,ntk,nmk,Dk)作为一个元素插入计算任务队列Q,之后发起Scheduling计算,在Scheduling计算中任务队列Q各个元素的计算需求取值按照客户端为单位的最大最小原则进行优化,更新每个元素的ntk和nmk
(4)计算队列Q的长度len(Q)=L,以L为循环边界条件,用Spark.StreamingContext创建L个流,并用Spark.Conf声明分配给各个流的资源;对于依次向Spark发起实际的流任务k,载入数据Dk,执行计算任务tk,分配其满足计算的线程资源需求ntk的线程数,分配满足计算内存的需求nmk;其中,如果Dk中存在中间结果和计算任务元数据,则直接从其对应的步骤开始计算任务。
(5)对于已经在流处理的任务(cl,tl,ntl,nml,Dl),利用StreamingContext.CheckPointing在流处理过程中的数据读取至HDFS、数据预处理缓存、计算、返回这四个步骤中执行数据流持久化操作,保存中间结果和计算任务元数据至Dl;同时监听队列的更新状况,如果监听到队列更新,则利用StreamingContext.stop停止该流,返回步骤(4);如果完成了流处理过程中的计算任务,则向该流处理任务对应的客户端返回任务处理结果,并将任务从队列Q弹出。
2.根据权利要求1所述的一种基于Spark的多中心数据协同计算的流处理方法,其特征在于,所述步骤(3)中,基于客户端的Scheduling计算流程如下:
(3.1)对于队列Q=[(ck,tk,ntk,nmk,Dk)],1≤k≤L,L为计算队列Q的长度,如果客户端存在多条记录,先按照客户端进行求和,得到以客户端为单位的新队列Lmid为Qmid长度,sj为每个客户端发起的任务总数,分别为客户端cj请求的线程资源总数和内存资源总数。
(3.2)对于线程资源,执行如下优化分配流程:
(3.2.1)对于所有客户端的线程资源请求总数队列按大小进行排序得到和下标映射记计算中心计算资源池的总线程资源为NT,则预给的资源为
(3.2.2)如果存在记这个集合为进入步骤(3.2.3);否则输出最终的线程资源分配策略利用下标映射得到对应恢复排序前顺序的线程资源分配策略进入步骤(3.2.4);
(3.2.3)需要重新分配的线程资源为其中|J|为J的元素个数,返回步骤(3.2.2);
(3.2.4)将同一个客户端所分配到的线程资源平均分配给该客户端所对应的所有任务,对于同一cj对应任务Tj={tz|1≤z≤sj},其中为用户cj实际提交的一个任务tz所分配到的线程资源,为(3.2.2)得到的该用户分配到的所有线程资源,sj为用户cj发起的任务总数。
(3.3)对于内存资源,执行如下优化分配流程:
(3.3.1)对于所有客户端的内存资源请求总数队列按大小进行排序得到和下标映射记计算中心计算资源池的总内存资源为NM,则预给的资源为
(3.3.2)如果存在记这个集合为进入步骤(3.2.3);否则输出最终的内存资源分配策略利用下标映射得到对应恢复排序前顺序的内存资源分配策略进入步骤(3.2.4);
(3.3.3)需要重新分配的内存资源为其中|J|为J的元素个数,返回步骤(3.3.2);
(3.3.4)将同一个客户端所分配到的内存资源平均分配给该客户端所对应的所有任务,对于同一cj对应任务Tj={tz|1≤z≤sj},其中为用户cj实际提交的一个任务tz所分配到的内存资源,为(3.2.2)得到的该用户分配到的所有内存资源,sj为用户ci发起的任务总数。
(3.4)从(3.2)和(3.3)中得到的[ntk]和[nmk],重新组成Q=[(ck,tk,ntk,nmk,Dk)]。
CN201910629253.8A 2019-07-12 2019-07-12 一种基于Spark的多中心数据协同计算的流处理方法 Active CN110347489B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910629253.8A CN110347489B (zh) 2019-07-12 2019-07-12 一种基于Spark的多中心数据协同计算的流处理方法
JP2021533418A JP6990802B1 (ja) 2019-07-12 2020-04-07 Sparkに基づくマルチセンターのデータ協調コンピューティングのストリーム処理方法
PCT/CN2020/083593 WO2020233262A1 (zh) 2019-07-12 2020-04-07 一种基于Spark的多中心数据协同计算的流处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910629253.8A CN110347489B (zh) 2019-07-12 2019-07-12 一种基于Spark的多中心数据协同计算的流处理方法

Publications (2)

Publication Number Publication Date
CN110347489A true CN110347489A (zh) 2019-10-18
CN110347489B CN110347489B (zh) 2021-08-03

Family

ID=68176115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910629253.8A Active CN110347489B (zh) 2019-07-12 2019-07-12 一种基于Spark的多中心数据协同计算的流处理方法

Country Status (3)

Country Link
JP (1) JP6990802B1 (zh)
CN (1) CN110347489B (zh)
WO (1) WO2020233262A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955526A (zh) * 2019-12-16 2020-04-03 湖南大学 一种用于在分布式异构环境下实现多gpu调度的方法和系统
WO2020233262A1 (zh) * 2019-07-12 2020-11-26 之江实验室 一种基于Spark的多中心数据协同计算的流处理方法
CN115242877A (zh) * 2022-09-21 2022-10-25 之江实验室 面向多K8s集群的Spark协同计算、作业方法及装置
US11954525B1 (en) 2022-09-21 2024-04-09 Zhejiang Lab Method and apparatus of executing collaborative job for spark faced to multiple K8s clusters

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115081936B (zh) * 2022-07-21 2022-11-18 之江实验室 面向应急条件下多遥感卫星观测任务调度的方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335376A (zh) * 2014-06-23 2016-02-17 华为技术有限公司 一种流处理方法、装置及系统
WO2017106718A1 (en) * 2015-12-17 2017-06-22 Kersplody Corporation Method and apparatus for execution of distrubuted workflow processes
CN107193652A (zh) * 2017-04-27 2017-09-22 华中科技大学 容器云环境中流数据处理系统的弹性资源调度方法及系统
CN107291843A (zh) * 2017-06-01 2017-10-24 南京邮电大学 基于分布式计算平台的层次聚类改进方法
CN108804211A (zh) * 2018-04-27 2018-11-13 西安华为技术有限公司 线程调度方法、装置、电子设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100542139C (zh) 2006-12-31 2009-09-16 华为技术有限公司 一种基于任务分组的资源分配方法和装置
KR101638136B1 (ko) 2015-05-14 2016-07-08 주식회사 티맥스 소프트 멀티 스레드 구조에서 작업 분배 시 스레드 간 락 경쟁을 최소화하는 방법 및 이를 사용한 장치
US10120721B2 (en) 2015-08-28 2018-11-06 Vmware, Inc. Pluggable engine for application specific schedule control
CN105930373A (zh) * 2016-04-13 2016-09-07 北京思特奇信息技术股份有限公司 一种基于spark streaming的大数据流处理方法和系统
US10554577B2 (en) * 2017-03-14 2020-02-04 International Business Machines Corporation Adaptive resource scheduling for data stream processing
CN107870763A (zh) 2017-11-27 2018-04-03 深圳市华成峰科技有限公司 用于创建海量数据实时分拣系统的方法及其装置
CN108037998B (zh) * 2017-12-01 2019-05-24 北京工业大学 一种面向Spark Streaming平台的数据接收通道动态分配方法
CN109684078A (zh) * 2018-12-05 2019-04-26 苏州思必驰信息科技有限公司 用于spark streaming的资源动态分配方法和系统
CN110347489B (zh) * 2019-07-12 2021-08-03 之江实验室 一种基于Spark的多中心数据协同计算的流处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335376A (zh) * 2014-06-23 2016-02-17 华为技术有限公司 一种流处理方法、装置及系统
WO2017106718A1 (en) * 2015-12-17 2017-06-22 Kersplody Corporation Method and apparatus for execution of distrubuted workflow processes
CN107193652A (zh) * 2017-04-27 2017-09-22 华中科技大学 容器云环境中流数据处理系统的弹性资源调度方法及系统
CN107291843A (zh) * 2017-06-01 2017-10-24 南京邮电大学 基于分布式计算平台的层次聚类改进方法
CN108804211A (zh) * 2018-04-27 2018-11-13 西安华为技术有限公司 线程调度方法、装置、电子设备及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020233262A1 (zh) * 2019-07-12 2020-11-26 之江实验室 一种基于Spark的多中心数据协同计算的流处理方法
CN110955526A (zh) * 2019-12-16 2020-04-03 湖南大学 一种用于在分布式异构环境下实现多gpu调度的方法和系统
CN115242877A (zh) * 2022-09-21 2022-10-25 之江实验室 面向多K8s集群的Spark协同计算、作业方法及装置
CN115242877B (zh) * 2022-09-21 2023-01-24 之江实验室 面向多K8s集群的Spark协同计算、作业方法及装置
US11954525B1 (en) 2022-09-21 2024-04-09 Zhejiang Lab Method and apparatus of executing collaborative job for spark faced to multiple K8s clusters

Also Published As

Publication number Publication date
JP6990802B1 (ja) 2022-01-12
WO2020233262A1 (zh) 2020-11-26
CN110347489B (zh) 2021-08-03
JP2022508354A (ja) 2022-01-19

Similar Documents

Publication Publication Date Title
CN110347489A (zh) 一种基于Spark的多中心数据协同计算的流处理方法
CN109075988B (zh) 任务调度和资源发放系统和方法
CN105718364B (zh) 一种云计算平台中计算资源能力动态评估方法
Selvarani et al. Improved cost-based algorithm for task scheduling in cloud computing
CN101359333B (zh) 一种基于隐含狄利克雷分配模型的并行数据处理方法
Rogers et al. A variable warp size architecture
CN108932548A (zh) 一种基于fpga的稀疏度神经网络加速系统
CN108845874B (zh) 资源的动态分配方法及服务器
CN107329828A (zh) 一种面向cpu/gpu异构集群的数据流编程方法和系统
CN110050261A (zh) 计算资源分配
CN102567077A (zh) 一种基于博弈论的虚拟化资源分配方法
CN112130966A (zh) 任务调度方法和系统
CN106681823A (zh) 一种处理MapReduce数据倾斜的负载均衡方法
Zhang et al. Fine-grained multi-query stream processing on integrated architectures
CN108536528A (zh) 应用感知的大规模网格作业调度方法
Shi et al. MapReduce short jobs optimization based on resource reuse
Liu et al. Exploring query processing on cpu-gpu integrated edge device
CN110222410A (zh) 一种基于Hadoop MapReduce的电磁环境仿真方法
Vargas-Solar et al. JITA4DS: disaggregated execution of data science pipelines between the edge and the data centre
Li et al. Toward optimal operator parallelism for stream processing topology with limited buffers
Rafique et al. Symphony: A scheduler for client-server applications on coprocessor-based heterogeneous clusters
Hsu et al. A job scheduling design for visualization services using GPU clusters
Zhao et al. Multitask oriented GPU resource sharing and virtualization in cloud environment
Varrette et al. Optimizing the Resource and Job Management System of an Academic HPC & Research Computing Facility
Wang et al. SingleCaffe: an efficient framework for deep learning on a single node

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant