KR20190007043A - 재구성가능한 분산 처리 - Google Patents

재구성가능한 분산 처리 Download PDF

Info

Publication number
KR20190007043A
KR20190007043A KR1020187036267A KR20187036267A KR20190007043A KR 20190007043 A KR20190007043 A KR 20190007043A KR 1020187036267 A KR1020187036267 A KR 1020187036267A KR 20187036267 A KR20187036267 A KR 20187036267A KR 20190007043 A KR20190007043 A KR 20190007043A
Authority
KR
South Korea
Prior art keywords
configuration
data elements
data
processing
components
Prior art date
Application number
KR1020187036267A
Other languages
English (en)
Other versions
KR102181640B1 (ko
Inventor
제프리 뉴번
크레이그 더블유. 스탠필
Original Assignee
아브 이니티오 테크놀로지 엘엘시
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 아브 이니티오 테크놀로지 엘엘시 filed Critical 아브 이니티오 테크놀로지 엘엘시
Publication of KR20190007043A publication Critical patent/KR20190007043A/ko
Application granted granted Critical
Publication of KR102181640B1 publication Critical patent/KR102181640B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • 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/5061Partitioning or combining of resources
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Peptides Or Proteins (AREA)

Abstract

데이터 컬렉션의 분산 처리는 분산 처리 시스템을 구성하기 위한 정보를 수신하는 것을 포함한다. 연산 자원들(190~194) 간에 분산되어 있는 데이터 요소들을 처리하도록 구성된 작업자들(240)과 데이터 요소들의 소스들(110)을 포함하는, 컴포넌트들의 제1 구성이 형성된다. 각 데이터 요소는, 분할 규칙에 따라 작업자들의 서브세트를 식별하는 분할 값을 포함한다. 데이터 요소들은 제1 처리 에포크에 데이터 컬렉션의 제1 일부에 대하여 소스들로부터 수락되며, 데이터 요소들은 제1 구성을 통해 라우팅된다. 데이터 컬렉션의 제1 일부를 수락한 후, 제2 구성으로의 구성 변경이 개시된다. 컴포넌트들의 구성들 간의 연속된 적어도 두 개의 천이는 연속되는 수정된 구성들에 대하여 수행되며, 이러한 수정된 구성들 중 최종 구성이 제2 구성에 해당한다. 추가 데이터 요소들은 제2 처리 에포크에 제2 구성의 소스들로부터 수락된다.

Description

재구성가능한 분산 처리
관련 출원에 대한 상호 참조
본원은, 2016년 5월 17일자로 출원된 미국 출원번호 제62/337,422호에 대한 우선권을 주장한다.
본 발명은, 재구성가능한 분산 처리 방안에 관한 것으로서, 더욱 구체적으로는, 처리 로커스(processing locus)의 개수의 변화 또는 데이터 생산자나 소비자 로커스의 개수의 변화에 응답하여 재구성가능한 분산 처리 방안에 관한 것이다.
데이터 요소들의 세트의 분산 처리는, 데이터 요소들의 다수의 생산자(즉, 각각이 데이터 생산의 로커스임), 예컨대, 상이한 컴퓨터 서버들, 또는 멀티프로세서 시스템 내의 물리적 또는 논리적 프로세서들을 사용할 수 있으며, 이러한 각 프로세서는, 처리될 데이터의 일부에 대하여 (예를 들어, 데이터베이스로부터의) 데이터 액세스 또는 (예를 들어, 디스크 파일 시스템으로부터의) 데이터 저장을 제공한다. 유사하게, 처리 결과는, 다수의 데이터 소비(예를 들어, 처리, 저장, 송신) 로커스에 전송될 수 있고, 이러한 로커스는 다시 컴퓨터 서버들이나 프로세서들의 세트일 수 있다. 처리 자체는 상이한 처리 로커스들 간에 분산될 수 있으며, 예를 들어, 각 로커스는, 개별적인 컴퓨터 서버 또는 서버 상의 프로세서 등의 상이한 물리적 자원, 또는 서버 상의 운영 체제 프로세스 및/또는 운영 체제 프로세스 내의 처리의 스레드 등의 논리적 자원에 연관된다. 처리를 조정하는 한 가지 방안은, 예를 들어, 그래프 기반 데이터 플로우 아키텍처에서 생산자, 처리, 및 소비자 로커스의 배열을 결정하는 것이다.
분산 처리에 대한 한 가지 방안은, "Executing Graph-Based Program Specifications"라는 명칭으로 2016년 3월 3일에 공개된 미국 특허출원공개공보 제2016/0062776호에 개시되어 있으며, 이 문헌은 본원에 참고로 원용된다. 이 시스템의 한 가지 양태는, 컬렉션의 요소들의 엄격한 순서화를 반드시 요구하는 것 없이 데이터 컬렉션의 모든 데이터 요소가 처리되는 "forall" 연산의 구현이다. 일반적으로, 데이터 요소들의 소스는 다수의 연산 자원(예를 들어, 서버)에 걸쳐 분산되고, 데이터 요소들의 처리 결과가 다수의 연산 자원에 걸쳐 분산된다.
일부 경우에, 데이터 컬렉션의 데이터 요소들을 처리하는 데에는, 요소들의 처리의 순서화 및/또는 동시성에 제약이 없으며, 자원들 간의 연산 부하 및/또는 저장 부하의 분산은 주로 효율 고려 사항에 기초한다.
다른 경우에는, 두 가지 유형의 제약 중 하나 또는 모두가 있을 수 있다. 이하에서 "분할 제약"(partitioning constraint)이라고 칭하는 제1 제약은, 데이터 요소들의 소정의 서브세트들의 엄격한 순서화를 유지하는 것에 관련된다. 이러한 제약을 특정하기 위해, 각 요소는 "분할 키" 필드를 포함할 수 있고, 제약은, (a) 동일한 분할 키 값을 갖는 데이터 요소들 및 (b) 데이터 소스의 동일한 부분으로부터(즉, 동일한 저장 장치나 동일한 서버로부터) 검색되는 데이터 요소들을 위한 것이며, 처리 로커스에 도달하는 데이터 요소들의 순서는, 데이터 요소들이 그 데이터 소스로부터 검색되는 순서와 동일하도록 보장된다. 일반적으로, 처리 로커스에 도달하는 데이터 요소들의 처리는 동시에 처리될 수 있다.
이하에서 "동시성 제약"(concurrency constraint)이라고 칭하는 제2 제약은, 처리 로커스에서 데이터 요소들의 소정의 서브세트 내의 요소들의 동시 처리를 방지하는 것에 관련된다. 이러한 제약을 특정하기 위해, 각 요소는 "동시성 키" 필드를 포함할 수 있고, 제약은, 동일한 동시성 키를 갖는 두 개의 데이터 요소가 그 처리 로커스에서 동시에 처리될 수 없다는 것이다.
제약들 중 어느 하나는 시스템에 의해 데이터 요소들을 처리하는 데 단독으로 적용될 수 있고, 또는 제약 모두가 처리에 함께 적용될 수 있다. 일부 예에서, 동시성 키의 동일한 값을 갖는 두 개의 데이터 요소는 분할 키(예를 들어, 동시성 키는 분할 키의 "확장"임)의 동일한 값을 갖도록 보장되지만, 보다 일반적으로, 동시성 키 값은 데이터 요소의 분할 키 값과 관계가 없다. 동시성 키가 분할 키의 확장인 경우(또는 분할이 동일한 동시성 키를 갖는 데이터 요소에 대해 고유한 경우), 동시성 제약은, 동일한 동시성 키를 갖는 두 개의 데이터 요소가 시스템의 임의의 처리 로커스에서 동시에 처리되지 않음을 보장한다.
위에서 명시된 분할 및/또는 동시성 제약을 충족시키는 방식으로 데이터 컬렉션의 요소들의 "forall" 처리를 연산 자원들의 세트에 걸쳐 분산하는 방법을 제공할 필요가 있다. 또한, 분할과 시퀀싱 제약을 계속 충족시키면서 연산 자원들의 재구성 또는 재할당을 허용하도록 처리를 분산하는 방법이 필요하다.
일 양태에서, 일반적으로, 데이터 컬렉션의 분산 처리 방법은, 입력 장치 또는 포트를 통해 분산 처리 시스템을 구성하기 위한 정보를 수신하는 단계를 포함하고, 구성은 분산 처리 시스템의 컴포넌트들의 제1 구성을 형성하는 것을 포함한다. 제1 구성은, 데이터 컬렉션의 데이터 요소들의 복수의 소스, 및 데이터 컬렉션의 데이터 요소들을 처리하도록 구성된 복수의 작업자(worker)를 포함하고, 소스들과 작업자들은 복수의 연산 자원 간에 분산된다. 각 데이터 요소는, 컴포넌트들의 제1 구성의 분할 규칙에 따라 제1 구성의 복수의 작업자의 서브세트를 식별하는 분할 값을 포함한다. 데이터는 적어도 2개의 처리 에포크 동안 분산 처리 시스템에서 처리되며, 처리는 다음의 단계들을 포함한다. 데이터 요소들은, 제1 처리 에포크에 데이터 컬렉션의 제1 일부에 대한 소스들로부터 수락되며, 이들 데이터 요소는 제1 구성을 통해 라우팅된다. 처리는 제1 일부의 데이터 요소들 중 적어도 일부에 대해 완료되는 한편, 제1 일부의 다른 데이터 요소들(즉, 처리가 완료된 데이터 요소들이 아닌 것)은 제1 구성의 컴포넌트들에서 큐잉(queue)된 상태에 있다. 데이터 컬렉션의 제1 일부를 수락한 후, 제1 구성으로부터 제2 구성으로의 분산 처리 시스템의 구성 변경이 개시된다. 구성 변경을 개시한 후, 시스템의 컴포넌트들의 구성들 간의 2개 이상의 천이가 연속되어 컴포넌트들의 수정된 구성들의 연속을 형성한다. 각 천이 후에, 수정된 구성들의 컴포넌트들 간에 데이터 요소들이 전달된다. 수정된 구성들 중 마지막 것이 제2 구성에 해당하므로, 제1 구성으로부터 제2 구성으로의 천이를 완료한다. 제2 구성으로의 천이를 완료한 후, 데이터 컬렉션의 추가 데이터 요소들은 제2 처리 에포크에 제2 구성의 복수의 소스로부터 수락된다.
양태들은 다음의 특징들 중 하나 이상을 포함할 수 있다.
복수의 연산 자원은 통신 링크를 통해 결합된 복수의 프로세서를 포함한다.
복수의 연산 자원은 복수의 프로세서의 각각에서 실행되는 적어도 하나의 처리 스레드를 포함하고, 각 연산 자원은 별개의 처리 스레드에 연관된다.
데이터 요소들의 각 소스는 해당 소스로부터 데이터 요소들을 수락하도록 구성된 분할자 모듈에 결합되고, 각 분할자는 분할 규칙에 따라 식별된 작업자로 데이터 요소들을 향하게 하도록 분할 규칙으로 구성된다.
시스템의 컴포넌트들의 구성들 간의 2개 이상의 천이가 연속되는 제1 천이를 수행하는 것은, 분할자 모듈의 동작 일시정지, 분할자 모듈에서의 소스로부터의 데이터 요소들의 수락 중지, 수정된 분할 규칙에 의한 복수의 분할 모듈의 재구성, 및 소스로부터 수락된 데이터 요소들의 적어도 하나의 큐를 결합하여 데이터 요소들을 수정된 분할로 재구성된 분할 모듈에 제공하는 것을 포함한다.
각 분할자 모듈은 상기 분할자 모듈에 결합된 소스와 동일한 연산 자원 상에 호스팅되며, 상기 소스로부터 상기 분할자로 데이터 요소들을 패스하는 것은 프로세서간 통신을 필요로 하지 않고 수행된다.
복수의 작업자는 하나 이상의 작업자를 포함하고, 상기 하나 이상의 작업자의 각 작업자는, 복수의 분할자 모듈로부터의 데이터 요소들을 수락하도록 구성된 수락자 모듈에 결합된다.
시스템의 컴포넌트들의 구성들 간의 2개 이상의 천이가 연속되는 제1 천이를 수행하는 것은, 분할자 모듈의 동작 일시정지, 분할자 모듈에서의 소스로부터의 데이터 요소의 수락 중지, 복수의 수락자 모듈의 동작 일시정지, 복수의 분할 모듈을 수정된 분할 규칙으로 재구성, 및 복수의 수락자 모듈의 한 수락자 모듈의 적어도 하나의 큐를 결합하여 데이터 요소들을 수정된 분할로 재구성된 분할 모듈에 제공하는 것을 포함한다.
각 수락자 모듈은 상기 수락자 모듈에 결합된 작업자와 동일한 연산 자원 상에 호스팅되고, 데이터 요소들을 상기 수락자 모듈로부터 상기 작업자로 패스하는 것은 프로세서간 통신을 필요로 하지 않고 수행된다.
제1 분할자 모듈은 제1 수락자 모듈과 동일한 연산 자원 상에 호스팅되고, 제2 수락자 모듈과는 다른 연산 자원 상에 호스팅된다. 데이터 요소들을 라우팅하는 것은, 프로세서간 통신을 필요로 하지 않고 제1 분할자 모듈로부터 제1 수락자 모듈로 데이터 요소들을 패스하는 것을 포함하고, 데이터 요소들을 라우팅하는 것은, 상기 데이터 요소들을 제2 수락자 모듈에 패스하기 위한 프로세서간 통신 전에 데이터 요소들을 상기 제1 분할자 모듈에서 큐잉하는 것을 포함한다.
복수의 작업자는 하나 이상의 작업자를 포함하고, 상기 하나 이상의 작업자의 각 작업자는, 복수의 분할자 모듈로부터의 데이터 요소들을 수락하도록 구성된 수락자 모듈에 결합된다.
데이터 요소들은, 분할자 모듈들 중 임의의 하나로부터 선입선출 순서로 수신된다.
각 데이터 요소는 직렬화 값을 더 포함하고, 제1 처리 에포크 동안, 제1 구성을 사용하는 처리는, 동일한 직렬화 값을 갖는 2개의 데이터 요소가 작업자에 의해 서로 동시에 처리되지 않게 하는 직렬화 정책을 실시한다.
복수의 작업자는 하나 이상의 작업자를 포함하고, 상기 하나 이상의 작업자의 각 작업자는, 복수의 분할자 모듈로부터 데이터 요소들을 수락하도록 구성된 수락자 모듈에 결합되고, 수락자 모듈은, 동일한 직렬화 값을 갖는 두 개의 데이터 요소가 상기 수락자 모듈에 결합된 작업자에 의해 서로 동시에 처리되지 않게 하는 직렬화 정책을 실시하도록 구성된다.
제1 처리 에포크 후이면서 제2 처리 에포크 전에, 각각의 수정된 구성에 따른 처리가 계속해서 직렬화 정책을 실시한다.
제1 처리 에포크 동안, 컴포넌트들의 제1 구성을 사용하는 처리는, 제1 순서로 제1 데이터 소스로부터 수락되는 동일한 분할 값을 갖는 모든 데이터 요소가 복수의 작업자의 동일한 서브세트에 제1 순서로 제공되게 하는 분할 정책을 실시한다.
제1 처리 에포크 후이면서 제2 처리 에포크 전에, 제1 에포크에 처리를 완료하지 않았으며 제1 데이터 소스로부터 수락되는 동일한 분할 값을 갖는 데이터의 제1 일부의 데이터 요소들은, 동일한 작업자에 제1 순서로 제공된다.
상기 데이터 요소들 중 적어도 일부는 수정된 구성들의 컴포넌트들 간에 전달된다.
컴포넌트들의 제2 구성은, (a) 분할 규칙, (b) 소스들의 세트, 및 (c) 작업자들의 세트 중 적어도 하나에 있어서 제1 구성과 다르다. 예를 들어, 분할 규칙은, 분할을 수행하는 데 사용되는 맵핑 또는 형성되는 분할 수 중 어느 하나에 있어서 또는 둘 다에 있어서 다를 수 있고, 소스들의 세트는, 사용되는 소스들의 수 또는 연산 자원들을 호스팅하는 서버들 상의 소스들의 배치 중 어느 하나에 있어서 또는 둘 다에 있어서 다를 수 있고, 작업자들의 세트는, 사용되는 작업자들의 수 또는 연산 자원들을 호스팅하는 서버들 상의 작업자들의 배치 중 어느 하나에 있어서 또는 둘 다에 있어서 다를 수 있다.
다른 일 양태에서, 일반적으로, 비일시적 기계 판독가능 매체 상에 저장되는 소프트웨어는, 매체 상에 저장되는 명령어를 포함한다. 명령어는, 데이터 처리 시스템의 하나 이상의 프로세서에 의해 실행되는 경우, 데이터 처리 시스템이 전술한 방법들 중 임의의 방법의 단계 모두를 수행하게 한다.
또 다른 일 양태에서, 일반적으로, 분산 처리 시스템은, 복수의 처리 엔진을 포함하고, 상기 처리 엔진들 간에 분산되어 있는 컴포넌트들의 구성들을 실행하도록 구성된다. 시스템은, 하나 이상의 데이터 소스로부터의 데이터 요소들의 처리 동안, 전술한 방법들 중 임의의 방법의 단계 모두를 수행하도록 구성된다.
양태들은 다음의 이점들 중 하나 이상을 가질 수 있다.
시스템의 컴포넌트들의 재구성은, 시스템의 모든 컴포넌트의 완전한 정지(quiescence)를 필요로 하지 않고 데이터 요소들의 컬렉션의 처리 동안 수행될 수 있다. 그 결과, 전체 효율 또는 처리량이 다른 방안들에 비해 개선된다. 재구성은, 예를 들어, 처리되고 있는 데이터 요소들의 특징 또는 상기 처리에 적용되도록 이용가능한 연산 자원들의 특징에 매칭하기 위한 가용 자원들의 더욱 효율적인 사용에 관한 이유를 비롯하여 다양한 이유로 개시(initiated) 될 수 있다.
본 발명의 다른 특징과 이점은 다음의 설명과 청구범위로부터 명백하다.
도 1a는 컴포넌트들을 처리하기 위한 분할 그룹, 수락 그룹, 및 작업 그룹을 포함하는 분산 처리 구성의 블록도이고, 도 1b는 도 1a의 구성에 수락 그룹 및 작업 그룹을 추가하는 분산 처리 구성의 블록도이고, 도 1c는 도 1a의 구성과 관련하여 하나의 호스트에서 다른 하나의 호스트로 컴포넌트들을 이동시키는 분산 처리 구성의 블록도이다.
도 2는 분할 그룹 내의 컴포넌트들의 구성의 블록도이다.
도 3은 수락 그룹 내의 컴포넌트들의 구성의 블록도이다.
도 4는 수락 그룹의 대체 구성의 블록도이다.
도 5는 작업 그룹 내의 컴포넌트들의 구성의 블록도이다.
도 6은 작업 그룹 내의 컴포넌트들의 대체 구성의 블록도이다.
도 7 내지 도 9는 분산 처리 구성의 예이다.
도 10은 재구성 절차의 흐름도이다.
도 11a 내지 도 11i는, 도 1a에 대응하는 도 11a에 도시한 초기 구성부터 도 11b 내지 도 11h에 도시한 중간 구성들을 통해 도 1c에 대응하는 도 11i에 도시한 최종 구성까지의 일련의 구성을 도시한다.
도 1a를 참조하면, 분산 처리 시스템의 분산 처리 구성(100)은, 데이터 컬렉션의 데이터 요소들을 다수의 소스(110)로부터 데이터 요소들이 처리되거나 소비되는 다수의 작업 그룹(140)으로 패스한다. 일반적으로, 소스(110)로부터의 데이터 요소들은, 분할 규칙에 따라 상이한 데이터 요소들이 상이한 목적지들에 패스되도록 분할 그룹(120)을 통해 패스된다. 이 구성에서, 동일한 분할 키 값을 갖는 요소들은 각 분할 그룹(120)으로부터 동일한 목적지로 패스된다. 일반적으로, 상기 구성의 상이한 분할 그룹들(120)은 동일한 분할 규칙을 사용하며, 이에 따라 동일한 분할 키 값을 갖는 데이터 요소들이 분할 그룹들에 의해 동일한 목적지로 패스된다.
분할 그룹(120)은 데이터 요소를 수락 그룹(130)으로 패스한다. 일반적으로, 각 분할 그룹은 동일한 분할 규칙을 사용하여, 임의의 특정 수락 그룹이 분할 규칙에 의해 정의된 특정 일부(즉, 분할 키 값들의 서로소 세트)에 있는 데이터 컬렉션의 모든 요소를 수신하게 된다.
각 수락 그룹(130)은, 자신들에게 패스된 요소들에 대한 처리를 수행하는 하나 이상의 작업 그룹(140)에 그 요소들을 패스한다. 일반적으로, 각 수락 그룹(130)과 각 수락 그룹이 요소들을 패스하는 작업 그룹들(140)은 동시성 제약을 함께 실시(enforce) 한다. 이 구성에서, 일반적으로 동일한 동시성 키 값을 갖는 모든 데이터 요소는 분할 그룹들에 의해 동일한 수락 그룹(130)으로 라우팅되고, 이어서 수락 그룹(130)과 해당 수락 그룹의 작업 그룹들(140)은 동일한 동시성 키를 갖는 임의의 두 개의 요소의 동시 처리를 방지하도록 동작한다.
도 1에 도시한 컴포넌트들은 일반적으로 상이한 연산 자원들에 걸쳐 분산되어 있다는 점을 이해해야 한다. 도 1에서 예시를 위해, 개별적인 연산 자원들(190 내지 195)이 표시되어 있다. 자원(190, 191)은, 서버 컴퓨터 상에서 실행되는 상이한 처리 스레드를 나타내고, 자원(192, 193)과 자원(194, 195)은 상이한 서버 컴퓨터 상의 상이한 처리 스레드를 나타낸다. 따라서, 컴포넌트들 간의 통신을 나타내는 일부 컴포넌트간 링크(예를 들어, 링크(111, 121, 131))는 단일 스레드 내의 통신에 대응하고, 일부(예를 들어, 링크(132))는 단일 컴퓨터 상의 상이한 스레드들 간의 통신을 나타내며, 일부(예를 들어, 링크(123))는 서버 컴퓨터들 간의 통신을 나타낸다.
도 1a에 도시한 컴포넌트들을 상이한 연산 자원들에 할당하는 것은, 전체 "forall" 처리 태스크의 실행 전에 결정될 수 있다. 컴포넌트들의 세트 또는 분산 처리 시스템의 연산 자원들에 대한 컴포넌트들의 할당이 변경될 수 있는 경우가 있다. 예를 들어, 도 1b에서, 추가 작업 그룹(140)을 갖는 제3 수락 그룹(130)이 추가될 수 있다. 다른 일례로, 도 1c에서, 서버들 중 하나의 서버(예를 들어, 처리 스레드(192, 193))로부터의 컴포넌트들은 다른 서버(예컨대, 스레드(194, 195))로 이동된다.
도 1a의 구성으로부터 도 1b의 구성으로의 천이에 대한 하나의 시나리오는, 작업 그룹의 수를 증가시킴으로써 처리 속도를 증가시키는 것이다. 2개의 수락 그룹(130)을 사용하면, 데이터 요소들이 분할 그룹들(120)에 의해 두 부분으로 분할되는 한편, 3개의 수락 그룹을 갖는 최종 구성에서는, 분할 그룹들(120)이 데이터 요소들의 3방향(three-way) 분할을 수행한다는 점을 인식할 것이다. 2방향으로부터 3방향 분할화 구성으로 천이하는 동안 처리 규칙을 위반하지 않는다는 점이 중요하다. 도 1a의 구성으로부터 도 1c의 구성으로의 천이에 대한 시나리오는, 다른 용량을 가질 수 있는 상이한 서버를 사용하는 것이다.
구성을 변경하는 한 방안은, 단순히 소스들(110)로부터 요소들을 제공하는 것을 중지하고 소스들(110)와 작업 그룹들(140) 사이에 어떠한 "이동 중"(in flight)인 요소도 없도록 시스템이 모든 처리를 완료할 때까지 기다리는 것일 수 있다. 이어서, 분할 키 제약에 의한 순서화 또는 동시성 키 제약에 따른 시퀀싱을 위반할 가능성 없이 새로운 구성을 시작할 수 있다. 그러나, 이러한 방안은, 소스들(110)에 의해 이미 제공된 모든 요소가 처리되도록 기다리는 동안 연산 자원들이 충분히 이용되지 않을 수 있다는 점에서 비효율적일 수 있다. 대체 방안은, 각 수정된 구성에서 제약이 충족된 상태로 유지되고 연산 자원들이 충분히 이용되는 상태로 유지되는 방식으로 선택된 시스템의 컴포넌트들의 수정된 구성들의 일시적 시퀀스를 사용하는 것이다. 이하에서 설명하는 실시예에서, 도 1a와 도 1b의 컴포넌트들 중 일부는 다수의 구성 컴포넌트로서 구현되며, 구성들의 일시적 시퀀스는 이들 구성 컴포넌트 간의 연결을 변경하는 것을 포함한다. 도 1a에 도시한 구성으로부터 도 1b에 도시한 구성으로의 변경, 또는 도 1a에 도시한 구성으로부터 도 1c에 도시한 구성으로의 변경과 같은 구성의 모든 변경을 달성하기 위한 천이를 설명하기 전에, 구성 컴포넌트들의 설명을 도 2 내지 도 6에 대하여 제공한다. 이들 도면에서, 도 1a 내지 도 1c의 컴포넌트들은 구성 컴포넌트들을 나타내는 참조용 점선으로 도시되며, 이들 내의 상호 연결은 실선으로 되어 있다.
도 2를 참조해 볼 때, 분할 그룹(120)은, 데이터 소스(110)로부터 데이터 경로(111)를 통해 데이터 요소를 수락하는 선입선출(FIFO) 큐(211)를 포함한다. 큐(211)는 FIFO이기 때문에, 큐를 통해 분할 제약이 유지된다. 분할자(220)는, (예를 들어, 분할자 내의 또는 분할자가 액세스할 수 있는 분할 규칙을 나타내는 데이터를 위한 데이터 저장소에 따라) 분할자가 구성되는 분할 규칙을 구현한다. 예를 들어, 분할 키가 성(last name)에 해당하면, 분할 규칙은, 성의 첫 글자에 따라 일부들을 정의할 수 있고, 'A' 내지 'H' 범위는 제1 출력 데이터 경로(121)를 통해 패스될 수 있고, 'I' 내지 'P' 범위는 제2 데이터 경로(122)를 통해 패스될 수 있고, 'S' 내지 'Z' 범위는 제3 데이터 경로를 통해 패스될 수 있다. 일부 예에서 분할 규칙은, 해시 함수 등의 함수를 통합하는 맵핑과 같이 값을 데이터 경로에 맵핑하는 다른 형태의 맵핑을 사용할 수 있다. 분할자(220)를 벗어나는(leaving) 데이터 경로는, (1) 동일한 연산 자원(예를 들어, 프로세서 상의 동일한 스레드) 상에서 유지되는 데이터 경로(121), (2) 다른 연산 자원이 런타임 저장소(예를 들어, 공유되는 동적 메모리)를 분할자(220)의 연산 자원과 공유하는 그 다른 연산 자원(예를 들어, 다른 스레드)에서 실행되는 컴포넌트로의 데이터 경로(122), 및 (3) 다른 연산 자원에 대한 통신이 프로세서간 통신(예를 들어, 데이터 네트워크 통신)을 필요로 하는 그 다른 연산 자원으로 데이터 요소들이 패스되는 경로(223)를 포함하는 다양한 형태일 수 있다. 분할자(220)로부터의 프로세서간 통신을 구현하기 위해, 분할 그룹(120)은, 예를 들어 원격 프로시저 콜(RPC) 메커니즘을 사용하여 수신하는 데이터 요소들을 데이터 경로(123)를 통해 특정한 원격 연산 자원으로 이동시키는 것을 담당하는 통신 컴포넌트(222), 및 FIFO 큐(221)도 포함한다.
도 3을 참조해 볼 때, 수락 그룹(130)은, 제1 예로서, 상이한 유형의 데이터 경로, 예를 들어 상술한 데이터 경로(121, 122, 123)를 통해 데이터 요소들을 수신할 수 있는 FIFO 큐(226)를 사용하는 수락 그룹(130A)으로서 구현된다. 일부 예에서, 큐(226)의 선입선출 정책은, 예를 들어, 각 입력 데이터 경로에 대하여 개별적인 FIFO 큐를 구현하고 이어서 예컨대 라운드 로빈 정책에 따라 그러한 큐에 서비스를 제공함으로써, 임의의 하나의 데이터 경로로부터의 데이터 요소들이 선입선출 순서로 유지되는 것만을 요구하도록 완화될 수 있다. 도 3의 수락 그룹(130A)은, 다수의 작업 그룹(140)에 대한 처리를 위한 데이터 요소들을 제공할 수 있는 수락자(230)도 포함한다. 예를 들어, 수락자는, 데이터 요소들을, 데이터 경로(131)를 통해 동일한 연산 자원(예를 들어, 동일한 스레드) 상의 하나 이상의 작업 그룹(140)에 및/또는 데이터 경로(132)를 통해 런타임 저장소를 공유하는 상이한 연산 자원들 상의 하나 이상의 작업 그룹(140)에 전송할 수 있다. 도 3에 도시된 구성에서, 수락자는, 다수의 작업 그룹(140)에 의한 동시 처리를 위해 다수의 데이터 요소를 발송할 수 있다. 따라서, 직렬화 키 정책을 구현하는 실시예에서, 수락자는, 두 개의 데이터 요소가 동시에 처리되지 않을 수 있도록 그 두 개의 데이터 요소를 작업 그룹들(140)에 발송하지 않음으로써 직렬화 키 제약을 실시하도록 구성된다. 수락자는, 수락자 내의 또는 수락자가 액세스할 수 있는 시퀀싱 규칙을 나타내는 데이터를 위한 데이터 저장소에 따라 구성된다.
도 4를 참조해 볼 때, 일부 구성들에 있어서, 수락 그룹(130)은, 제2 예로서, 단지 하나의 입력 데이터 경로(121)와 단지 하나의 출력 데이터 경로(131)가 존재하는 경우에 데이터 경로(239)만을 갖는 수락 그룹(130B)으로서 구현될 수 있다. 이러한 수락 그룹(130B)이 해당 출력 작업 그룹(140)과 동일한 연산 자원에 할당되고 데이터 요소들을 제공하는 단일 분할 그룹(120)과 동일한 연산 자원에 할당되는 경우, 분할 그룹(120)(즉, 분할 그룹 내의 분할자(220))은, 분할화와 시퀀싱 제약을 위반할 우려가 전혀 없이 데이터 요소들을 작업 그룹(140)에 직접 제공할 수 있다.
도 5를 참조해 볼 때, 일부 구성에 있어서, 작업 그룹(140)은 작업 그룹(140A)의 제1 예로서 구현될 수 있다. FIFO 큐(231)는, 하나 이상의 분할 그룹에서 발생하는 데이터 요소들을 수신하고, (적어도 각 분할 그룹으로부터의 데이터 요소들 내에) 데이터 요소들의 순서를 유지한다. 직렬화기(232)는, 직렬화 키의 동일한 값을 갖는 2개의 데이터 요소가 직렬화기의 하류측으로 향하여 아직 완전히 처리되지 않는 것을 방지하도록 데이터 유닛을 지연시킴으로써 직렬화를 실시한다. 직렬화기는 데이터 요소들을 FIFO 큐(236)에 패스하고, 작업자(240)는 큐(236)로부터의 데이터 요소들의 처리를 순서대로 개시하고 일반적으로 단일 데이터 요소보다 많은 데이터 요소를 동시에 처리한다. 본 설명의 문맥에서, "작업자"는, 자신이 수신하는 데이터 요소들에 대하여 작업(즉, 연산, 저장, 송신 기능 중 하나 이상)를 수행하는 시스템의 소프트웨어 구현 요소이다. 일부 경우에, 작업자가 수행한 작업은, 데이터베이스 또는 작업자가 액세스할 수 있는 다른 데이터 저장 장치의 데이터 변경과 같은 부작용을 야기한다. 일부 구현예에서, 작업자(240)는 단일 실행 스레드를 가질 수 있지만(예를 들어, 운영 체제 프로세스, 경량 프로세스, 또는 스레드로서 구현되지만), 다른 구현예에서는 작업자(240)가 서로를 차단하지 않는 다수의 실행 스레드를 가질 수 있으며, 시스템은 예를 들어 상이한 처리 용량을 갖는 다양한 유형의 작업자를 가질 수 있음을 이해해야 한다.
도 6을 참조해 볼 때, 작업 그룹(140)의 또 다른 일례인 작업 그룹(140B)은 도 5에 도시된 예에서와 같이 FIFO 큐(236)를 포함한다. 이 예에서는, 직렬화 제약이 없고, 작업자(240)는, 작업 그룹의 입력 데이터 경로로부터 데이터 요소들을 수신하는 큐(236)로부터 그 데이터 요소들을 직접 수신한다.
일반적으로, 전술한 구성 컴포넌트들을 고려하면, 다수의 상이한 토폴로지 패턴이 통상적이다. 이러한 모든 예에서 관찰해야 할 중요한 한 가지 특성은, 작업자(240)에 데이터 요소들을 제공하는 소스(110)와 큐(236)의 각 쌍에 대해 소스로부터 해당 큐까지의 경로가 정확히 하나 있다는 것이다. 경로를 따라, 큐에 버퍼링이 있을 때, 이는 FIFO 정책에 따른 것이다. 따라서, 그 소스에 의해 제공되는 동일한 분할 내의 모든 데이터 요소는 그 분할에 대한 큐에 순서대로 도착하므로, 분할 제약이 충족되는 것을 보장한다.
도 7 내지 도 9를 참조하면, 전술한 요소들은 다양한 토폴로지를 지원한다. 3개의 예를 이하에서 설명한다. 일반적으로 이들 토폴로지는 11개 계층을 갖는 것으로 간주될 수 있으며, 각 계층은 forall 레코드 생성, 라우팅, 직렬화, 및 처리의 특정 기능에 전용으로 사용된다.
이들 토폴로지 그래프의 중요한 한 가지 특성은, 소스(110)와 수락 그룹(130)의 임의의 쌍 사이에 많아야 하나의 경로가 있다는 것이다. 이는, 수락된 그룹의 하류측에서 명시적으로 허용되는 재순서화가 있지 않는 한, 동일한 소스로부터 생성되고 동일한 분할에서 처리되는 레코드가 항상 순서대로 처리되는 것을 보장한다.
도 7을 참조해 볼 때, 비교적 일반적인 경우에, 다수의 다른 엔진에 걸쳐 확산되는 많은 분할로 분할되는 각 엔진(790, 793, 796) 상에 많은 레코드 소스(110)가 있을 수 있다(각 엔진은 다수의 처리 스레드(791, 792, 794, 795, 797, 798)를 갖는다). forall 토폴로지에 관련된 엔진은, 소스와 분할 그룹을 호스팅할 수 있고, 또는 수락 그룹과 작업자 그룹을 호스팅할 수 있고, 또는 둘 다를 행할 수 있다. 도 7에 도시된 컴포넌트들은, 도 1 내지 도 6의 설명과 일관되게 번호가 매겨져 있다. 한 가지 주목할 점은, 처리 스레드(795)에 대하여 도 7에 도시한 바와 같이, 작업자(240)가 하나의 처리 스레드 내의 다수의 작업 그룹(140) 간에 공유될 수 있다는 점이다.
11 계층 토폴로지 패턴의 완전한 일반성은 모든 경우에 필요하지 않으므로, 적용될 수 있는 다양한 전문화 및 최적화가 존재한다. 도 8을 참조해 볼 때, 하나의 공통 패턴은, 클러스터의 모든 이용가능 스레드(791, 792, 794, 795, 797, 798)에 걸쳐 처리하도록 직렬 파일과 같은 (스레드(791) 상의) 미분할 소스(110)로부터 팬아웃(fan-out)하는 것이다.
도 9를 참조해 볼 때, 또 다른 일반적인 사용 사례는, 정렬된 분할들을 사용하여 데이터를 처리하여 엔진들에 걸쳐 데이터를 이동시키는 것을 피하는 것이다. 이 예에서, 엔진(790)과 엔진(793) 간에는 데이터 전달이 존재하지 않지만, 각각의 엔진에서 다수의 처리 스레드가 이용된다.
전술한 바와 같이, 컴포넌트들의 구성은, 요구되는 데이터 컬렉션에 대한 처리, 데이터 소스의 위치, 및 이용가능한 연산 자원에 따라 실행 전에 결정될 수 있다. 소스가 고갈되면(즉, 소스의 모든 데이터 요소가 제공되었다면),엔드-오브-인포메이션(EOI) 요소가 데이터 경로를 통해 전파되면서 컴포넌트들이 셧다운될 수 있게 하여, 결국 데이터 요소들의 모든 처리가 완료되었을 때 모든 컴포넌트를 셧다운할 수 있다.
전술한 바와 같이, 데이터 컬렉션의 처리 동안 컴포넌트의 구성을 변경하는 것이 바람직할 수 있는 경우가 있다. 이러한 재구성을 위한 다양한 이유는, 연산 자원(예를 들어, 서버 컴퓨터, 처리 스레드 등)을 추가 또는 제거하거나 특정 분할 규칙에 기인한 부하 불균형을 관찰하고 분할 규칙을 변경하여 부하의 균형을 맞추려는 경우에 촉발될 수 있다.
구성이 정적인(static) 시간 동안, 데이터 요소들은, 정확하게 분할되고 순서대로 처리되어 분할 제약을 충족시킨다. 구성이 정적인 이러한 기간을 라우팅 에포크라고 한다. 하나의 라우팅 에포크와 다른 하나의 라우팅 에포크 간의 천이는, 데이터 요소들이 적절하게 분할되고 처리되게 하는 일련의 재구성으로서 유발된다.
전술한 바와 같이, 하나의 라우팅 에포크로부터 다른 하나의 라우팅 에포크로의 천이를 행하는 한 방안은, 소스로부터 데이터 요소를 제공하는 것을 본질적으로 중지하고, 모든 컴포넌트가 본질적으로 정지 상태에 이르기까지 모든 경로를 따른 EOI 요소를 처리하는 것이며, 이때, 컴포넌트들은 재구성될 수 있고 이어서 다음 에포크가 시작될 수 있다. 그러나, 이러한 방안은 천이 동안 많은 연산 자원을 층분히 이용하지 못한다는 점이 명백하다.
더욱 효율적인 방안으로, 예를 들어, 구성의 개별 데이터 경로들의 소스 또는 목적지가 변경되고, 개별적으로 정지 컴포넌트들(예를 들어, 빈 큐들, 유휴 작업자들 등)이 컴퓨터 서버들 또는 스레드들 간에 종료되거나 이동되고, 새로운 컴포넌트들이 시작되어 기존의 또는 새로운 데이터 경로들에 접속된다.
이러한 시퀀싱의 일례는, 도 10의 흐름도(1000)에 예시되어 있는 다음의 단계들을 포함한다.
단계 1. 데이터 요소가 처리되지 않도록 다수의 컴포넌트를 일시중단한다. 특히, 분할 그룹들(120)에 의해 처리되는 데이터 요소가 존재하지 않도록 모든 분할자(220)를 일시중단한다(즉, 도 2를 참조하면, 큐(211)로부터 판독된 임의의 데이터 요소가 출력 데이터 경로(121, 122, 또는 223) 상에 방출되었다). 통신 컴포넌트(222)도 일시중단하여, 일반적으로 분할자들(220)과 통신 컴포넌트들(222) 사이의 큐들(221)에 적어도 일부 데이터 요소를 남긴다. 수락자(230)도 일시중단하여, 일반적으로 큐들(226)에 데이터 요소를 남긴다. 직렬화기(232)도 일시중단한다. 작업 그룹(140)의 컴포넌트들은 계속 동작한다.
단계 2. 소정의 큐들의 데이터를 상류측 큐들의 헤드로 재배치한다. 특히, 각 큐(221)의 콘텐츠를 동일한 분할 그룹(120)의 대응하는 큐(211)의 헤드에 인큐잉(enqueue)하며, 이때 분할자(220)는, 이들 데이터 요소가 즉시 디큐잉(dequeue)되지 않도록 일시중단 상태로 유지된다. 유사하게, 각 작업 그룹(140)의 FIFO 큐(231)와 큐(236)의 콘텐츠는, 도 4에 도시한 유형(130A)의 상류측 수락 그룹(130)의 큐(226)의 헤드에 인큐잉되고, 또는 상류측 수락 그룹(130)이 도 5에 도시한 유형(130B)인 경우 수락 그룹(130)으로부터의 제1 하류측 큐의 헤드에 인큐잉된다.
단계 3. 작업 그룹들(140)의 처리를 완료할 수 있다. 이때, 분할 그룹들(120)의 큐들(211)과 수락 그룹들(130)의 큐들(226)를 제외하고는 데이터 요소들이 구성에 인큐잉되지 않는다.
단계 4. 이어서, 구성을 변경하여 새로운 구성에 필요하지 않은 임의의 수락 그룹(130) 또는 작업 그룹(140)을 제거하고, 계류 중인 데이터 요소들을 갖는 큐들(226)을 유지한다. 유지되고 있는 임의의 수락 그룹(130)의 큐(226)를 수락자(230)로부터 접속해제하고 새로운 빈 큐(226)를 수락자에 부착한다.
단계 5. 큐들(211)의 데이터 요소들 또는 소스들(100)로부터 아직 판독되지 않은 데이터 요소들을 처리하기 전에 큐들(226)의 데이터 요소들을 처리한다. 컴포넌트들의 임시 3 계층 구성은, 큐들(226)로부터의 데이터 레코드들의 수락을 처리하고, 이들을 새로운 구성에 따라 구성된 분할자(220)를 통해 패스하고, 새로운 구성의 수락 그룹들(130)에 데이터 레코드들을 전송하도록 구축된다.
단계 6. EOI 마커를 올드 큐들(old queues, 266)의 각각의 엔드(end)에 삽입한다. 단계 5에서 구축된 임시 컴포넌트들은 일시중단되지 않으며, 시스템은, 임시 컴포넌트들이 비활성임을 나타내는 EOI 마커를 패스할 때까지 기다린다.
단계 7. 이때, 이전 라우팅 에포크에서 분할된 기존의 모든 데이터 요소는 새로운 라우팅 에포크 동안 올바른 수락자 그룹들(130)에 있게 된다. 올드 큐들(226)뿐만 아니라 단계 5에서 구축된 임시 컴포넌트들도 제거한다.
단계 8. 분할 그룹(120)의 모든 분할자(220)는 새로운 에포크를 위해 구성된다.
단계 9. (해당 소스들(100)이 사용되지 않기 때문에) 새로운 에포크에서 사용되지 않은 이전 에포크로부터의 큐(211)의 데이터 요소들을, 이제 각 큐에 EOI 마커를 추가함으로써 처리하고, 이어서 (새로운 분할 규칙에 따라 구성된) 그러한 큐들에 대한 분할자들(220)을 일시중단 해제한다. EOI 마커들이 그러한 분할 그룹들의 모든 컴포넌트를 통과한 경우, "이동 중(in flight)"에 있는 모든 데이터 레코드는 각자의 올바른 수락자 그룹들(130) 또는 작업 그룹들(140)에 있다.
단계 10. 소스들(100)과 새로운 구성에서 사용되지 않는 대응 분할 그룹들(120)을 제거한다.
단계 11. 새로운 소스들(100)과 분할 그룹들을 새로운 구성에 추가하고 접속한다.
단계 12. 새로운 구성의 모든 컴포넌트를 일시중단 해제하고 새로운 에포크를 시작한다.
도 11a 내지 도 11i를 참조해 보면, 전술한 바와 같은 재구성 절차의 일례가 제공된다. 도 11a를 참조해 보면, 데이터 소스에 대한 forall의 초기 실행은 2개의 엔진(790, 793)에 걸쳐 분할되고, 소스들(110)과 소스의 작업 그룹들(140) 중 하나의 천이가 필요하다. 도 11a는 라우팅 에포크(1) 동안의 초기 토폴로지를 도시하고, 도 11i는 엔진(793)의 사용이 엔진(796)의 사용으로 대체된 바람직한 토폴로지를 도시한다.
도 11b를 참조해 보면, 단계 1에서, 소스들(110), 분할자들(220), 수락자들(230), 및 직렬화기들(232)는 해당 도면에서 점선으로 표시된 바와 같이 일시중단된다. 도 11b에서, 일시중단된 컴포넌트들은 점선으로 도시되어 있다. 이어서, 도 11c를 참조해 보면, 단계 2에서, 레코드들은 큐들(221)로부터 큐들(211)의 앞으로 다시 이동되고 (이 예에서는 아무것도 없음), FIFO 큐들(231), 직렬화기들(232), 및 큐들(236)로부터 큐들(226)의 앞으로 다시 이동되어, 데이터 요소 순서를 유지한다. 도 11d를 참조해 보면, 단계 3에서, forall이 유휴 상태인 경우, 프로세스의 단계 4는, 토폴로지 그래프의 후반부를 재구성함으로써 forall 토폴로지의 제1 변경을 행한다.
도 11e를 참조해 보면, 단계 5는, 3개 레벨을 토폴로지에 일시적으로 추가하여, 올드 큐들(226)로부터의 데이터 요소들을 분할자들(720), 큐들(721), 통신 컴포넌트들(722)을 포함하는 새로운 컴포넌트들을 통해 새로운 FIFO 큐(231) 내로 재분할한다.
도 11f를 참조하면, 단계 6에서, 토폴로지의 이러한 새로운 부분을 실행하는 것은 데이터 요소들을 새로운 FIFO 큐들(231) 내로 재분할한다. 이 예에서, 엔진1의 레코드들은 엔진1에 남아 있지만, 엔진2의 레코드들은 엔진3으로 이동한다. 일반적으로, 재분할은 모든 것을 모든 것으로 재분할하는 것일 수 있다. 이것은 상이한 소스들로부터의 데이터 요소들이 FIFO 큐들(231)에서 혼합(mix)될 수 있게 하지만, 동일한 소스에서 생성되고 동일한 분할 키를 갖는 모든 레코드는, 모두 동일한 올드 FIFO 큐에 함께 있기 때문에 순서대로 남아있게 된다. 마찬가지로, 서로 다른 큐들에 있던 데이터 요소들은 재분할 동안 상호 혼합되었지만, 분할과 직렬화 키 그룹들 내에서의 순서화는 유지된다.
도 11g를 참조해 보면, 단계 7과 단계 8은, 임시 컴포넌트들(720, 721, 722)을 제거하고, 토폴로지의 전반부를 재구성하여, 분할자들(820), 큐들(821), 통신 컴포넌트들(822)을 포함하는 새로운 컴포넌트들을 사용하여 사라지는 소스들(110)로부터의 데이터 요소들을 재분할한다. 도 11h를 참조해 보면, 천이 토폴로지를 실행함으로써, 새로운 라우팅 에포크 동안 올바른 FIFO 큐들(231)로 향하는 모든 큐(211)로부터 레코드들을 이동시킨다. 단계 10과 단계 11은 도 11i에 도시한 바와 같이 토폴로지를 새로운 라우팅 에포크 동안 최종 형태로 재구성한다. 데이터가 재분할되고, 순서화가 유지되고, 토폴로지가 완전히 천이됨으로써, 단계 12는 새로운 라우팅 에포크에 실행을 안전하게 재개할 수 있다.
데이터를 인큐잉하거나 큐 간에 데이터를 이동시키는 것에 관한 위 설명에서, 이러한 전달의 목적지와 소스가 단일 프로세스 또는 스레드를 이용하거나 어드레스 공간을 공유하는 프로세스들 또는 스레드들을 이용하는 경우, 데이터 요소를 제 위치에 남겨 두고 포인터만을 데이터 요소로 이동시킴으로써 이동이 구현될 수 있다는 점을 이해해야 한다. 유사하게, 큐(A)의 콘텐츠를 큐(B)의 헤드로 이동시키는 것을 설명하는 절차에 있어서, 큐(B)로부터의 처리 요소들은, 제1 구성에서 큐(A)가 자신의 모든 요소를 차례로 공급하고 큐(A)의 모든 요소가 고갈된 후 제2 구성에서 큐(B)가 자신의 요소를 차례로 제공하는, 구성들의 시퀀스를 통해 구현될 수 있다.
전술한 방안은, 예를 들어, 적절한 소프트웨어 명령어를 실행하는 프로그래밍가능 연산 시스템을 사용하여 구현될 수 있고, 또는 필드 프로그래밍가능 게이트 어레이(FPGA)와 같은 적절한 하드웨어로 또는 소정의 하이브리드 형태로 구현될 수 있다. 예를 들어, 프로그래밍 방안에 있어서, 소프트웨어는, (분산형, 클라이언트/서버, 또는 그리드 등의 다양한 아키텍처일 수 있는) 하나 이상의 프로그래밍된 또는 프로그래밍가능 연산 시스템에서 실행되는 하나 이상의 컴퓨터 프로그램에 프로시저를 포함할 수 있고, 이러한 시스템의 각각은, 적어도 하나의 프로세서, (휘발성 및/또는 비휘발성 메모리 및/또는 저장 요소를 포함하는) 적어도 하나의 데이터 저장 시스템, (적어도 하나의 입력 장치나 포트를 사용하여 입력을 수신하고 적어도 하나의 출력 장치나 포트를 사용하여 출력을 제공하기 위한) 적어도 하나의 사용자 인터페이스를 포함한다. 소프트웨어는, 예를 들어, 데이터플로우 그래프의 설계, 구성, 및 실행과 관련된 서비스를 제공하는 대형 프로그램의 하나 이상의 모듈을 포함할 수 있다. 프로그램의 모듈(예를 들어, 데이터플로우 그래프의 요소)은, 데이터 저장소에 저장된 데이터 모델을 따르는 다른 조직화된 데이터 또는 데이터 구조로서 구현될 수 있다.
소프트웨어는, 기간 동안(예를 들어, 동적 RAM 등의 동적 메모리 장치의 리프레시 기간들 사이의 시간 동안) 매체의 물성(예를 들어, 표면 피트와 랜드, 자기 도메인, 또는 전하)을 이용하여, 휘발성 또는 비휘발성 저장 매체 또는 다른 임의의 비일시적 매체에 구체화되는 것처럼 비일시적 형태로 저장될 수 있다. 명령어를 로딩하기 위한 준비시, 소프트웨어는, CD-ROM 또는 (예를 들어, 범용 또는 특수 목적용 연산 시스템이나 장치에 의해 판독가능한) 다른 컴퓨터 판독가능 매체와 같은 유형의 비일시적 매체 상에 제공될 수 있고, 또는 네트워크의 통신 매체를 통해 실행되는 연산 시스템의 유형의 비일시적 매체에 전달(예를 들어, 전파된 신호로 인코딩)될 수 있다. 처리의 일부 또는 전부는, 특수 목적용 컴퓨터에서, 또는 코프로세서 또는 FPGA 또는 전용 주문형 반도체(ASIC)와 같은 특수 목적용 하드웨어를 사용하여 수행될 수 있다. 처리는, 소프트웨어에 의해 특정된 연산의 상이한 일부들이 상이한 연산 요소들에 의해 수행되는 분산 방식으로 구현될 수 있다. 이러한 각 컴퓨터 프로그램은, 바람직하게, 본원에서 설명하는 처리를 수행하기 위해 저장 장치 매체가 컴퓨터에 의해 판독될 때 컴퓨터를 구성하고 동작시키도록, 범용 또는 특수 목적용 프로그래밍가능 컴퓨터에 의해 액세스가능한 저장 장치의 컴퓨터 판독가능 저장 매체(예를 들어, 고체 메모리 또는 매체, 또는 자기 또는 광학 매체) 상에 저장되거나 다운로드된다. 본 발명의 시스템도, 컴퓨터 프로그램으로 구성된 유형의 비일시적 매체로서 구현하는 것을 고려할 수 있으며, 이렇게 구성된 매체는, 컴퓨터가 미리 정의된 특정한 방식으로 동작하게 하여 본원에서 설명하는 처리 단계들 중 하나 이상을 수행하게 한다.
본 발명의 많은 실시예를 설명하였다. 그럼에도 불구하고, 전술한 설명은, 예시하기 위한 것이지, 하기의 청구범위의 범주에 의해 정의되는 본 발명의 범위를 제한하는 것이 아니라는 점을 이해해야 한다. 이에 따라, 다른 실시예들도 하기의 청구범위의 범주 내에 있다. 예를 들어, 본 발명의 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있다. 또한, 전술한 단계들 중 일부는 순서에 상관없을 수 있으며, 따라서 설명한 순서와는 다른 순서로 수행될 수 있다.

Claims (21)

  1. 데이터 컬렉션(data collection)을 분산 처리하는 방법으로서,
    입력 장치 또는 포트를 통해, 분산 처리 시스템을 구성하기 위한 정보를 수신하는 단계; 및
    적어도 두 개의 처리 에포크(epoch) 동안 상기 분산 처리 시스템의 데이터를 처리하는 단계를 포함하고,
    상기 구성은 상기 분산 처리 시스템의 컴포넌트들의 제1 구성을 형성하는 것을 포함하고, 상기 제1 구성은 상기 데이터 컬렉션의 데이터 요소들의 복수의 소스 및 상기 데이터 컬렉션의 데이터 요소들을 처리하도록 구성된 복수의 작업자(worker)를 포함하고, 상기 소스들과 작업자들은 복수의 연산 자원 간에 분산되고, 각 데이터 요소는, 상기 제1 구성의 분할 규칙에 따라 상기 제1 구성의 상기 복수의 작업자의 서브세트를 식별하는 분할 값을 포함하고,
    상기 처리하는 단계는,
    제1 처리 에포크에 상기 데이터 컬렉션의 제1 일부에 대한 상기 소스들로부터의 데이터 요소들을 수락하고, 상기 데이터 요소들을 상기 제1 구성을 통해 라우팅하고 상기 데이터 요소들 중 적어도 일부의 처리를 완료하는 단계로서, 상기 제1 일부의 다른 데이터 요소들은 상기 제1 구성의 컴포넌트들에서 큐잉(queue) 상태로 유지되는, 단계;
    상기 데이터 컬렉션의 제1 일부를 수락한 후, 상기 제1 구성으로부터 제2 구성으로 상기 분산 처리 시스템의 구성 변경을 개시하는 단계;
    상기 구성 변경을 개시한 후, 상기 시스템의 컴포넌트들의 구성들 간의 연속되는 적어도 두 개의 천이를 컴포넌트들의 연속되는 수정된 구성들로 수행하고, 상기 수정된 구성의 컴포넌트들 간의 상기 데이터 요소들의 천이를 야기하는 각 천이 후에, 상기 수정된 구성들 중 최종 구성이 상기 제2 구성에 해당하고, 이에 따라 상기 제1 구성으로부터 상기 제2 구성으로의 천이를 완료하는 단계; 및
    상기 제2 구성으로의 천이를 완료한 후, 제2 처리 에포크에 상기 제2 구성의 복수의 소스로부터 상기 데이터 컬렉션의 추가 데이터 요소들을 수락하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 복수의 연산 자원은 통신 링크들을 통해 결합된 복수의 프로세서를 포함하는, 방법.
  3. 제2항에 있어서, 상기 복수의 연산 자원은 상기 복수의 프로세서의 각각에서 실행되는 적어도 하나의 처리 스레드를 포함하고, 각 연산 자원은 별개의 처리 스레드에 연관된, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 데이터 요소들의 각 소스는 상기 소스로부터의 데이터 요소들을 수락하도록 구성된 분할자 모듈에 결합되고, 각 분할자는, 상기 분할 규칙에 따라 식별되는 작업자로 데이터 요소들을 향하게 하도록 상기 분할 규칙으로 구성된, 방법.
  5. 제4항에 있어서, 상기 시스템의 컴포넌트들의 구성들 간의 연속된 적어도 두 개의 천이인 제1 천이를 수행하는 것은,
    상기 분할자 모듈들의 동작을 일시정지하고, 상기 분할자 모듈들에서 상기 소스들로부터의 데이터 요소들의 수락을 중지하는 것;
    수정된 분할 규칙으로 상기 복수의 분할 모듈을 재구성하는 것; 및
    소스로부터 수락된 데이터 요소들의 적어도 하나의 큐를 결합하여 상기 수정된 분할로 재구성된 분할 모듈에 데이터 요소들을 제공하는 것을 포함하는, 방법.
  6. 제4항에 있어서, 각 분할자 모듈은, 상기 분할자 모듈에 결합된 소스와 동일한 연산 자원 상에 호스팅되고, 상기 소스로부터 상기 분할자로 데이터 요소들을 패스하는 것은 프로세서간 통신을 필요로 하지 않고 수행되는, 방법.
  7. 제4항 또는 제6항에 있어서, 상기 복수의 작업자는 적어도 하나의 작업자를 포함하고, 상기 적어도 하나의 작업자의 각 작업자는 복수의 분할자 모듈로부터의 데이터 요소들을 수락하도록 구성된 수락자 모듈에 결합되는, 방법.
  8. 제7항에 있어서, 상기 시스템의 컴포넌트들의 구성들 간의 연속된 적어도 두 개의 천이인 제1 천이를 수행하는 것은,
    상기 분할자 모듈들의 동작을 일시정지하고, 상기 분할자 모듈들에서 상기 소스들로부터의 데이터 요소들의 수락을 중지하는 것,
    상기 복수의 수락자 모듈의 동작을 일시정지하는 것,
    상기 복수의 분할 모듈을 수정된 분할 규칙으로 재구성하는 것, 및
    상기 복수의 수락자 모듈 중 수락자 모듈의 적어도 하나의 큐를 결합하여 상기 수정된 분할로 재구성된 분할 모듈에 데이터 요소들을 제공하는 것을 포함하는, 방법.
  9. 제7항 또는 제8항에 있어서, 각 수락자 모듈은 상기 수락자 모듈에 결합된 작업자와 동일한 연산 자원 상에 호스팅되고, 상기 수락자 모듈로부터 상기 작업자로 데이터 요소들을 패스하는 것은 프로세서간 통신을 필요로 하지 않고 수행되는, 방법.
  10. 제7항 내지 제9항 중 어느 한 항에 있어서, 제1 분할자 모듈은, 제1 수락자 모듈과 동일한 연산 자원 상에 호스팅되고, 제2 수락자 모듈과는 다른 연산 자원 상에 호스팅되며,
    상기 데이터 요소들을 라우팅하는 것은, 프로세서간 통신을 필요로 하지 않고 데이터 요소들을 상기 제1 분할자 모듈로부터 상기 제1 수락자 모듈로 패스하는 것을 포함하고,
    상기 데이터 요소들을 라우팅하는 것은, 상기 제2 수락자 모듈에 패스하기 위한 상기 데이터 요소들의 프로세서간 통신 전에 상기 제1 분할자 모듈에서 데이터 요소들을 큐잉하는 것을 포함하는, 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 상기 복수의 작업자는 적어도 하나의 작업자를 포함하고, 상기 적어도 하나의 작업자의 각 작업자는, 복수의 분할자 모듈로부터의 데이터 요소들을 수락하도록 구성된 수락자 모듈에 결합되는, 방법.
  12. 제11항에 있어서, 데이터 요소들은, 상기 분할자 모듈들 중 임의의 하나의 분할자 모듈로부터 선입선출 순서로 수신되는, 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 각 데이터 요소는 직렬화 값을 더 포함하고, 상기 제1 처리 에포크 동안, 상기 제1 구성을 사용하는 처리는, 동일한 직렬화 값을 갖는 두 개의 데이터 요소가 작업자에 의해 서로 동시에 처리되지 않게 하는 직렬화 정책을 실시하는, 방법.
  14. 제13항에 있어서, 상기 복수의 작업자는 적어도 하나의 작업자를 포함하고, 상기 적어도 하나의 작업자의 각 작업자는, 복수의 분할자 모듈로부터의 데이터 요소들을 수락하도록 구성된 수락자 모듈에 결합되고, 상기 수락자 모듈은, 동일한 직렬화 값을 갖는 두 개의 데이터 요소가 상기 수락자 모듈에 결합된 작업자에 의해 서로 동시에 처리되지 않게 하는 직렬화 정책을 실시하도록 구성된, 방법.
  15. 제13항 또는 제14항에 있어서, 상기 제1 처리 에포크 후이면서 상기 제2 처리 에포크 전에, 각각의 수정된 구성에 따른 처리가 상기 직렬화 정책을 계속 실시하는, 방법.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서, 상기 제1 처리 에포크 동안, 상기 컴포넌트들의 제1 구성을 사용하는 처리는, 제1 데이터 소스로부터 제1 순서로 수락된 동일한 분할 값을 갖는 모든 데이터 요소가 상기 복수의 작업자의 동일한 서브세트에 상기 제1 순서로 제공되게 하는 분할 정책을 실시하는, 방법.
  17. 제16항에 있어서, 상기 제1 처리 에포크 후이면서 상기 제2 처리 에포크 전에, 상기 제1 처리 에포크에 처리를 완료하지 않았으며 상기 제1 데이터 소스로부터 수락된 동일한 분할 값을 갖는 상기 데이터의 상기 제1 일부의 데이터 요소들이 동일한 작업자에 상기 제1 순서로 제공되는, 방법.
  18. 제17항에 있어서, 상기 데이터 요소들 중 적어도 일부가 상기 수정된 구성들의 컴포넌트들 간에 전달되는, 방법.
  19. 제1항 내지 제18항 중 어느 한 항에 있어서, 상기 컴포넌트들의 제2 구성은, (a) 분할 규칙, (b) 소스들의 세트, 및 (c) 작업자들의 세트 중 적어도 하나에 있어서 상기 제1 구성과 다른, 방법.
  20. 데이터 컬렉션을 분산 처리하도록 기계 판독가능 매체 상에 비일시적 형태로 저장된 소프트웨어로서,
    명령어를 포함하고, 상기 명령어는,
    데이터 처리 시스템의 적어도 하나의 프로세서에 의해 실행되는 경우, 상기 데이터 처리 시스템이,
    입력 장치 또는 포트를 통해, 분산 처리 시스템을 구성하기 위한 정보를 수신하게 하고,
    적어도 두 개의 처리 에포크 동안 상기 분산 처리 시스템의 데이터를 처리하게 하고,
    상기 구성은 상기 분산 처리 시스템의 컴포넌트들의 제1 구성을 형성하는 것을 포함하고, 상기 제1 구성은 상기 데이터 컬렉션의 데이터 요소들의 복수의 소스 및 상기 데이터 컬렉션의 데이터 요소들을 처리하도록 구성된 복수의 작업자를 포함하고, 상기 소스들과 작업자들은 복수의 연산 자원 간에 분산되고, 각 데이터 요소는, 상기 제1 구성의 분할 규칙에 따라 상기 제1 구성의 상기 복수의 작업자의 서브세트를 식별하는 분할 값을 포함하고,
    상기 처리하게 하는 것은,
    제1 처리 에포크에 상기 데이터 컬렉션의 제1 일부에 대한 상기 소스들로부터의 데이터 요소들을 수락하고, 상기 데이터 요소들을 상기 제1 구성을 통해 라우팅하고 상기 데이터 요소들 중 적어도 일부의 처리를 완료하는 것으로서, 상기 제1 일부의 다른 데이터 요소들은 상기 제1 구성의 컴포넌트들에서 큐잉 상태로 유지되게 하는 것;
    상기 데이터 컬렉션의 제1 일부를 수락한 후, 상기 제1 구성으로부터 제2 구성으로 상기 분산 처리 시스템의 구성 변경을 개시하는 것;
    상기 구성 변경을 개시한 후, 상기 시스템의 컴포넌트들의 구성들 간의 연속된 적어도 두 개의 천이를 컴포넌트들의 연속되는 수정된 구성들로 수행하고, 상기 수정된 구성의 컴포넌트들 간의 상기 데이터 요소들의 천이를 야기하는 각 천이 후에, 상기 수정된 구성들 중 최종 구성이 상기 제2 구성에 해당하고, 이에 따라 상기 제1 구성으로부터 상기 제2 구성으로의 천이를 완료하는 것; 및
    상기 제2 구성으로의 천이를 완료한 후, 제2 처리 에포크에 상기 제2 구성의 복수의 소스로부터 상기 데이터 컬렉션의 추가 데이터 요소들을 수락하는 것을 포함하는, 소프트웨어.
  21. 분산 처리 시스템으로서,
    복수의 처리 엔진을 포함하고, 컴포넌트들의 제1 구성에 따라 상기 처리 엔진들 간에 분산된 컴포넌트들의 구성을 실행하고, 컴포넌트들의 연속되는 수정된 구성들로 상기 시스템의 컴포넌트들의 구성들 간의 연속 천이를 통해 컴포넌트들의 제2 구성으로의 천이를 가능하게 하도록 구성되고,
    상기 컴포넌트들의 제1 구성은,
    데이터 컬렉션의 데이터 요소들의 복수의 소스 및 상기 데이터 컬렉션의 데이터 요소들을 처리하도록 구성된 복수의 작업자로서, 상기 소스들과 작업자들은 복수의 처리 엔진 간에 분산되고, 각 데이터 요소는, 상기 제1 구성의 분할 규칙에 따라 상기 제1 구성의 상기 복수의 작업자의 서브세트를 식별하는 분할 값을 포함하는 것인, 복수의 소스와 복수의 작업자;
    복수의 분할자 모듈로서, 각 분할자 모듈이 상기 소스로부터의 데이터 요소들을 수락하도록 구성되고, 각 분할자가 상기 분할 규칙에 따라 식별되는 작업자로 데이터 요소들을 향하게 하도록 상기 분할 규칙으로 구성된, 복수의 분할자 모듈; 및
    복수의 수락자 모듈로서, 각 수락자 모듈은, 복수의 분할자 모듈로부터의 데이터 요소들을 수락하고 데이터 요소들을 적어도 하나의 작업자에 제공하도록 구성된, 복수의 수락자 모듈을 포함하고,
    상기 시스템은, 컴포넌트들의 연속되는 수정된 구성들로 상기 시스템의 컴포넌트들의 구성들 간의 연속된 적어도 두 개의 천이를 수행함으로써, 상기 제1 구성으로부터 상기 제2 구성으로 변경되도록 구성되고,
    상기 수정된 구성의 컴포넌트들 간의 데이터 요소들의 전달을 야기하는 각 천이 후에, 상기 수정된 구성들 중 최종 구성이 상기 제2 구성에 해당하고, 이에 따라 상기 제1 구성으로부터 상기 제2 구성으로의 천이를 완료하는, 분산 처리 시스템.
KR1020187036267A 2016-05-17 2017-05-17 재구성가능한 분산 처리 KR102181640B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662337422P 2016-05-17 2016-05-17
US62/337,422 2016-05-17
PCT/US2017/033033 WO2017201127A1 (en) 2016-05-17 2017-05-17 Reconfigurable distributed processing

Publications (2)

Publication Number Publication Date
KR20190007043A true KR20190007043A (ko) 2019-01-21
KR102181640B1 KR102181640B1 (ko) 2020-11-23

Family

ID=58873888

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187036267A KR102181640B1 (ko) 2016-05-17 2017-05-17 재구성가능한 분산 처리

Country Status (9)

Country Link
US (2) US10606827B2 (ko)
EP (1) EP3458959B1 (ko)
JP (1) JP6698177B2 (ko)
KR (1) KR102181640B1 (ko)
CN (1) CN109154897B (ko)
AU (1) AU2017266901B2 (ko)
CA (1) CA3024375C (ko)
SG (1) SG11201809097WA (ko)
WO (1) WO2017201127A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11201803928UA (en) 2015-12-17 2018-06-28 Ab Initio Technology Llc Processing data using dynamic partitioning
SG11201809097WA (en) 2016-05-17 2018-11-29 Ab Initio Technology Llc Reconfigurable distributed processing
EP3258382B1 (en) * 2016-06-14 2021-08-11 Arm Ltd A storage controller
US10862755B2 (en) * 2017-06-30 2020-12-08 Oracle International Corporation High-performance data repartitioning for cloud-scale clusters
US9934287B1 (en) 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
US10409601B2 (en) * 2017-12-29 2019-09-10 Intel Corporation Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline
WO2020006571A1 (en) 2018-06-29 2020-01-02 pulseData Inc. Machine learning systems and methods for predicting risk of renal function decline
US11061596B2 (en) 2019-11-04 2021-07-13 Google Llc Multi-pass distributed data shuffle

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080022151A1 (en) * 2006-07-18 2008-01-24 Honeywell International Inc. Methods and systems for providing reconfigurable and recoverable computing resources
JP2009282807A (ja) * 2008-05-23 2009-12-03 Fujitsu Ltd メッセージ紐付け処理装置、方法及びプログラム
KR20140023971A (ko) * 2011-05-13 2014-02-27 베네핏포커스.컴, 인크. 고도로 동시적인 처리 작업들의 등록 및 실행
US20150046541A1 (en) * 2013-08-06 2015-02-12 Oracle International Corporation System and method for providing a messaging cluster with hybrid partitions
US20160062776A1 (en) * 2014-09-02 2016-03-03 Ab lnitio Technology LLC Executing graph-based program specifications

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5241652A (en) 1989-06-08 1993-08-31 Digital Equipment Corporation System for performing rule partitioning in a rete network
US5819021A (en) 1995-12-11 1998-10-06 Ab Initio Software Corporation Overpartitioning system and method for increasing checkpoints in component-based parallel applications
US7720968B2 (en) * 2003-04-30 2010-05-18 International Business Machines Corporation Method and system of configuring elements of a distributed computing system for optimized value
CA2529925C (en) 2003-06-25 2016-08-23 Ab Initio Software Corporation Computer-aided parallelizing of computation graphs
US7734585B2 (en) * 2004-12-03 2010-06-08 Oracle International Corporation Updateable fan-out replication with reconfigurable master association
US20070016907A1 (en) 2005-07-12 2007-01-18 Fabio Benedetti Method, system and computer program for automatic provisioning of resources to scheduled jobs
US7870556B2 (en) * 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
US9251207B2 (en) 2007-11-29 2016-02-02 Microsoft Technology Licensing, Llc Partitioning and repartitioning for data parallel operations
US20090287986A1 (en) 2008-05-14 2009-11-19 Ab Initio Software Corporation Managing storage of individually accessible data units
US20100114826A1 (en) * 2008-10-24 2010-05-06 Microsoft Corporation Configuration management in distributed data systems
KR101738647B1 (ko) * 2008-12-02 2017-06-08 아브 이니티오 테크놀로지 엘엘시 데이터 유지 시스템
US9043401B2 (en) 2009-10-08 2015-05-26 Ebay Inc. Systems and methods to process a request received at an application program interface
US8380724B2 (en) 2009-11-24 2013-02-19 Microsoft Corporation Grouping mechanism for multiple processor core execution
JP5489689B2 (ja) 2009-12-14 2014-05-14 オリンパス株式会社 照明装置及び内視鏡
US9007898B2 (en) 2011-02-01 2015-04-14 Google Inc. System to share network bandwidth among competing applications
US9817700B2 (en) 2011-04-26 2017-11-14 International Business Machines Corporation Dynamic data partitioning for optimal resource utilization in a parallel data processing system
US9170852B2 (en) * 2012-02-02 2015-10-27 Microsoft Technology Licensing, Llc Self-updating functionality in a distributed system
CN105765575B (zh) 2013-11-11 2019-11-05 亚马逊科技公司 数据流摄取和持久性技术
CN104092718B (zh) * 2013-12-12 2017-10-24 腾讯数码(天津)有限公司 分布式系统及分布式系统中配置信息的更新方法
CN105335376B (zh) * 2014-06-23 2018-12-07 华为技术有限公司 一种流处理方法、装置及系统
US9760406B2 (en) 2014-09-02 2017-09-12 Ab Initio Technology Llc Controlling data processing tasks
US10356150B1 (en) * 2014-12-15 2019-07-16 Amazon Technologies, Inc. Automated repartitioning of streaming data
CN110222923A (zh) * 2015-09-11 2019-09-10 福建师范大学 可动态配置的大数据分析系统
SG11201803928UA (en) * 2015-12-17 2018-06-28 Ab Initio Technology Llc Processing data using dynamic partitioning
SG11201809097WA (en) 2016-05-17 2018-11-29 Ab Initio Technology Llc Reconfigurable distributed processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080022151A1 (en) * 2006-07-18 2008-01-24 Honeywell International Inc. Methods and systems for providing reconfigurable and recoverable computing resources
JP2009282807A (ja) * 2008-05-23 2009-12-03 Fujitsu Ltd メッセージ紐付け処理装置、方法及びプログラム
KR20140023971A (ko) * 2011-05-13 2014-02-27 베네핏포커스.컴, 인크. 고도로 동시적인 처리 작업들의 등록 및 실행
US20150046541A1 (en) * 2013-08-06 2015-02-12 Oracle International Corporation System and method for providing a messaging cluster with hybrid partitions
US20160062776A1 (en) * 2014-09-02 2016-03-03 Ab lnitio Technology LLC Executing graph-based program specifications

Also Published As

Publication number Publication date
AU2017266901B2 (en) 2020-01-16
EP3458959A1 (en) 2019-03-27
EP3458959B1 (en) 2023-03-22
CN109154897B (zh) 2022-01-21
US20170337241A1 (en) 2017-11-23
WO2017201127A1 (en) 2017-11-23
CA3024375A1 (en) 2017-11-23
JP2019517065A (ja) 2019-06-20
KR102181640B1 (ko) 2020-11-23
CA3024375C (en) 2021-04-27
AU2017266901A1 (en) 2018-11-15
CN109154897A (zh) 2019-01-04
SG11201809097WA (en) 2018-11-29
JP6698177B2 (ja) 2020-05-27
US20210049146A1 (en) 2021-02-18
US10606827B2 (en) 2020-03-31

Similar Documents

Publication Publication Date Title
KR102181640B1 (ko) 재구성가능한 분산 처리
Zaharia et al. Job scheduling for multi-user mapreduce clusters
Chowdhury et al. Coflow: A networking abstraction for cluster applications
US8756548B2 (en) Computing system with hardware reconfiguration mechanism and method of operation thereof
US9323619B2 (en) Deploying parallel data integration applications to distributed computing environments
CA3005400C (en) Processing data using dynamic partitioning
US20160202999A1 (en) A Computing Platform, A Reconfigurable Hardware Device And A Method for Simultaneously Executing Processes On Dynamically Reconfigurable Hardware Device, Such As An FPGA, As Well As Instruction Set Processors, Such As A CPU, And A Related Computer Readable Medium
US8849888B2 (en) Candidate set solver with user advice
Ahmadinia et al. Task scheduling for heterogeneous reconfigurable computers
JP2014016700A (ja) 情報処理システム、情報処理システムの制御方法及び制御プログラム
JP2014153935A (ja) 並列分散処理制御装置、並列分散処理制御システム、並列分散処理制御方法および並列分散処理制御プログラム
Divya et al. Big Data Analysis and Its Scheduling Policy–Hadoop
JP6445876B2 (ja) リソース割当装置、リソース割当システム、および、リソース割当方法
Shelar Dynamic Resources allocation using Priority Aware scheduling in Kubernetes
Lahu Dynamic Resources allocation using Priority Aware scheduling in Kubernetes
WO2017003295A1 (en) A computing platform system arranged for executing a plurality of processes and a method for handling processes in one of a plurality of connected computing platforms comprised in a computing platform system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant