KR102376477B1 - 데이터 교환 메커니즘을 포함하는 전자 시스템 및 그것의 동작 방법 - Google Patents
데이터 교환 메커니즘을 포함하는 전자 시스템 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR102376477B1 KR102376477B1 KR1020160159561A KR20160159561A KR102376477B1 KR 102376477 B1 KR102376477 B1 KR 102376477B1 KR 1020160159561 A KR1020160159561 A KR 1020160159561A KR 20160159561 A KR20160159561 A KR 20160159561A KR 102376477 B1 KR102376477 B1 KR 102376477B1
- Authority
- KR
- South Korea
- Prior art keywords
- shuffling
- data
- sub
- cluster
- tasks
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 24
- 230000007246 mechanism Effects 0.000 title description 13
- 238000003860 storage Methods 0.000 claims abstract description 51
- 238000012805 post-processing Methods 0.000 claims description 25
- 238000007781 pre-processing Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 9
- 238000005192 partition Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 3
- 238000013403 standard screening design Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000011017 operating method Methods 0.000 description 5
- 230000002860 competitive effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000003467 diminishing effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 전자 시스템은 병렬 실행 태스크들의 그룹으로 사용자 프로그램을 분할하고, 그리고 상기 병렬 실행 태스크들로부터 중간 데이터와 처리된 데이터를 맵핑하기 위해 셔플링 메타데이터를 생성하는 클러스터 매니저, 상기 클러스터 매니저와 연결되고, 인-스토리지 컴퓨터에 의해 상기 셔플링 메타데이터를 저장하고, 그리고 상기 병렬 실행 태스크들이 진행되는 경우 상기 셔플링 메타데이터에 기초하여 상기 인-스토리지 컴퓨터에 의해 상기 중간 데이터 및 상기 처리된 데이터의 서브-패킷들 각각을 점진적으로 셔플하는 셔플링 클러스터 노드, 그리고 상기 셔플링 클러스터 노드와 연결되고 상기 셔플링 메타데이터를 통하여 맵핑되어, 상기 셔플링 클러스터 노드로부터 상기 처리된 데이터의 상기 서브-패킷들을 수신하기 위한 로컬 스토리지를 포함한다.
Description
본 발명은 전자 시스템에 관한 것으로, 좀 더 구체적으로 전자 시스템들을 대한 데이터 교환 기능들을 위한 시스템에 관한 것이다.
현대의 전자 시스템들은 신속한 사용자 프로그램들의 실행 및 데이터의 처리(manipulation)에 의지한다. 분산형 클러스터 컴퓨팅(distributed cluster computing)의 다수는 데이터흐름 프로그래밍 모델(dataflow programming model)들에 기초한다. Hadoop ™ 및 Spark ™는 분산형 클러스터 컴퓨팅을 위한 플랫폼들의 대표적인 예들이다. 데이터 흐름 프로그래밍 모델에서 하나의 특징은, 클러스터 매니저(cluster manager)에 의해 실행이 제어될 수 있도록, 데이터 및 작업자(worker) 맵핑들이 미리 정의된다는 것이다. 또한, Hadoop ™ 및 Spark ™는 데이터를 로컬하게(locally) 활용하기 위해 적극적으로 데이터를 캐시(cache)한다. 이러한 캐싱 시스템(caching system)들은 입력 데이터 및 중간 데이터(intermediate data)를 보관하기 위해 많은 양의 메모리를 사용하는 소프트웨어 캐싱 메커니즘(software caching mechanism)들에 보통적으로 기초한다.
데이터를 처리할 때, 마스터 컨트롤러(master controller)는 클러스터의 노드들 사이에서 데이터의 셔플(섞기, shuffle)을 개시한다. 셔플은 클러스터에서 다음 프로세싱 위치로 트래버스(traverse)를 시도하는 데이터의 순간적인 병목 현상을 초래한다. 이것은 기존의 셔플 엔진(shuffle engine)이 중앙 집중되고 동기화되기 때문이다. 각각의 동기화된 셔플은 병렬 프로그래밍 및 실행에 대한 장벽을 생성한다. 그러므로, 데이터의 셔플은 데이터 이동 동안에 실행을 지연시킬 수 있고, 큰 전력 급증(power spike)들을 초래할 수 있다. 동작 중의 이러한 전력 급증은 사용자 프로그램의 실행에 지연들뿐만 아니라 전력 및 자원들을 전환함에 있어서 과잉 투자를 초래할 수 있다.
따라서, 클러스터형 컴퓨팅 환경(clustered computing environment)들에서 실행 신뢰성 및 성능의 향상을 위해 데이터 교환 메커니즘을 포함하는 전자 시스템에 대한 필요는 여전히 남아 있다. 끊임없이 증가하는 상업적 경쟁 압력의 관점에서, 시장에서 의미 있는 제품 차별화에 대한 증가하는 소비자 기대들 및 감소하는 기회들에 따라, 이러한 문제들의 해답을 찾는 것이 점점 더 중요해지고 있다. 추가적으로, 비용 감소, 효율 및 성능의 향상, 그리고 경쟁 압력에 부응에 대한 요구는 이러한 문제들에 대한 해답을 찾는 중요한 필요성에 훨씬 더 긴박함을 더한다.
이러한 문제들의 해결책들은 오랫동안 추구되어 왔지만 이전의 개발들은 어떠한 해결책을 시사하거나 제안하지 못하고 있다. 따라서, 이러한 문제들의 해결책들은 이 분야의 통상의 지식을 가진 자에게 오랫동안 알려지지 않았다.
통신 인터페이스에서 혼잡을 최소화하고, 사용자 프로그램을 효율적으로 실행하는 전자 시스템 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 전자 시스템은 병렬 실행 태스크들의 그룹으로 사용자 프로그램을 분할하고, 그리고 상기 병렬 실행 태스크들로부터 중간 데이터와 처리된 데이터를 맵핑하기 위해 셔플링 메타데이터를 생성하는 클러스터 매니저, 상기 클러스터 매니저와 연결되고, 인-스토리지 컴퓨터에 의해 상기 셔플링 메타데이터를 저장하고, 그리고 상기 병렬 실행 태스크들이 진행되는 경우 상기 셔플링 메타데이터에 기초하여 상기 인-스토리지 컴퓨터에 의해 상기 중간 데이터 및 상기 처리된 데이터의 서브-패킷들 각각을 점진적으로 셔플하는 셔플링 클러스터 노드, 그리고 상기 셔플링 클러스터 노드와 연결되고 상기 셔플링 메타데이터를 통하여 맵핑되어, 상기 셔플링 클러스터 노드로부터 상기 처리된 데이터의 상기 서브-패킷들을 수신하기 위한 로컬 스토리지를 포함한다.
본 발명의 실시 예에 따른 전자 시스템의 동작 방법은 병렬 실행 태스크들의 그룹으로 사용자 프로그램을 분할하고, 그리고 상기 병렬 실행 태스크들로부터 중간 데이터와 처리된 데이터를 맵핑하기 위해 셔플링 메타데이터를 생성하도록 클러스터 매니저를 구성하는 단계, 상기 셔플링 메타데이터를 저장하도록, 그리고 상기 병렬 실행 태스크들을 처리하는 경우 상기 셔플링 메타데이터에 기초하여 상기 중간 데이터 및 상기 처리된 데이터의 서브-패킷들 각각을 점진적으로 셔플하도록 셔플링 클러스터 노드를 구성하는 단계, 그리고 상기 셔플링 메타데이터를 통하여, 상기 셔플링 클러스터 노드로부터 상기 처리된 데이터의 상기 서브-패킷들을 수신하기 위한 로컬 스토리지를 맵핑하는 단계를 포함한다.
본 발명의 특정 실시 예들은 이상에서 언급된 것 이외에 또는 대신에 다른 단계들 또는 구성 요소들을 가진다. 그러한 단계들 또는 구성 요소들은 첨부된 도면들을 참조하여 이하의 상세한 설명을 읽음으로 이 분야의 통상의 지식은 가진 자에게 명확해질 것이다.
클러스터 노드들 사이의 데이터 셔플링을 제어하는 인-스토리지 컴퓨터를 통해 통신 인터페이스에서 혼잡을 최소화하고, 사용자 프로그램을 효율적으로 실행하는 전자 시스템 및 그것의 동작 방법을 제공할 수 있다.
도 1은 데이터 셔플링(data shuffling)을 포함하는 클러스터 컴퓨팅 시스템(cluster computing system)의 구조적인 블록도이다.
도 2는 실시 예에서 데이터 교환 메커니즘(data exchange mechanism)을 포함하는 전자 시스템의 기능적인 블록도이다.
도 3a 및 도 3b는 실시 예에서 클러스터 컴퓨팅 시스템 및 데이터 교환 메커니즘을 포함하는 전자 시스템에 의한 사용자 프로그램의 실행의 예시적인 시퀀스 도면을 보여준다.
도 4는 실시 예에서 전자 시스템의 초기화를 보여주는 순서도이다.
도 5는 본 발명의 다른 실시 예에서 전자 시스템의 동작 방법을 보여주는 순서도이다.
도 2는 실시 예에서 데이터 교환 메커니즘(data exchange mechanism)을 포함하는 전자 시스템의 기능적인 블록도이다.
도 3a 및 도 3b는 실시 예에서 클러스터 컴퓨팅 시스템 및 데이터 교환 메커니즘을 포함하는 전자 시스템에 의한 사용자 프로그램의 실행의 예시적인 시퀀스 도면을 보여준다.
도 4는 실시 예에서 전자 시스템의 초기화를 보여주는 순서도이다.
도 5는 본 발명의 다른 실시 예에서 전자 시스템의 동작 방법을 보여주는 순서도이다.
다양한 실시 예들은 중간 데이터(intermediate data)의 교환들을 적시에 설정함에 의해 분산형 입출력 인터페이스(distributed input/output interface)를 단순화할 수 있는 그리고 전자 시스템의 실행 효율을 최대화할 수 있는 분산형 클러스터 컴퓨팅(distributed cluster computing)을 위한 데이터 교환 메커니즘(data exchange mechanism)을 제공한다. 데이터 교환들의 실행은 로컬 스토리지(local storage)에서 활동을 최소화하고, 통신 인터페이스에서 혼잡을 최소화하고, 그리고 최대의 프로그램 실행 효율을 제공할 수 있는 후속 태스크(subsequent task)들의 실행을 개시하기 위해 모니터(monitor)되고 분석될 수 있다.
다양한 실시 예들은 클러스터 노드(cluster node)들 사이에서 자율적인 데이터 셔플링(data shuffling)을 생성하는 데이터 흐름 모델(data flow model)에 기초하여 분산형 클러스터 컴퓨팅 프레임워크(distributed cluster computing framework)를 위한 새로운 데이터 교환 메커니즘을 제공한다. 데이터 교환 메커니즘은 또한 자율적인 데이터 셔플링에 기초하여 태스크 행동(task behavior)을 모니터하고 프로파일(profile)한다. 클러스터 노드들은 인-스토리지 컴퓨트 스토리지(in-storage compute storage, ISC) 장치를 포함한다. 인-스토리지 컴퓨트 스토리지 장치는, 중간 병렬 태스크가 완료되고 목적지 노드가 데이터 교환을 수용할 용량을 가지게 되자마자, 중간 데이터를 목적지 노드로 교환할 수 있다. 클러스터 노드는 적절한 세분도(granularity)로 태스크 경과(task progress)를 모니터하고, 태스크들의 실행 동안 생성되는 중간 병렬 태스크의 완료에 기초하여 데이터 교환을 작동(trigger)시킬 수 있다.
이하의 실시 예들은 이 분야의 통상의 지식을 가진 자가 본 발명을 제작하고 사용할 수 있도록 충분히 상세하게 설명된다. 다른 실시 예들은 본 개시에 기초하여 분명해질 것이고, 그리고 시스템, 프로세스, 또는 기계적 변경들이 본 발명의 실시 예의 범위를 벗어나지 않고 이루어질 수 있음은 이해될 것이다.
이하의 설명에서, 다수의 특정한 세부 사항들이 본 발명의 철저한 이해를 제공하기 위해 주어질 것이다. 하지만, 본 발명은 이들 특정한 세부 사항들 없이 실시될 수 있음은 분명할 것이다. 본 발명의 실시 예를 모호하게 하는 것을 피하기 위해, 일부 잘 알려진 회로들, 시스템 구성들, 및 프로세스 단계들은 상세하게 개시되지 않는다.
본 발명의 시스템의 실시 예들을 보여주는 도면들은 개략적이고, 비례가 아니고, 특히 치수들의 일부는 설명의 명료성을 위한 것이며 도면들에서 과장되게 도시되어 있다. 유사하게, 비록 설명의 용이를 위해 도면들에서 관점들은 일반적으로 유사한 방위를 나타내지만, 도면들에서 이러한 묘사는 대부분 부분적으로 임의적이다.
본 발명에서 사용되는 “모듈(module)”이라는 용어는, 용어가 사용되는 문맥에 따라 본 발명의 실시 예에서, 소프트웨어, 하드웨어, 또는 이들의 결합을 포함할 수 있다. 예를 들면, 소프트웨어는 머신 코드(machine code), 펌웨어(firmware), 임베디드 코드(embedded code), 및 응용 소프트웨어(application software)일 수 있다. 또한 예를 들면, 하드웨어는 회로(circuitry), 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, MEMS(microelectromechanical system), 수동 소자들, 또는 이들의 결합일 수 있다. 더욱이, 만약 모듈이 아래의 장치 청구항들에 기재된 경우, 모듈들은 장치 청구항들의 청구 범위의 목적 및 범위를 위한 하드웨어 회로를 포함하는 것으로 의미한다.
본 발명에서 사용되는 “유닛(unit)”이라는 용어는 타이밍에 중요한 특정 기능에 사용되며 소프트웨어 기능들 또는 지원을 포함하지 않는 하드웨어 구성 요소들 또는 하드웨어 상태 머신들로 형성된 회로이다.
도 1을 참조하면, 데이터 셔플링(data shuffling)을 포함하는 클러스터 컴퓨팅 시스템(cluster computing system, 100)의 구성적인 블록도를 보여준다. 전자 시스템(100)은 애플리케이션 프로그램과 같은 사용자 프로그램(102)을 포함한다. 사용자 프로그램(102)은 종래의 분산형 클러스터 컴퓨팅 환경에서 데이터 처리에 사용될 수 있다.
마스터 컨트롤러(master controller, 104)는 다수의 클러스터 노드(cluster node, 108)들을 교차하여 반복적인 태스크들의 할당(assigning repetitive tasks, 106)을 위해 사용자 프로그램(102)을 분석할 수 있다. 마스터 컨트롤러(104)는, 사용자 프로그램(102)을 분석(parse)하고 클러스터 노드(108)들에 의해 실행을 조정할 수 있는, 프로세서, 마이크로프로세서, 코어 프로세서, 컴퓨터, 또는 서버일 수 있다. 클러스터 노드(108)들은, 사용자 프로그램(102)의 일부인 반복적인 태스크가 할당될 수 있는, 프로세서, 마이크로프로세서, 코어 프로세서, 컴퓨터, 또는 서버일 수 있다.
마스터 컨트롤러(104)는 스플리트(split, 112)들로 입력 데이터(110)의 분석을 계획할 수 있다. 스플리트(112)들은 클러스터 노드(108)로 개별적으로 할당된 특정한 태스크를 적용하는 입력 데이터(110)의 일부일 수 있다. 클러스터 노드(108)들 각각이 입력 데이터(110)의 할당된 스플리트(112) 내에서 입력 데이터(110)에 동일한 처리를 수행하도록 입력 데이터(110)는 분석될 수 있다. 입력 데이터(110)는 사용자 프로그램(102)을 성공적인 완료까지 처리하기 위해 요구되는 데이터의 일부 또는 전부일 수 있다.
어떤 수의 클러스터 노드(108)들도 마스터 컨트롤러(104)에 의해 관리될 수 있음은 이해될 것이다. 마스터 컨트롤러(104)는 전-처리 클라이언트(pre-processing client, 114)들 및 후-처리 클라이언트(post-processing client, 116)들로서 수행하는 다수의 클러스터 노드(108)들을 할당할 수 있다. 전-처리 클라이언트(114)들은 중간 데이터(intermediate data, 122)를 생성하기 위해 입력 데이터(110)로부터 스플리트(112)를 처리하도록 할당되는 클러스터 노드(108)들일 수 있다. 중간 데이터(122)는, 사용자 프로그램(102)를 위해, 전-처리 클라이언트(114)들에 의해 입력 데이터(110)를 처리한 첫 번째 부분 결과일 수 있다.
후-처리 클라이언트(116)들은 중간 데이터(122)를 처리하도록 그리고 입력 데이터(110)에 사용자 프로그램(102)을 실행한 결과의 일부로서 처리된 데이터(119)를 생성하도록 할당된 클러스터 노드(108)들일 수 있다. 입력 데이터(110)와 전-처리 클라이언트(114)들의 결정론적 맵핑(deterministic mapping)에서, 마스터 컨트롤러(104)는, 처리된 데이터(119)로부터, 로컬 스토리지(local storage, 120)에 저장될 출력 파일(output file, 118)들을 생성하기 위해 감소된 수의 후-처리 클라이언트(116)들을 할당할 수 있다.
전-처리 클라이언트(114)들은, 스플리트(112)의 완성까지 중간 데이터(122)를 보관할 수 있는, 불휘발성 랜덤 액세스 메모리(non-volatile random access memory, NVRAM), 솔리드 스테이트 드라이브(solid state drive, SSD), 또는 하드 디스크 드라이브(hard disk drive, HDD)를 포함할 수 있다. 스플리트(112)가 관련이 있지만 자율적인 몇몇 중간 병렬 태스크들을 포함할 수 있음은 이해될 것이다. 모든 중간 병렬 태스크들이 완료될 때까지 스플리트(112)가 완료된 것으로 간주되지 않는 동안, 중간 병렬 태스크들은 적절히 완료될 수 있다.
마스터 컨트롤러(104)는 사용자 프로그램(102)의 요구 사항들에 기초하여 추가적인 처리를 위해 후-처리 클라이언트(116)들로 중간 데이터(122)를 셔플(shuffle)할 수 있다. 후-처리 클라이언트(116)들은 처리된 데이터(119)를 생성하기 위해 그들의 병렬 실행 태스크들을 실행할 수 있다. 처리된 데이터(119)는 후-처리 클라이언트(116)들 중 하나에 의해 생성되는 출력 파일(118)들의 일부일 수 있다. 후-처리 클라이언트(116)들로부터 처리된 데이터(119)의 편집은 출력 파일(118)들을 형성할 수 있다.
마스터 컨트롤러(104)가, 사용자 프로그램(102)의 효과적인 실행을 제공하기 위해, 입력 데이터(110) 및 전-처리 클라이언트(114)들의 결정론적 맵핑을 제공할 수 있음은 이해될 것이다. 전-처리 클라이언트(114)들 각각은 입력 데이터(110)의 할당된 스플리트(112) 상의 특정한 태스크를 수행할 수 있다. 중간 데이터(122)의 셔플 및 후-처리 클라이언트(116)들의 실행의 조정은 마스터 컨트롤러(104)에 의해 조정될 수 있다. 마스터 컨트롤러(104)는 중간 데이터(122)의 셔플을 가능하게 하기 위해 전-처리 클라이언트(114)들 및 후-처리 클라이언트(116)들의 실행의 모니터링(monitoring) 및 프로파일링(profiling)을 활용할 수 있다.
마스터 컨트롤러(104)에 의해 중간 데이터(122)의 셔플의 게이팅(gating)은, 모든 통신 자원들이 동시에 활성화되기 때문에, 전-처리 클라이언트(114)들 및 후-처리 클라이언트(116)들 사이의 혼잡(congestion)을 야기할 수 있음은 이해될 것이다. 후-처리 클라이언트(116)들 각각은 다수의 전-처리 클라이언트(114)들로부터 입력을 받을 수 있기 때문에, 후-처리 클라이언트(116)들의 인터페이스 자원들에 대해서도 충돌이 야기될 수 있다. 후-처리 클라이언트(116)들에서 다음 레벨의 중간 병렬 태스크 실행은 전-처리 클라이언트(114)들 각각으로부터 중간 데이터(122)를 받지 않고서는 시작될 수 없다.
도 2를 참조하면, 본 발명의 실시 예에 따른 데이터 교환 메커니즘을 포함하는 전자 시스템(200)의 기능적 블록도를 보여준다. 데이터 교환 메커니즘을 포함하는 전자 시스템(200)의 기능적 블록도는 병렬 실행 태스크들의 그룹으로 사용자 프로그램(102)을 나누기 위해, 클러스터 노드 매니저 또는 조정 컨트롤러와 같은, 클러스터 매니저(cluster manager, 203)에 대한 실행 문맥(execution context, 202)을 제공하는 사용자 프로그램(102)을 보여준다. 클러스터 매니저(203)의 동작은, 클러스터 매니저(203)가 셔플링 클러스터 노드(shuffling cluster node, 204)를 지원하도록 프로그램적으로 변경될 수 있기 때문에, 마스터 컨트롤러(104)의 동작과 다르다. 이러한 변경은 클러스터 매니저(203)의 제어 없이 셔플링 클러스터 노드(204)가 중간 데이터(122)를 셔플하도록 가능하게 하는 클러스터 매니저(203)를 허용하는 스크립트(script) 프로그램의 장치 드라이버에 의해 수행될 수 있다. 실행 문맥(202)은 사용자 프로그램(102)의 실행에 적용하는 요구 사항들의 목록을 포함할 수 있다. 실행 문맥(202)은 사용자 프로그램(102) 내의 루틴(routine)들의 실행 순서를 명시할 수 있다. 클러스터 매니저(203)는 클러스터 노드(204)들 중에서 사용자 프로그램(102)을 파싱하기 위해 실행 문맥(202)의 필요에 기초하여 전-처리 클라이언트(114)들 또는 후-처리 클라이언트(116)들의 하나로서 셔플링 클러스터 노드(204)를 할당할 수 있다.
클러스터 매니저(203)는, 전용 유선 버스, 멀티-연결 버스, 네트워크 버스, 또는 무선 네트워크 연결과 같은, 통신 버스(communication bus, 206)를 통해 셔플링 클러스터 노드(204)와 통신할 수 있다. 클러스터 매니저(203)는 전-처리 클라이언트(114)들 또는 후-처리 클라이언트(116)들로서 셔플링 클러스터 노드(204)를 병렬 실행 태스크에 할당하기 위해, 그리고 병렬 실행 태스크의 실행 중에 그들의 경과를 모니터하기 위해 통신 버스(206)를 사용할 수 있다. 통신 버스(206)는 셔플링 클러스터 노드(204) 및 클러스터 매니저(203) 사이에서 할당(assignment)들, 상태(status), 및 메타데이터(metadata)를 통신하기 위한 양방향 버스일 수 있다. 통신 버스(206)의 실시 예는 통신 프로토콜을 가지는 네트워크 또는 셔플링 클러스터 노드(204)에서 클러스터 매니저(203)에 의해 쓰여지고 읽어질 수 있는 전용 레지스터 포트(dedicated register port)를 포함할 수 있다.
클러스터 매니저(203) 내의 셔플링 제어 유닛(shuffling control unit, 210)은 실행 문맥(202)에 따라 사용자 프로그램(102)의 실행을 위한 사용자 데이터를 액세스 및 셔플링하기 위해 셔플링 메타데이터(shuffling metadata, 212)를 제공할 수 있다. 셔플링 메타데이터(212)는 중간 데이터(122) 각각의 전송을 위해 목적지 어드레스 및 크기를 포함할 수 있다. 셔플링 메타데이터(212)는 목적지 어드레스 및 전송 크기를 포함하는 병렬 실행 태스크들의 서브-태스크(sub-task)들 각각을 위해 셔플링 태스크를 정의할 수 있다. 셔플링 제어 유닛(210)은 전-처리 클라이언트(114)들 및 후-처리 클라이언트(116)들 중 적절한 곳으로 셔플링 메타데이터(212)를 제공하기 위해 사용자 프로그램(102)의 초기 파티션(분할, partition)을 수행할 수 있다. 셔플링 제어 유닛(210)은 셔플링 클러스터 노드(204)의 인-스토리지 컴퓨터(in-storage computer; 이하에서 ISC, 214)로 셔플링 메타데이터(212)를 전달할 수 있다. 셔플링 제어 유닛(210)은 전-처리 클라이언트(114)들 및 후-처리 클라이언트(116)들에 의한 사용자 프로그램(102)의 실행에 기초하여 ISC(214)로 셔플링 메타데이터(212)를 제공할 수 있다. 셔플링 메타데이터(212)는 중간 데이터(122)의 데이터 서브-패킷(data sub-packet)들에 대한 목적지 어드레스 및 크기를 제공할 수 있다.
셔플링 클러스터 노드(204) 각각은, 프로세서, 임베디드 프로세서, 마이크로-프로세서, 또는 시퀀서와 같은 ISC(214)를 포함하며, ISC(214)는 클러스터 매니저(203)에 의해 할당된 사용자 프로그램(102)의 일부를 실행할 수 있다. ISC(214)는, 노드 중앙 처리 장치(node central processing unit; 이하에서 노드 CPU, 216)가 셔플링 클러스터 노드(204)로 할당된 병렬 실행 태스크들을 실행함에 따라, 태스크 경과를 추적할 수 있다. 노드 CPU(216)는 클러스터 매니저(203)에 의해 할당된 병렬 실행 태스크들을 실행하는 프로세서, 임베디드 프로세서, 마이크로-프로세서, 하드웨어 상태 머신, 순차 논리 프로세서, 조합 논리, 또는 시퀀서일 수 있다. 실시 예에서, ISC(214) 및 노드 CPU(216)의 기능들은 동일한 장치에 의해 수행될 수 있음은 이해될 것이다.
노드 CPU(216)는 로컬 스토리지(120)로부터 도 1의 스플리트(112)를 검색하고, 노드 스토리지 엔진(node storage engine, 218)에 스플리트(112)를 저장할 수 있다. 노드 스토리지 엔진(218)은 또한 클러스터 매니저(203)에 의해 셔플링 클러스터 노드(204)로 보내진 병렬 실행 태스크들을 저장할 수 있다. 노드 스토리지 엔진(218)은 노드 CPU(216) 및 ISC(214) 모두에 연결될 수 있다. 노드 CPU(216)는 도 1의 입력 데이터(110)의 스플리트(112)들을 검색하기 위해 노드 스토리지 엔진(218)을 액세스할 수 있다. 노드 스토리지 엔진(218)은 온-보드(on-board) 캐시 메모리, 실행 메모리, 상태 메모리지, 또는 이들의 결합을 포함할 수 있다. 노드 스토리지 엔진(218)은 셔플링 클러스터 노드(204) 또는 로컬 스토리지(120) 중 다른 곳으로 셔플링 클러스터 노드(204)를 연결하는 스토리지 인터페이스를 또한 포함할 수 있다.
노드 스토리지 엔진(218)은 사용자 프로그램(102)으로부터 파싱된 실행 문맥(202)에 기초하여 노드 CPU(216)에 의해 초기화될 수 있다. 사용자 프로그램(102)의 실행 동안에, 노드 CPU(216)는 전-처리 클라이언트(114)들 또는 후-처리 클라이언트(116)들 사이에서 입력 데이터의 실행 및 중간 데이터(122)의 셔플링을 위한 셔플링 메타데이터(212)를 포함하는 셔플링 제어 유닛(210)으로부터 업데이트들을 수신할 수 있다. 노드 스토리지 엔진(218)은 전-처리 클라이언트(114)들 또는 후-처리 클라이언트(116)들로서 셔플링 클러스터 노드(204)의 할당에 따라 도 1의 중간 데이터(122) 또는 처리된 데이터(119)를 쓸 수 있다.
입력 데이터(110) 및 중간 데이터(122)는, 분산형 클러스터 컴퓨팅 환경에서 ISC(214)가 전-처리 클라이언트(114)들 및 후-처리 클라이언트(116)들 사이에서 중간 데이터(122)를 교환할 때까지, 노드 스토리지 엔진(218)에서 유지될 수 있음은 이해될 것이다. 클러스터 매니저(203)는 셔플링 메타데이터(212)를 통해 스플리트(112)들 및 중간 데이터(122)를 위한 저장 용량의 할당을 책임질 수 있다.
노드 CPU(216)의 실시 예는 중간 데이터 서브-패킷의 크기 및 목적지 어드레스를 포함하는 셔플링 메타데이터(212)로부터의 입력에 기초하여 병렬 실행 태스크의 서브-태스크들을 순차적으로 실행할 수 있음이 개시되었다. 셔플링 클러스터 노드(204)는, 클러스터 매니저(203)의 중재 없이, 셔플링 메타데이터(212)에 기초하여 병렬 실행 태스크의 서브-태스크들 각각의 완료 시 중간 데이터(122)의 서브-패킷들을 점진적으로 교환할 수 있다. ISC(214)는 도 1의 마스터 컨트롤러(104)에 의해 조정되는 데이터 셔플 구간에 대한 혼잡 및 필요를 제거함으로써 사용자 프로그램(102)의 실행 시간을 단축할 수 있음도 역시 개시되었다. 클러스터 매니저(203)에 의해 제어되는 것처럼, 모든 중간 데이터(122)의 병행하는 셔플링에 의해 야기되는 혼잡은 사용자 프로그램(102)의 실행 시간을 지연시킬 수 있다.
셔플링 클러스터 노드(204)는, ISC 솔리트 스테이트 드라이브(ISC solid state drive; 이하에서 ISC SSD, 204)와 같이, 단일 장치로 구현될 수 있음은 이해될 것이다. ISC SSD(204)는 전자 시스템(200)을 구현하기 위해 필요한 전산 자원, 저장 자원, 및 데이터 교환 자원을 제공할 수 있다. 클러스터 매니저(203) 및 ISC SSD(204) 사이의 통신은 생성(create), 시작(start)/정지(stop), 일시정지(pause)/재시작(resume), 및 셔플(shuffle)을 포함하는 제어 커맨드(command)들을 포함할 수 있다. ISC SSD(204)는, 서브-태스크들 각각이 완료되자마자, 클러스터 매니저(203)로부터 셔플 커맨드의 수신 없이 중간 데이터(122)의 중간 데이터 서브-패킷을 셔플할 수 있다. ISC SSD(204)는, 서브-태스크들 각각의 완료 시, 셔플링 메타데이터(212)에 의해 제공되는 목적지 어드레스에 기초하여 중간 데이터(122)를 즉시 셔플할 수 있다.
이제 도 3a 및 도 3b를 참조하면, 실시 예에서 클러스터 컴퓨팅 시스템(100) 및 데이터 교환 메커니즘을 포함하는 전자 시스템(200)에 의한 사용자 프로그램의 실행의 예시적인 시퀀스 도면(301)을 보여준다. 도 3a에 도시된 바와 같이, 종래의 클러스터 컴퓨팅 시스템(100)에 의한 사용자 프로그램(102)의 실행의 예시적인 시퀀스 도면은 도 1의 다수의 클러스터 노드(108)들 중에서 분산된 병렬 실행 태스크(302)를 포함할 수 있다. 도 1의 마스터 컨트롤러(104)는 클러스터 노드(108)들 각각에서 서브-태스크(304)들의 상태를 수집하여 병렬 실행 태스크(302)의 실행을 모니터할 수 있다. 클러스터 노드(108)들의 마지막이 병렬 실행 태스크(302)를 완료한 경우, 마스터 컨트롤러(104)는 데이터 셔플 간격(data shuffle interval, 306)을 개시할 수 있으며, 이 기간 동안 어떤 후속 태스크(308)도 실행 될 수 없다. 병렬 실행 태스크(302)가 클러스터 노드(108)들 중 하나에 의해 반복적으로 실행될 사용자 프로그램(102)의 일부일 수 있음은 이해될 것이다. 병렬 실행 태스크(302)들 각각은 도 1의 입력 데이터(110)의 다른 세그먼트(segment)들에서 반복적으로 실행되는 사용자 프로그램(102)의 일부일 수 있다. 실행의 반복들 각각은 서브-태스크(304)들을 구성(make-up)할 수 있고, 중간 데이터 서브-패킷(310)들을 생산할 수 있다.
만약 몇몇의 클러스터 노드(108)들이 중간 데이터 서브-패킷(310)들을 클러스터 노드(108)들 중 단일한 하나로 전송하도록 스케줄되면, 이는 순차적으로 발생하여야 하며, 데이터 셔플 간격(306)의 종료를 지연시키는 혼잡을 초래할 수 있으므로, 결국 데이터 셔플 간격(306)이 과장되고 확장될 수 있음은 이해될 것이다. 모든 클러스터 노드(108)들은 동시에 중간 데이터 서브-패킷(310)들을 전송하려고 시도하기 때문에, 추가적인 상호연결 하드웨어가 데이터 셔플 간격(306)을 적시에 완료하기 위해 요구될 수 있다.
중간 데이터 서브-패킷(310)들은 후속 태스크(308)의 초기 서브-태스크(initial sub-task, 312)로 입력 데이터를 제공할 수 있다. 후속 태스크(308)의 초기 서브-태스크(312)의 실행은 데이터 셔플 간격(306)의 완료 시까지 지연되어야 한다.
도 1의 사용자 프로그램(102)의 실행이 진행됨에 따라, 출력 태스크(output task, 314)는 처리된 데이터(119)를 생성할 수 있다. 처리된 데이터(119)는 파일 구성 간격(file construction interval, 316) 동안 도 1의 로컬 스토리지(120)로 전송될 수 있다. 처리된 데이터(119)는 사용자 프로그램(102)의 출력 파일들을 생성하기 위해 로컬 스토리지(120)에서 정돈될 수 있다.
반면에, 도 3b는 전자 시스템(200)에 의한 동일한 사용자 프로그램(102)의 실행을 보여준다. 도 2의 노드 CPU(216)가 서브-태스크(304)들 각각을 완료하자마자 도 2의 ISC(214)는 중간 데이터 서브-패킷(310)들을 점진적으로 전송하는 동안에, 노드 CPU(216)는 병렬 실행 태스크(302)를 실행할 수 있다. 실시 예에서, ISC(214) 및 노드 CPU(216)의 기능들은 동일한 장치에 의해 수행될 수 있음은 이해될 것이다. 노드 CPU(216)가 병렬 실행 태스크(302)에서 서브-태스크(304)들 중 다음 하나를 실행하는 동안에, ISC(214)는 독립적인 전송으로 중간 데이터 서브-패킷(310)들을 전송할 수 있다. 실시 예에서, 노드 CPU(216)는 셔플링 메타데이터(212)의 목적지 어드레스에 기초하여 중간 데이터 서브-패킷(310)들의 전송을 구성할 수 있고, 그러면 병렬 실행 태스크(302)에서 서브-태스크(304)의 다음 하나를 실행할 수 있다. 셔플링 메타데이터(212)는 목적지 어드레스 및 전송 크기를 제공하는 것을 포함하는 병렬 실행 태스크(302)들의 서브-태스크(304)들에 의해 생성된 중간 데이터 서브-패킷(310)들 각각에 대한 셔플링 태스크를 정의할 수 있다. 서브-태스크(304)의 점진적인 특성은, 다음의 서브-태스크(304)가 실행되는 동안에, 중간 데이터 서브-패킷(310)들을 또한 셔플할 수 있다. 해당 중간 데이터 서브-패킷(310)을 생성하는 서브-태스크(304)가 완료되자 마자, 중간 데이터 서브-패킷(310)을 점진적으로 셔플링하는 것은 도 3a의 데이터 셔플 간격(306)에 도시된 혼잡을 방지할 수 있다.
예를 들면, 서브-태스크(304)들은 중간 데이터 서브-패킷(310)들을 생성할 수 있다. 중간 데이터 서브-패킷(310)들은 ISC(214)에 의해 후속 태스크(308)의 초기 서브-태스크(312)를 실행할 클러스터 노드(204)로 교환될 수 있다. 서브-태스크(304)의 실행의 비동기적 특성은 전송 하드웨어(미도시)의 혼잡을 발생하지 않고 중간 데이터 서브-패킷(310)들의 교환을 분배할 수 있다. 더욱이 서브-태스크(304)들의 분배는, 후속 태스크(308)의 초기 서브-태스크(312)가 실행 준비되기 전에, 중간 데이터 서브-패킷(310)들이 노드 CPU(216)에 사용될 수 있도록 보장할 수 있다.
ISC(214)는 후속 태스크(308)의 초기 서브-태스크(312)를 실행하도록 스케줄되는 도 2의 적절한 클러스터 노드(204)로 중간 데이터 서브-패킷(310)들의 전송을 개시하기 위해 도 2의 셔플 메타데이터(212)에 의해 제공되는 중간 데이터 서브-패킷(310)들 각각에 대한 목적지 어드레스를 활용할 수 있다. 해당 중간 데이터 서브-패킷(310)을 생성하는 서브-태스크(304)가 완료되자 마자, 중간 데이터 서브-패킷(310)들을 점진적으로 전송하는 것의 결과로, 데이터 셔플 간격(306)은 제거되고 그리고 후속 태스크(308)는 병렬 실행 태스크(302)로부터 지연 없이 실행될 수 있다.
출력 태스크(314)는 파일 구성 간격(316)과 중첩될 수 있다. 출력 태스크(314)의 서브-태스크(304)들 각각이 처리된 데이터(119)를 생성함에 따라, ISC(214)는 출력 서브-패킷(output sub-packet, 318)들을 완료되는 것에 따라 로컬 스토리지(120)로 전송할 수 있다. 노드 CPU(216)는 사용자 프로그램(102)의 출력 파일들을 컴파일(compile)하기 위해 출력 태스크(314)를 실행할 수 있다. ISC(214)는 로컬 스토리지(120)에서 출력 서브-패킷(318)들을 정확하게 위치시키기 위해 셔플 메타데이터(212)를 액세스할 수 있다.
셔플 메타데이터(212)를 활용하며 데이터 교환 메커니즘을 포함하는 전자 시스템(200)의 실시 예는 데이터 셔플 간격(306)을 제거하고 노드 CPU(216)가 서브-태스크(304)들을 완료하자마자 중간 데이터 서브-패킷(310)들을 전송하여 사용자 프로그램(102)의 실행 시간을 상당히 감소시킬 수 있음이 개시되었다. 출력 태스크(314)와 파일 구성 간격(316)의 중첩은 사용자 프로그램(102)의 실행 시간을 더 감소시킬 수 있다.
도 4를 참조하면, 도 4는 실시 예에서 전자 시스템(200)의 초기화(initialization, 401)의 순서도를 보여준다. 전자 시스템(200)의 초기화(401)의 순서도는 초기화 시작 블록(402)을 도시한다. 초기화 시작 블록(402)에서, 도 2의 클러스터 매니저(203)는 도 2의 사용자 프로그램(102)을 파티션할 수 있다. 클러스터 매니저(203)는 사용자 프로그램(102)의 파티션을 지원하기 위해 도 1의 전-처리 클라이언트(114)들 및 후-처리 클라이언트(116)들을 할당할 수 있다. 그러면 순서는 ISC SSD 지원 블록(404)으로 이동한다.
ISC SSD 지원 블록(404)은 어드레스된 클러스터 노드가 도 2의 ISC SSD(204)인지 여부 및 도 1의 중간 데이터(122)의 점진적인 교환이 가능한지 여부를 판별할 수 있다. 만약 클러스터 매니저(203)가 ISC SSD(204)에 연결되어 있다면, 순서는 바이너리 코드 포함 블록(406)으로 이동한다. 바이너리 코드 포함 블록(406)에서, 사용자 프로그램(102)의 실행 가능한 부분의 존재가 검사된다.
만약 바이너리 코드가 ISC SSD(204)로 로드(load)되지 않았다면, 순서는 바이너리 코드 검색 블록(408)으로 이동한다. 바이너리 코드 검색 블록(408)은 사용자 프로그램(102)의 도 3의 병렬 실행 태스크(302)의 로딩(loading)을 개시할 수 있다. 클러스터 매니저(203)는 초기화 과정에 있는 ISC SSD(204)로 사용자 프로그램(102)의 실행 가능한 부분을 다운로드(download)할 수 있다. 그러면 순서는 사용자 프로그램(102)으로부터 병렬 실행 태스크(302)의 다운로드가 로드 되었는지를 검증하기 위해 바이너리 코드 포함 블록(406)으로 돌아간다. 그러면 순서는 메타데이터 포함 검사 블록(410)으로 이동한다. 만약 도 2의 셔플 메타데이터(212)가 로드되지 않았다면, 순서는 클러스터 매니저로부터 메타데이터 검색 블록(412)으로 이동한다.
클러스터 매니저로부터 메타데이터 검색 블록(412)에서, ISC SSD(204)는 클러스터 매니저(203)로부터 셔플 메타데이터(212)의 로딩을 개시할 수 있다. 클러스터 매니저(203)는 도 1의 전-처리 클라이언트(114)들, 후-처리 클라이언트(116)들, 및 로컬 스토리지(120)의 현재 맵핑에 대한 셔플 메타데이터(212)를 다운로드 할 수 있다. 셔플 메타데이터(212)는 도 3의 중간 데이터 서브-패킷(310)들 및 출력 서브-패킷(318)들의 트랜지션 맵핑(transition mapping)을 포함할 수 있다. 그러면 순서는 셔플 메타데이터(212)가 제대로 로드 되었는지를 검증하기 위해 메타데이터 포함 검사 블록(410)으로 돌아간다.
그러면 순서는 클러스터 매니저로 ISC SSD 응답 전송 블록(414)으로 이동한다. 클러스터 매니저로 ISC SSD 응답 전송 블록(414)은 클러스터 매니저(203)에 ISC SSD(204)가 초기화되고 도 3의 병렬 실행 태스크(302) 또는 후속 태스크(308)를 실행할 준비가 되었음을 알릴 수 있다. ISC SSD(204)들 각각은 클러스터 매니저(203)에 의해 할당된 바와 같이 사용자 프로그램(102)의 서로 다른 파티션을 실행할 수 있음은 이해될 것이다. 병렬 실행 태스크(302) 또는 후속 태스크(308)는 클러스터 매니저(203)에 연결된 ISC SSD(204)들 중 하나로 로드된 사용자 프로그램(102)의 파티션을 표현할 수 있다.
그러면 순서는 모든 노드들 완료 검사 블록(416)으로 이동한다. 만약 클러스터 매니저(203)에 연결된 모든 ISC SSD(204)들이 병렬 실행 태스크(302) 및 셔플 메타데이터(212)로 초기화되면, 순서는 종료된다. 만약 초기화되지 않은 ISC SSD(204)가 남아 있으면, 순서는 클러스터 매니저(203)에 유지된 연결 맵에서 다음 ISC SSD(204)을 초기화하기 위해 초기화 시작 블록(402)으로 돌아간다.
ISC SSD 지원 블록(404)에서, 만약 도 1의 클러스터 노드(108)들이 ISC SSD(204)가 아니면, 순서는 클러스터 매니저로 업데이트들 전송 블록(418)으로 이동한다. 클러스터 매니저(203)는 모든 클러스터 노드(108)들을 식별하는 것을 계속할 수 있다. 클러스터 매니저(203)에 연결된 클러스터 노드(108)들 모두가 ISC SSD(204)이 아닌 것을 검증하면, 사용자 프로그램(102)의 실행은 도 3a에 도시된 바와 같이 종래의 동작으로 돌아갈 수 있다. 클러스터 매니저(203)는 사용자 프로그램(102)을 실행하기 위한 데이터 교환들을 할당하는 것을 포함하는 데이터 셔플 간격(306)들을 인계할 수 있다.
데이터 교환 메커니즘을 포함하는 전자 시스템(200)은 데이터 셔플 간격(306)들을 제거하고 병렬 실행 태스크(302)들의 계속적인 실행을 허용하여 사용자 프로그램(102)의 실행을 가속할 수 있음이 개시되었다. 초기화(401)는 사용자 프로그램(102)를 실행하기 위한 ISC SSD(204) 또는 클러스터 노드(108)들의 구성을 제공할 수 있다.
도 5를 참조하면, 도 5는 본 발명의 다른 실시 예에서 전자 시스템(200)의 동작 방법(500)의 순서도를 보여준다. 동작 방법(500)은 다음과 같은 프로세스들을 포함한다. 프로세스(502)는, 사용자 프로그램(102)을 병렬 실행 태스크(302)들의 그룹으로 분할하고, 그리고 병렬 실행 태스크(302)들로부터 중간 데이터(122) 및 처리된 데이터(119)를 맵핑하기 위한 셔플링 메타데이터(212)를 생성하기 위해, 클러스터 매니저(203)를 설정한다. 프로세스(504)는, 셔플링 메타데이터(212)를 저장하고, 그리고 병렬 실행 태스크(302)를 처리할 경우 셔플링 메타데이터(212)에 기초하여 중간 데이터(112) 및 처리된 데이터(119)의 서브-패킷(310)들 각각을 점진적으로 셔플링하기 위해, 셔플링 클러스터 노드(204)를 설정한다. 프로세스(506)는, 셔플링 메타데이터(212)를 통해, 셔플링 클러스터 노드(204)로부터 처리된 데이터(119)를 수신하기 위해 로컬 스토리지(120)를 맵핑한다.
결과적으로 생성된 방법, 프로세스, 기구, 장치, 제품, 및/또는 시스템은 간단하고, 경제적이고, 복잡하지 않고, 매우 다용도이고, 정확하고, 민감하고, 및 효과적이며, 그리고 즉각적, 효율적 및 경제적인 제조, 응용 및 활용을 위해 알려진 구성 요소들을 적용하여 구현할 수 있다. 본 발명의 실시 예의 다른 중요한 측면은 비용 절감, 시스템 단순화 및 성능 향상이라는 역사적인 추세를 가치 있게 지원하고 서비스한다는 점이다.
결과적으로 본 발명의 실시 예의 이들 및 다른 가치 있는 측면들은 기술의 상태를 적어도 다음 수준으로 발전시킨다.
본 발명은 특정한 최상의 모드와 관련하여 설명되었지만, 다수의 대안, 수정 및 변형이 이 분야의 통상의 지식을 가진 자에게 자명하다는 것이 이해되어야 한다. 따라서, 첨부된 청구 범위 내에 속하는 그러한 모든 대안, 수정 및 변형은 포함될 수 있다. 본 발명에 설명되거나 첨부 도면에 도시된 모든 사항들은 예시적이고, 비 제한적으로 해석되어야 한다.
100: 클러스터 컴퓨팅 시스템
102: 사용자 프로그램
104: 마스터 컨트롤러
106: 태스크 할당
108: 클러스터 노드
110: 입력 데이터
112: 스플리트
114: 전-처리 클라이언트
116: 후-처리 클라이언트
118: 출력 파일
119: 처리된 데이터
120: 출력 데이터
122: 중간 데이터
200: 전자 시스템
202: 실행 문맥
203: 클러스터 매니저
204: 셔플링 클러스터 노드
206: 통신 버스
210: 셔플링 제어 유닛
212: 셔플링 메타데이터
214: ISC
216: 노드 CPU
218: 노드 스토리지 엔진
302: 병렬 실행 태스크
304: 서브-태스크
306: 데이터 셔플 간격
308: 후속 태스크
310: 중간 데이터 서브-패킷
312: 초기 서브-태스크
314: 출력 태스크
316: 파일 구성 간격
102: 사용자 프로그램
104: 마스터 컨트롤러
106: 태스크 할당
108: 클러스터 노드
110: 입력 데이터
112: 스플리트
114: 전-처리 클라이언트
116: 후-처리 클라이언트
118: 출력 파일
119: 처리된 데이터
120: 출력 데이터
122: 중간 데이터
200: 전자 시스템
202: 실행 문맥
203: 클러스터 매니저
204: 셔플링 클러스터 노드
206: 통신 버스
210: 셔플링 제어 유닛
212: 셔플링 메타데이터
214: ISC
216: 노드 CPU
218: 노드 스토리지 엔진
302: 병렬 실행 태스크
304: 서브-태스크
306: 데이터 셔플 간격
308: 후속 태스크
310: 중간 데이터 서브-패킷
312: 초기 서브-태스크
314: 출력 태스크
316: 파일 구성 간격
Claims (10)
- 병렬 실행 태스크들의 그룹으로 사용자 프로그램을 분할하고, 그리고 상기 병렬 실행 태스크들로부터 중간 데이터와 처리된 데이터를 맵핑하기 위해, 상기 병렬 실행 태스크들이 실행되기 전에 셔플링 메타데이터를 생성하는 클러스터 매니저;
상기 클러스터 매니저와 연결되고, 인-스토리지 컴퓨터(ISC; in-storage computer)를 포함하는 셔플링 클러스터 노드; 및
상기 셔플링 클러스터 노드와 연결된 로컬 스토리지를 포함하고,
상기 인-스토리지 컴퓨터는:
상기 인-스토리지 컴퓨터에 의해, 상기 클러스터 매니저로부터 수신된 셔플링 메타데이터를 저장하도록, 그리고
상기 인-스토리지 컴퓨터에 의해, 데이터 셔플 구간에 대한 필요를 제거하기 위해 상기 병렬 실행 태스크들이 처리되는 경우, 상기 셔플링 메타데이터에 기초하여 상기 중간 데이터 및 상기 처리된 데이터의 서브-패킷들을 점진적으로 셔플하도록 구성되고,
상기 로컬 스토리지는 상기 셔플링 클러스터 노드로부터 상기 처리된 데이터의 상기 서브-패킷들을 수신하기 위해 상기 셔플링 메타데이터를 통하여 맵핑된 전자 시스템. - 제 1 항에 있어서,
상기 클러스터 매니저는 상기 병렬 실행 태스크들의 서브-태스크들에 의해 생성되는 중간 데이터 서브-패킷들 각각에 대해 제공되는 목적지 어드레스를 포함하는 상기 셔플링 메타데이터를 상기 인-스토리지 컴퓨터로 전송하는 전자 시스템. - 제 1 항에 있어서,
상기 셔플링 클러스터 노드는 상기 중간 데이터를 생성하는 전-처리 클라이언트로서 구성되는 전자 시스템. - 제 1 항에 있어서,
상기 셔플링 클러스터 노드는 상기 처리된 데이터를 생성하는 후-처리 클라이언트로서 구성되는 전자 시스템. - 제 1 항에 있어서,
상기 클러스터 매니저는 상기 병렬 실행 태스크들의 그룹으로 상기 사용자 프로그램을 분할하고, 상기 병렬 실행 태스크들의 그룹은 상기 병렬 실행 태스크들 각각을 위해 정의되는 복수의 서브-태스크들을 포함하는 전자 시스템. - 제 1 항에 있어서,
상기 셔플링 클러스터 노드는 노드 스토리지 엔진에 연결되는 상기 인-스토리지 컴퓨터를 포함하되,
상기 인-스토리지 컴퓨터는 상기 병렬 실행 태스크들의 서브-태스크들을 모니터하고, 상기 셔플링 메타데이터에 기초하여 상기 중간 데이터의 데이터 서브-패킷을 전송하도록 구성된 전자 시스템. - 제 1 항에 있어서,
상기 셔플링 클러스터 노드는, 노드 스토리지 엔진에 연결되어 상기 병렬 실행 태스크들을 실행하는 노드 중앙 처리 장치를 포함하는 전자 시스템. - 제 1 항에 있어서,
상기 셔플링 클러스터 노드는, 셔플링 제어 유닛으로부터 상기 셔플링 메타데이터를 수신하는 상기 인-스토리지 컴퓨터를 포함하는 전자 시스템. - 제 1 항에 있어서,
상기 셔플링 클러스터 노드는 인-스토리지 컴퓨터를 포함하고,
상기 인-스토리지 컴퓨터는:
상기 병렬 실행 태스크들의 서브-태스크들을 모니터하고,
상기 셔플링 메타데이터로부터의 목적지 어드레스에 기초하여, 상기 서브-태스크들 각각이 완료될 때 상기 중간 데이터의 데이터 서브-패킷을 전송하고, 그리고
데이터 셔플 간격 없이 다음 태스크의 초기 서브-태스크를 위한 입력으로서 상기 데이터 서브-패킷을 수신하도록 구성된 전자 시스템. - 제 1 항에 있어서,
상기 셔플링 클러스터 노드는 후-처리 클라이언트로서 구성되고,
상기 셔플링 클러스터 노드는 상기 로컬 스토리지의 출력 파일로 상기 처리된 데이터를 전송하도록 구성된 상기 인-스토리지 컴퓨터를 포함하는 전자 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662286157P | 2016-01-22 | 2016-01-22 | |
US62/286,157 | 2016-01-22 | ||
US15/148,822 US10268521B2 (en) | 2016-01-22 | 2016-05-06 | Electronic system with data exchange mechanism and method of operation thereof |
US15/148,822 | 2016-05-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170088277A KR20170088277A (ko) | 2017-08-01 |
KR102376477B1 true KR102376477B1 (ko) | 2022-03-18 |
Family
ID=59360523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160159561A KR102376477B1 (ko) | 2016-01-22 | 2016-11-28 | 데이터 교환 메커니즘을 포함하는 전자 시스템 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10268521B2 (ko) |
KR (1) | KR102376477B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10540207B1 (en) * | 2018-07-18 | 2020-01-21 | International Business Machines Corporation | Fast, low memory, consistent hash using an initial distribution |
US11321000B2 (en) * | 2020-04-13 | 2022-05-03 | Dell Products, L.P. | System and method for variable sparing in RAID groups based on drive failure probability |
US20220254462A1 (en) * | 2020-11-25 | 2022-08-11 | Synerio Technologies, Inc. | System and Method of Property Collection Management and Architecture |
US20240161882A1 (en) * | 2021-04-27 | 2024-05-16 | Synerio Technologies, Inc. | System and Method of Electronic Health Record Data Qualification |
US11762743B2 (en) * | 2021-06-28 | 2023-09-19 | International Business Machines Corporation | Transferring task data between edge devices in edge computing |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140123115A1 (en) | 2012-10-26 | 2014-05-01 | Jsmapreduce Corporation | Hybrid local/remote infrastructure for data processing with lightweight setup, powerful debuggability, controllability, integration, and productivity features |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US8510538B1 (en) * | 2009-04-13 | 2013-08-13 | Google Inc. | System and method for limiting the impact of stragglers in large-scale parallel data processing |
US9323775B2 (en) | 2010-06-19 | 2016-04-26 | Mapr Technologies, Inc. | Map-reduce ready distributed file system |
US9170848B1 (en) * | 2010-07-27 | 2015-10-27 | Google Inc. | Parallel processing of data |
WO2013051131A1 (ja) * | 2011-10-06 | 2013-04-11 | 富士通株式会社 | データ処理方法、分散処理システムおよびプログラム |
US9747127B1 (en) * | 2012-03-30 | 2017-08-29 | EMC IP Holding Company LLC | Worldwide distributed job and tasks computational model |
US20130297624A1 (en) * | 2012-05-07 | 2013-11-07 | Microsoft Corporation | Interoperability between Map-Reduce and Distributed Array Runtimes |
US20130318269A1 (en) * | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Processing structured and unstructured data using offload processors |
US8972986B2 (en) | 2012-05-25 | 2015-03-03 | International Business Machines Corporation | Locality-aware resource allocation for cloud computing |
WO2014020735A1 (ja) * | 2012-08-02 | 2014-02-06 | 富士通株式会社 | データ処理方法、情報処理装置およびプログラム |
US20140059552A1 (en) * | 2012-08-24 | 2014-02-27 | International Business Machines Corporation | Transparent efficiency for in-memory execution of map reduce job sequences |
US9143452B2 (en) * | 2012-08-29 | 2015-09-22 | Nec Laboratories America, Inc. | Data processing |
US9411558B2 (en) * | 2012-10-20 | 2016-08-09 | Luke Hutchison | Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing |
US9424274B2 (en) * | 2013-06-03 | 2016-08-23 | Zettaset, Inc. | Management of intermediate data spills during the shuffle phase of a map-reduce job |
US9514214B2 (en) * | 2013-06-12 | 2016-12-06 | Microsoft Technology Licensing, Llc | Deterministic progressive big data analytics |
JP2015001828A (ja) * | 2013-06-14 | 2015-01-05 | 富士通株式会社 | 割当プログラム、割当装置および割当方法 |
US8819335B1 (en) | 2013-08-30 | 2014-08-26 | NXGN Data, Inc. | System and method for executing map-reduce tasks in a storage device |
IN2013MU02918A (ko) * | 2013-09-10 | 2015-07-03 | Tata Consultancy Services Ltd | |
US9928263B2 (en) * | 2013-10-03 | 2018-03-27 | Google Llc | Persistent shuffle system |
US9389994B2 (en) * | 2013-11-26 | 2016-07-12 | International Business Machines Corporation | Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning |
US9697262B2 (en) * | 2013-12-17 | 2017-07-04 | Microsoft Technology Licensing, Llc | Analytical data processing engine |
US9986018B2 (en) * | 2014-01-09 | 2018-05-29 | Excalibur Ip, Llc | Method and system for a scheduled map executor |
US9785466B2 (en) * | 2014-02-07 | 2017-10-10 | International Business Machines Corporation | Managing data segments in memory for context switching with standalone fetch and merge services |
US9785469B2 (en) * | 2014-02-07 | 2017-10-10 | International Business Machines Corporation | Detection of time points to voluntarily yield resources for context switching |
CN103838626A (zh) * | 2014-02-27 | 2014-06-04 | 华为技术有限公司 | 一种处理串行任务的数据处理装置及方法 |
US10291696B2 (en) * | 2014-04-28 | 2019-05-14 | Arizona Board Of Regents On Behalf Of Arizona State University | Peer-to-peer architecture for processing big data |
US11487771B2 (en) * | 2014-06-25 | 2022-11-01 | Microsoft Technology Licensing, Llc | Per-node custom code engine for distributed query processing |
US10990288B2 (en) * | 2014-08-01 | 2021-04-27 | Software Ag Usa, Inc. | Systems and/or methods for leveraging in-memory storage in connection with the shuffle phase of MapReduce |
US20160103845A1 (en) * | 2014-10-09 | 2016-04-14 | Robin Systems, Inc. | Enhanced Handling Of Intermediate Data Generated During Distributed, Parallel Processing |
US9766818B2 (en) * | 2014-12-31 | 2017-09-19 | Samsung Electronics Co., Ltd. | Electronic system with learning mechanism and method of operation thereof |
US9858191B2 (en) * | 2014-12-31 | 2018-01-02 | Samsung Electronics Co., Ltd. | Electronic system with data management mechanism and method of operation thereof |
US10102029B2 (en) * | 2015-06-30 | 2018-10-16 | International Business Machines Corporation | Extending a map-reduce framework to improve efficiency of multi-cycle map-reduce jobs |
US9558049B1 (en) * | 2015-10-12 | 2017-01-31 | International Business Machines Corporation | Shuffle optimization in map-reduce processing |
-
2016
- 2016-05-06 US US15/148,822 patent/US10268521B2/en active Active
- 2016-11-28 KR KR1020160159561A patent/KR102376477B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140123115A1 (en) | 2012-10-26 | 2014-05-01 | Jsmapreduce Corporation | Hybrid local/remote infrastructure for data processing with lightweight setup, powerful debuggability, controllability, integration, and productivity features |
Also Published As
Publication number | Publication date |
---|---|
US10268521B2 (en) | 2019-04-23 |
KR20170088277A (ko) | 2017-08-01 |
US20170212783A1 (en) | 2017-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102376477B1 (ko) | 데이터 교환 메커니즘을 포함하는 전자 시스템 및 그것의 동작 방법 | |
Pu et al. | Shuffling, fast and slow: Scalable analytics on serverless infrastructure | |
US10691491B2 (en) | Adapting a pre-trained distributed resource predictive model to a target distributed computing environment | |
JP6373840B2 (ja) | クラウドコンピューティングシステムをチューニングするためのシステム及び方法 | |
JP5926864B2 (ja) | クラウドコンピューティングシステムをコンフィギュアするためのシステム及び方法 | |
Hermenier et al. | Bin repacking scheduling in virtualized datacenters | |
US10979505B1 (en) | Distributed storage system and data migration method | |
US8694644B2 (en) | Network-aware coordination of virtual machine migrations in enterprise data centers and clouds | |
KR102199275B1 (ko) | 분산 컴퓨팅 시스템에서의 적응적 리소스 관리 | |
US11061729B2 (en) | Throttling logging processes | |
US9858191B2 (en) | Electronic system with data management mechanism and method of operation thereof | |
CN103593242A (zh) | 基于Yarn框架的资源共享控制系统 | |
US11544113B2 (en) | Task scheduling for machine-learning workloads | |
US20210303327A1 (en) | Gpu-remoting latency aware virtual machine migration | |
WO2016092856A1 (ja) | 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体 | |
Elshater et al. | A study of data locality in YARN | |
EP4184324A1 (en) | Efficient accelerator offload in multi-accelerator framework | |
US20180113744A1 (en) | Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex | |
JP2007280397A (ja) | 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム | |
US20100269119A1 (en) | Event-based dynamic resource provisioning | |
Garg et al. | Empirical analysis of hardware-assisted GPU virtualization | |
Xu et al. | Gerbil: Mpi+ yarn | |
EP4325360A1 (en) | Distributed artificial intelligence runtime at the network edge as a service | |
US11429361B2 (en) | Agents installation in data centers based on host computing systems load | |
Hsiao et al. | A usage-aware scheduler for improving MapReduce performance in heterogeneous environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |