KR20140080434A - 맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법 - Google Patents

맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법 Download PDF

Info

Publication number
KR20140080434A
KR20140080434A KR1020130158292A KR20130158292A KR20140080434A KR 20140080434 A KR20140080434 A KR 20140080434A KR 1020130158292 A KR1020130158292 A KR 1020130158292A KR 20130158292 A KR20130158292 A KR 20130158292A KR 20140080434 A KR20140080434 A KR 20140080434A
Authority
KR
South Korea
Prior art keywords
input data
task
tasks
data segment
worker
Prior art date
Application number
KR1020130158292A
Other languages
English (en)
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 KR20140080434A publication Critical patent/KR20140080434A/ko

Links

Images

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/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
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

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)

Abstract

대규모 데이터 프로세싱을 위한 맵리듀스 프레임워크가 마스터 노드에 의해 구현될 수 있는 본 발명의 방법에 의해 최적화된다. 이 방법은 워커 노드들로부터 이 워커 노드들에 의해 실행되는 태스크들의 입력 데이터를 가리키는 판독 포인터 위치들에서 데이터의 수신을 포함하고, 작업이 가로채기 되는 태스크에 의해 아직 프로세싱되지 않은 입력 데이터에 가로채기 된 작업이 적용된다.

Description

맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법{DEVICE AND METHOD FOR OPTIMIZATION OF DATA PROCESSING IN A MAPREDUCE FRAMEWORK}
본 발명은 맵리듀스 프레임워크(MapReduce framework)에서의 데이터 프로세싱에 관한 것이다. 맵리듀스 모델은 대규모 데이터 프로세싱을 가능하게 하는 방식으로서 Google Inc.에서 개발되었다.
맵리듀스는 큰 데이터 세트들을 프로세싱하기 위한 프로그래밍 모델이고, 구글에 의한 모델의 구현의 이름이다. 맵리듀스는 통상적으로 컴퓨터들의 클러스터들에서 분산된 컴퓨팅을 행하는 데 이용된다. 모델은 기능적 프로그래밍에 보통 이용되는 "맵" 및 "리듀스" 함수들에 영감을 받은 것이다. 맵리듀스는 "맵" 단계를 포함하고, 여기서 마스터 노드는 각각이 특정 서브 문제(sub-problem)를 핸들링하는 맵 태스크들에서의 문제의 분할을 확립하고 이 맵 태스크들을 워커 노드들에 할당한다. 이 마스터 태스크는 "스케줄링" 태스크라고도 한다. 이를 위해, 마스터는 문제 입력 데이터를 분할하고 각각의 입력 데이터 부분을 맵 태스크에 할당한다. 워커 노드들은 서브 문제들을 프로세싱하고, 맵 태스크 완료시 마스터 노드에 통지한다. 맵리듀스는 또한 "리듀스" 단계를 포함하고, 여기서 마스터 노드는 일부 워커 노드들에 "리듀스" 동작을 할당하고, 일부 워커 노드들은 모든 서브 문제들에 대한 대답들을 수집하고 그것들을 어떤 방식으로 결합하여 출력 - 그것이 원래 해결하려고 시도했던 문제에 대한 대답 - 을 형성한다.
맵리듀스는 맵 및 리듀스 동작들의 분산된 프로세싱을 허용한다. 각각의 맵핑 동작이 다른 것들에 독립적이라고 하면, 맵들은 병렬로 수행될 수 있다. 유사하게, '리듀서들(reducers)'의 세트가 리듀스 단계를 수행할 수 있다. 이러한 프로세스는 더욱 순차적인 알고리즘들에 비해 비효율적인 것으로 보일 수 있지만, 맵리듀스는 "상품(commodity)" 서버들이 핸들링할 수 있는 것보다 훨씬 더 많은 데이터세트들에 적용될 수 있다 - 대형 서버 팜은 맵리듀스를 이용하여 오직 몇 시간에 페타바이트(petabyte)의 데이터를 분류할 수 있고; 맵리듀스는 통상적으로 '빅 데이터(big data)'의 핸들링에 적합하다. 병렬화(parallelism)는 또한 동작 동안 서버들 또는 저장소의 부분적인 고장으로부터 복구하는 일부 가능성을 제공하는데: 하나의 맵퍼 또는 리듀서가 고장나면, 작업은 다시 스케줄링될 수 있다 - 입력 데이터는 여전히 이용 가능하다고 가정한다. 맵리듀스의 대중적인 오픈 소스 구현이 Apache Hadoop이다. (소스: Wikipedia).
맵리듀스는 마스터에 의한 스케줄링을 용이하게 하고 결함 허용(fault tolerance)을 증가시키기 위해 태스크들의 "정적" 분할에 의존한다. 태스크들의 정적 분할은 마스터 노드 "스케줄러" 태스크에 의해 핸들링된다. 단어 "정적"은 이 문맥에서 태스크가 실행 전에 동일한 크기의 더 작은 태스크들로 분할된다는 것을 의미한다. 태스크는 프로그램/함수 및 입력 데이터의 조합이고, 태스크들을 분할하는 것은 입력 데이터를 부분들로 분할하고, 다양한 분할된 데이터 부분들에 프로그램을 적용하는 몇몇 태스크들을 생성하는 것에 있다.
Blumofe et al.은 그들의 논문 "Scheduling Multithreaded Computations by Work Stealing" at FOCS 1994 (an Annual IEEE Symposium on Foundations of Computer Science)에서 프로세서들이 다른 프로세서들로부터 작업을 가로채는 작업 가로채기(work stealing)의 이득들을 설명한다. 이 기술은 이질적 태스크들을 다루는 데 매우 적합하다. 그러나, 그것은 예를 들어, 스레드들 간의 공유 메모리를 갖는 단일 머신에서 실행되는, 의존적 태스크들 간의 작업 가로채기로 한정되지 않는다. 이 기술은 맵리듀스에 적용될 수 없는데, 그것은 맵리듀스 패러다임은 태스크들이 독립적이라는 가정에 의존하기 때문이며, 이것은 입력 데이터의 정적 분할이 스케일링 및 결함 허용을 향상시킬 수 있게 한다.
"낙오자들(tragglers)"(즉, 느리게 계산하고 데이터 프로세싱 시스템의 성능을 감소시키는 머신들)을 다루기 위하여, 맵리듀스는 태스크들 중 하나가 다른 것들보다 더 빠르게 실행될 것이라는 희망을 하는, 태스크의 사본들의 동시 실행에 있는 "추론적 실행(speculative execution)"으로 알려진 메커니즘을 포함한다. 이러한 향상은 이질적 리소스들이 이용되는 환경에서 성능 이득들을 허용한다. 태스크 이질성에 대응하는 것은 적합하지 않은데, 즉, 일부 태스크들은 다른 것들보다 더 많은 계산력을 요구할 수 있다.
미국 블루밍턴의 인디애나 대학교의 Guo et al.은 그들의 논문 "Improving MapReduce Performance in Heterogenous Network Environments and Resource Utilisation"에서 맵리듀스에서 맵 및 리듀스 태스크들은 워커 노드들에 의해 호스팅되는 맵 및 리듀스 "슬롯들"에 할당된다는 것을 설명한다. 각각의 워커는 태스크들이 할당되는, 사용자 구성 가능한 개수의 맵 및 리듀스 슬롯들을 포함한다. 하부 리소스들의 부분들이 각 슬롯에 대해 예비된다. 리소스 이용은 모든 슬롯들이 동시에 이용될 때 최적이다. 그러나, 수천 노드 구글 프로덕션 클러스터(a thousand-node Google production cluster)의 수집된 이용 데이터는 CPU 활용이 거의 최적이 아님을 나타낸다. 저자들은, Hadoop에 적용된 바와 같은 맵리듀스 패러다임에서의 리소스 활용은 모든 태스크 슬롯들을 채우기에 태스크들이 충분하지 않을 때 비효율적이라고 인정한다. 각 워커 노드는 노드마다 사용자들에 의해 구성될 수 있는 다수의 맵 및 리듀스 슬롯들을 갖는다. 모든 태스크 슬롯들을 채우기에 태스크들이 충분하지 않을 때, 예비 리소스들은 낭비된다. 맵리듀스 성능을 향상시키기 위하여, Guo et al.은 리소스 가로채기를 제안하며, 실행 디바이스들의 이질성을 다루기 위하여, 구동되는 태스크들이 "추론적 실행", 즉, 동일 태스크("사본", 또는 "경쟁" 태스크들)의 병렬 실행을 위해 예비된 "유휴" 리소스들을 가로챌 수 있게 하고; 다수의 태스크들 T1 내지 Tn 각각에 대하여, 태스크들은 재실행(이전에 언급된 "추론적 실행")되므로, 태스크들의 총 개수는 슬롯들의 개수와 동일해진다. 재실행 태스크들은 "유휴" 슬롯들에 대해 예비된 리소스들을 이용한다.
프로세싱 속도를 향상시키기 위한 이들 종래 기술 노력들은 위에 언급된 정적 분할을 통해 제한된 채로 남는다. 맵리듀스에서의 현재의 접근법은, 부하 균형(load balancing) 및 최종적으로 데이터 프로세싱의 성능을 향상시키기 위하여 이러한 정적 분할에 관련된 파라미터들을 조정하는 것이다. 그러나, 이러한 전략은 기술자의 개입을 요구하는데, 이것은 그것이 프로세싱될 입력 데이터의 정확한 지식을 요구하기 때문이다. 입력 데이터는 크기가 너무 작은 블록들로 분할되지 않도록 주의해야 하는데, 그것은 맵 태스크들을 부가하는 것이 각각의 분할된 태스크에 대해 요구되는 오버헤드를 증가시키기 때문이다. 오버헤드의 예들은, 동기화할 시간, 태스크를 이전 및 시작하고, 결과를 전송하고, 및 모든 결과들을 병합할 시간이다.
성능을 향상시키기 위한 또 다른 전략은 Guo. Al-Obaidi et al.에 의해 논의된 "리소스 가로채기"와 대조적으로 "작업 가로채기"라고 부르는 것이고, 그들의 논문 "A partial multi stealing scheduling model for divide and conquer problems", ICCCE 2012, 3-5 July 2012에서 작업 가로채기를 논의하고 있다. 그러나, Al-Obaidi et al.에 의해 논의된 작업 가로채기는 멀티코어 프로세서 아키텍처들을 타겟으로 하고, 미이용 프로세서 코어에 그것을 제공하기 위해 태스크 스레드의 가로채기에 의한 작업 가로채기를 논의한다. 이러한 작업 가로채기 전략은 멀티 스레드 태스크들 및 멀티코어 프로세서들을 위해 설계되고, 비-멀티 스레드 태스크 또는 단일 코어 노드들에 대해 더 빠른 실행으로 이어지지 않는다. 또한, 이 전략은 미이용 프로세서 코어들의 개수에 의해 제한된다. 최종적으로, Al-Obaidi et al.은 Blumofe et al.과 유사하다. 모든 이들 단점들은 이 전략들이 맵리듀스 모델에서 응용을 위해 최적이 아니게 만든다.
종래 기술은 즉, 일단 태스크들의 정적 분할이 행해졌다면, 태스크들의 실행의 최적화와 관련된다. 이것은 정적 분할이 상이한 분할된 태스크들 간 및 상이한 실행 노드들 간의 이질성을 고려하지 않기 때문에 최적이 아니다. 태스크와 노드 이질성에 둘다 동적으로 적응하는 맵리듀스 기반의 방법을 제안하는 것이 유익하다.
따라서, 종래 기술 해결책들에 대한 추가 최적화가 필요하다.
본 발명은 종래 기술의 일부 불편을 완화하는 것을 목적으로 한다.
이를 위해, 본 발명은 맵리듀스 프레임워크(map reduce framework)에서 데이터를 프로세싱하기 위한 방법을 포함하고, 상기 방법은 마스터 노드에 의해 실행되고, 입력 데이터를 입력 데이터 세그먼트들로 분할하는 단계; 워커 노드들(worker nodes)에 상기 입력 데이터 세그먼트들을 프로세싱하기 위한 태스크들을 할당하는 단계 - 각 워커 노드는 입력 데이터 세그먼트를 프로세싱하기 위한 태스크를 할당받음 - ; 상기 태스크들을 실행하는 워커 노드들로부터 수신된 데이터로부터, 태스크에 의해 프로세싱된 입력 데이터 세그먼트 내의 현재의 판독 위치를 가리키는 판독 포인터가 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않았는지를 결정하는 단계; 및 프리 워커 노드(free worker node)에 새로운 태스크를 할당하는 단계를 포함하고, 상기 새로운 태스크는 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않은 상기 태스크에 의해 아직 프로세싱되지 않은 상기 입력 데이터 세그먼트의, 분할된 부분이라고 하는, 일부분에 따른 것이고(attribute), 상기 분할된 부분은 상기 현재의 판독 포인터 위치 뒤에 배치되는 상기 입력 데이터 세그먼트의 부분이다.
본 발명의 변형 실시예에 따르면, 상기 방법의 마지막 단계는, 상기 태스크들로부터 수신된 상기 데이터로부터, 태스크당 입력 데이터 프로세싱 속도를 결정하고, 데이터 프로세싱 속도가 데이터 프로세싱 속도 임계값 아래에 있는 각각의 태스크에 대하여, 청구항 1의 마지막 단계를 실행하는 단계에 종속되고, 상기 데이터 프로세싱 속도는 상기 워커 노드들로부터 수신된 상기 데이터로부터 획득된 후속하는 판독 포인터들로부터 결정된다.
본 발명의 변형 실시예에 따르면, 상기 방법은, 입력 데이터 세그먼트의 끝부분 앞에 상기 미리 정해진 임계값에 아직 도달하지 않은 태스크를 실행하는 워커 노드들에 메시지를 전송하는 단계를 더 포함하고, 상기 메시지는 상기 메시지가 전송되는 워커 노드에 의해 실행되는 태스크에 대한 입력 데이터 세그먼트 끝을 업데이트하기 위한 정보를 포함한다.
본 발명의 변형 실시예에 따르면, 상기 방법은, 상기 분할된 부분 앞에 배치되는 입력 데이터 세그먼트의 일부분으로 입력 데이터의 프로세싱을 제한하기 위해 태스크에 제공되는 입력 데이터 스트림에 파일 끝 마커(End Of File marker)를 삽입하는 단계를 더 포함한다.
본 발명의 변형 실시예에 따르면, 상기 방법은, 상기 마스터 노드에서 스케줄링 테이블을 업데이트하는 단계를 더 포함하고, 상기 스케줄링 테이블은 그것에 할당된 태스크에 대한 워커 노드의 관련(relation)을 허용하고, 그것에 할당된 상기 태스크의 입력 데이터 세그먼트 부분 시작 및 끝을 정의하는 정보를 포함한다.
본 발명의 변형 실시예에 따르면, 상기 방법은 입력 데이터 세그먼트들의 비-중첩 부분들을 프로세싱하는 태스크들의 추론적 실행을 더 포함한다.
본 발명은 맵리듀스 프레임워크에서 데이터를 프로세싱하기 위한 마스터 디바이스에도 적용되며, 상기 디바이스는 입력 데이터를 입력 데이터 세그먼트들로 분할하기 위한 수단; 워커 노드들에 상기 입력 데이터 세그먼트들을 프로세싱하기 위한 태스크들을 할당하기 위한 수단 - 각 워커 노드는 입력 데이터 세그먼트를 프로세싱하기 위한 태스크를 할당받음 - ; 상기 태스크들을 실행하는 워커 노드들로부터 수신된 데이터로부터, 태스크에 의해 프로세싱된 입력 데이터 세그먼트 내의 현재의 판독 위치를 가리키는 판독 포인터가 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않았는지를 결정하기 위한 수단; 및 프리 워커 노드에 새로운 태스크를 할당하기 위한 수단을 포함하고, 상기 새로운 태스크는 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않은 상기 태스크에 의해 아직 프로세싱되지 않은 상기 입력 데이터 세그먼트의, 분할된 부분이라고 하는, 일부분에 따른 것이고, 상기 분할된 부분은 상기 현재의 판독 포인터 위치 뒤에 배치되는 상기 입력 데이터 세그먼트의 부분이다.
본 발명에 따른 디바이스의 변형 실시예에 따르면, 상기 디바이스는, 상기 태스크들로부터 수신된 상기 데이터로부터, 태스크당 입력 데이터 프로세싱 속도를 결정하기 위한 수단, 및 데이터 프로세싱 속도가 데이터 프로세싱 속도 임계값 아래에 있는지를 결정하기 위한 수단을 더 포함하고, 상기 데이터 프로세싱 속도는 상기 워커 노드들로부터 수신된 상기 데이터로부터 획득된 후속하는 판독 포인터들로부터 결정된다.
본 발명에 따른 디바이스의 변형 실시예에 따르면, 상기 디바이스는, 입력 데이터 세그먼트의 끝부분 앞에 상기 미리 정해진 임계값에 아직 도달하지 않은 태스크를 실행하는 워커 노드들에 메시지를 전송하기 위한 수단을 더 포함하고, 상기 메시지는 상기 메시지가 전송되는 워커 노드에 의해 실행되는 태스크에 대한 입력 데이터 세그먼트 끝을 업데이트하기 위한 정보를 포함한다.
본 발명에 따른 디바이스의 변형 실시예에 따르면, 상기 디바이스는, 상기 분할된 부분 앞에 배치되는 입력 데이터 세그먼트의 일부분으로 입력 데이터의 프로세싱을 제한하기 위해 태스크에 제공되는 입력 데이터 스트림에 파일 끝 마커(End Of File marker)를 삽입하기 위한 수단을 더 포함한다.
본 발명에 따른 디바이스의 변형 실시예에 따르면, 상기 디바이스는, 상기 마스터 노드에서 스케줄링 테이블을 업데이트하기 위한 수단을 더 포함하고, 상기 스케줄링 테이블은 그것에 할당된 태스크에 대한 워커 노드의 관련을 허용하고, 그것에 할당된 상기 태스크의 입력 데이터 세그먼트 부분 시작 및 끝을 정의하는 정보를 포함한다.
본 발명에 따른 디바이스의 변형 실시예에 따르면, 상기 디바이스는 입력 데이터 세그먼트들의 비-중첩 부분들을 프로세싱하는 태스크들의 추론적 실행을 위한 수단을 더 포함한다.
본 발명의 더 많은 이점들은 본 발명의 특정 비-제한적 실시예들의 설명을 통해 나타날 것이다. 실시예들은 다음 도면들을 참조하여 설명될 것이다.
도 1은 종래 기술의 맵리듀스 방법의 원리들을 도시하는 블록도이다.
도 2는 맵리듀스 패러다임에 따른 데이터 프로세싱을 위한 종래 기술의 대규모 데이터 프로세싱 시스템의 블록도이다.
도 3은 맵리듀스 방법에 따른 데이터 프로세싱의 종래 기술의 방법의 흐름도이다.
도 4는 마스터 노드에 의해 행해지는 맵핑 태스크를 예시하는, 도 3의 흐름도의 상세이다.
도 5는 입력 데이터를 프로세싱하는 워커들을 나타내는 블록도이다.
도 6은 본 발명의 비-제한적 변형 실시예에 따른 맵핑 태스크의 흐름도이다.
도 7은 본 발명의 비-제한적 실시예에 따른 입력 데이터 파일들의 분할을 예시하는 블록도이다.
도 8은 본 발명에 따른 디바이스의 비-제한적 예시적인 실시예의 블록도이다.
도 9는 본 발명에 따른 방법의 비-제한적 변형 실시예를 예시하는 시퀀스 챠트(sequence chart)이다.
도 10은 비-제한적 예시적인 실시예에 따른 본 발명의 방법의 흐름도이다.
이해를 용이하게 하기 위하여, 도면들에 공통인 동일한 요소들을 나타내기 위해 가능한 곳에서 동일한 참조 번호들이 이용된다.
도 1은 종래 기술의 맵리듀스 방법의 원리들을 도시하는 블록도이다(소스: Wikipedia).
"마스터" 노드(101)는 (화살표(1000)를 통해) 입력 데이터("문제 데이터")(100)를 취하고, "맵" 단계(1010)에서, 그것을 "워커" 노드들(102 내지 105)에 분산되는(화살표들(1001, 1003, 1005)) 더 작은 서브 문제들로 분할한다. 워커 노드들은 더 작은 문제를 프로세싱하고(화살표들(1002, 1004, 1006)), 태스크 완료에 대해 마스터 노드에 통지한다. "리듀스" 단계(1011)에서, 마스터 노드는 일부 워커 노드들에 "리듀스" 동작을 할당하고, 일부 워커 노드들은 모든 서브 문제들에 대한 대답들을 수집하고 그것들을 일부 방식으로 조합하여 (화살표(1007)를 통해) 출력("솔루션 데이터")(106)을 형성한다.
도 2는 맵리듀스 패러다임에 따른 데이터 프로세싱을 위한 종래 기술의 대규모 데이터 프로세싱 시스템의 블록도이다. 도 1과 공통인 요소들은 이미 그 도면에서 설명하였으므로, 여기서는 다시 설명하지 않는다. 마스터 프로세스(201)는 워커 노드들(202-205)에 그것이 할당하는 태스크들에 따른 것인, 파일들 F1 내지 Fn(1000)에 저장된 문제 데이터(100)를 분할한다. 마스터 프로세스는 또한 (워커 노드들(210 및 211)과 같은) 워커 노드들에 리듀스 태스크들을 할당하는 담당을 한다. 노드들(202-205)은 중간 데이터 값들(2000)을 생성하고, 이것은 수집되어 중간 파일들 a(206), b(207) 내지 n(209)에 기입된다. 마스터가 획득된 중간 결과들에 대해 통지받으면, 마스터는 워커 노드들(210 내지 211)에 리듀스 태스크들을 할당한다. 이 프로세스들은 중간 파일들(206-209)로부터 입력 데이터(2001)를 검색하고, 데이터를 병합 및 조합하고, 결과적인 솔루션 데이터(106)를 저장한다(2002). 맵리듀스에 의해 핸들링되는 데 적합한 통상적인 문제의 예는, 쇼핑 웹사이트의 클라이언트들의 성별 및 평균 나이의 카운팅이다. 그러면 입력 데이터(100)는 쇼핑 웹사이트의 소비자 구매 데이터 베이스이다. 웹사이트가 막대한 상업적 성공을 하였다면, 그의 클라이언트 데이터 베이스는 거대하다 - 수 테라바이트의 데이터. 데이터는 파일들 F1-Fn에 저장된다. 마스터 프로세스는 각각의 파일을 64 Mbytes의 세그먼트들로 분할한다. 워커 노드들의 리스트에 의해, 마스터는 태스크에 및 워커 노드에 입력 데이터의 각 세그먼트에 따른 것인 스케줄링 테이블을 구축한다. 본 발명의 시나리오에 따르면, 워커 노드들에 의해 실행될 태스크들은 2개이다: 남성/여성 구매자들의 수 계산하기 및 구매자들의 평균 나이 계산하기. 각 워커 노드(202 내지 205)는 그의 중간 결과를 중간 파일들(206 내지 209) 중 하나에 저장한다. 예를 들어, 중간 파일 "a"(206)는 파일 F1의 제1 세그먼트로부터 여성 클라이언트들의 수 및 클라이언트들의 평균 나이를 포함하고, 중간 파일 "b"(207)는 파일 F1의 제2 세그먼트의 여성 클라이언트들의 수 및 평균 나이를 포함하고, 중간 파일 "n"은 파일 "n"의 n번째 세그먼트에 걸쳐서 계산된 여성 클라이언트들의 수 및 클라이언트 평균 나이를 포함한다. 마스터가 그들의 태스크들을 완료한 워커들(202-205)에 대해 통지받으면, 마스터는 워커들(210 및 211)과 같은 워커 노드들에 리듀스 태스크들을 할당한다. 이 워커들은 솔루션 데이터(106)에 저장되는, 2개의 결과 출력들, 즉, 여성 클라이언트들의 수 및 평균 클라이언트 나이를 생성하기 위해 중간 파일들 "a" 내지 "n"의 콘텐츠를 판독하는, 리듀스 태스크들을 실행한다.
도 3은 마스터 프로세스의 흐름도이다.
초기화 단계(301)에서, 프로세스에 필요한 변수들 및 파라미터들이 초기화된다. 단계(302)에서, 마스터 노드는 입력 파일들을 통상적으로 수십 메가바이트(예를 들어, 16 또는 64Mbyte)의 세그먼트들로 분할하고, 이것은 선택적 파라미터를 통해 사용자에 의해 제어 가능하다. 그 다음, 단계(303)에서, 마스터는 유휴 워커들이 존재하는지를 검증한다. 아무것도 존재하지 않으면 단계는 고리 모양으로 이동한다. 유휴(또는 "프리") 워커들이 존재하면, 마스터는 단계(305)에서 유휴 워커들에 대해 행해질 맵 태스크들이 여전히 존재하는지를 검증하고; 그렇다면, 마스터는 유휴 워커들에게 이 맵 태스크들을 시작하도록 지시하고(화살표(3001) 및 단계(304)), 그 다음에 화살표(3000)를 통해 단계(303)로 돌아간다. 행해질 맵 태스크들이 더 이상 존재하지 않으면, 단계(306)에서 리듀스 태스크들이 시작된다. 이것들이 행해지면, 프로세스는 단계(307)에서 끝난다.
표 1은 아래에 마스터에 의해 유지되는 종래 기술 마스터 노드 태스크 스케줄링 테이블의 예를 제공한다.
Figure pat00001
맵 태스크 M1은 예를 들어, 클라이언트 데이터 베이스의 클라이언트들의 평균 클라이언트 나이의 계산에 대응한다. 맵 태스크 M2는 예를 들어, 여성 클라이언트들의 수의 계산에 대응한다. 워커 W1은 태스크 M1을 실행하는 것이고, 파일 F1, 바이트 0 내지 16Mbyte로부터 입력 데이터 세그먼트를 취해야 한다. 워커 W2는 동일한 파일, 동일한 세그먼트로부터 태스크 M2를 실행하는 것이다. 워커 W3은 파일 F2, 세그먼트 16 내지 32Mbyte로부터 입력 데이터에 대해 태스크 M1을 실행하는 것이다. W4는 워커 W3과 동일한 입력 데이터에 대해 M2를 실행하는 것이다. 워커 W5는 워커 W1에 의해 실행되는 태스크 M1의 사본을 실행하는 것, 즉, 추론적 실행을 행한다. 워커 W6은 W4에 의해 실행되는 것과 동일한 태스크를 추론적으로 실행한다.
도 4는 도 3의 단계(304)의 종래 기술 구현의 흐름도이다. 단계(304a)는 맵 태스크들이 시작되는 단계를 나타낸다. 단계(304a)의 입력은 단계(305)에서 나오는, 화살표(3001)이다. 출력은 단계(303)의 입력을 향하는 화살표(3000)이다.
단계(3040)에서, 모든 태스크들이 시작되었는지가 검증된다. 그렇지 않은 경우, 단계(3041)에서 아직 시작되지 않은 태스크들이 시작되고, 단계(304a)는 단계(303)로 돌아간다. 모든 태스크들이 시작되었다면, 태스크들이 단계(3045)에서 여러 번 시작되었는지(즉, 추론적 실행)가 검증된다. 그렇지 않으면, 아직 추론적으로 실행되지 않은 및 아직 끝마치지 않은 태스크들이 유휴 워커 노드들에서 동시에 시작되는데, 즉, 이 태스크들은 단계(3046)에서 추론적으로 실행됨으로써(추론적 실행의 개념은 앞서 논의되었다), 시간을 벌 가능성을 증가시키고; 단계(304a)는 계속해서 단계(303)로 간다. 단계(3045)에서, 모든 태스크들이 여러 번 추론적으로 실행되었다고 검증되면, 단계(304a)는 단계(303)로 계속된다.
워커에서의 태스크의 시작은 워커에 태스크(즉, 실행할 함수/프로그램) 및 그의 입력 데이터를 인출하도록 지시하는 마스터에 의해 행해진다. 예를 들어, 표 1을 다시 참조하면, 마스터는 워커 노드 W1에 맵 태스크 M1를 실행하고, 파일 F1, 세그먼트 0 내지 16Mbyte로부터 그의 입력 데이터를 취하도록 지시하고; 프로세스는 다른 맵 태스크들에 대해 동일하다.
도 5는 입력 데이터를 프로세싱하는 워커들에서 구동되는 태스크들을 나타내는 블록도이다. 특히, 그것은 워커 노드들 W1, W2, W3 및 W4에서 각각 구동되는 태스크들 T1(500), T2(503), T3(510), 및 T4(513)(워커 노드당 하나의 태스크의 분산은 제한적인 것을 의미하지 않고, 일 예일뿐이며; 워커 노드는 그의 구성 및 성능에 따라 복수의 태스크들을 실행할 수 있다)과, 세그먼트들(505, 506 및 515, 516)을 각각 포함하는 파일들 F1(502) 및 F2(512)을 나타낸다. 태스크들을 나타내는 블록들(500, 503, 510 및 513) 내부에는, 판독 포인터의 발사(emplacement)에서 파일로부터 입력 라인들을 판독하고 판독되는 입력 라인을 지나는 프로그램/함수(예를 들어, 'avg_age' 또는 'female_clients')을 실행하는 프로세스가 도시되어 있다. 화살표들(501, 504, 511 및 514)은 판독 포인터들을 나타낸다. 프로그램/함수 "read_entry"는 세그먼트 끝까지 입력 데이터 파일을 판독하고; 예를 들어, T1은 0으로부터 16Mbyte에서 세그먼트 끝까지이고, T2는 16 내지 32 Mbyte이다.
도 6은 본 발명의 특정 비-제한적 실시예를 예시하는 대안적인 실시예에 따른 도 3의 단계(304)의 흐름도이다.
이전 도면들과 공통인 요소들은 이미 그 도면들에 대해 설명하였으므로, 그 설명은 여기서 반복하지 않는다.
배경기술 섹션에서 논의한 바와 같이, 종래 기술은 즉, 일단 태스크들의 정적 분할이 행해졌다면, 태스크들의 실행의 최적화와 관련된다. 이것은 정적 분할이 상이한 분할된 태스크들 간 및 상이한 워커 노드들 간의 이질성을 고려하지 않으므로 최적이 아니며, 즉, 태스크는 다른 것보다 더 복잡할 수 있고; 워커 노드는 다른 것보다 더 느릴 수 있다.
따라서, 단계(304b)는 가능한 경우 동적 작업 가로채기의 부가적인 단계들을 포함한다. 단계(3040)에서 모든 태스크들이 시작되었다고 검증되었다면, 단계(3042)에서 여전히 입력 데이터 세그먼트 끝으로부터 미리 정해진 임계값 이전에 있는 판독 포인터를 갖는 임의의 태스크들이 존재하는지가 결정되고, 입력 데이터 세그먼트는 더 분할될 수 있고, 즉, 입력 데이터 파일로부터의 입력 데이터는 다른 워커에 이전, 즉, '가로채기'될 수 있다. 미리 정해진 양은 예를 들어, 1Mbyte로 설정되는, 예를 들어, 사용자 구성 가능한 파라미터이다. 단계(3042)에서의 이러한 결정은 태스크의 판독 포인터를 검증함으로써 행해질 수 있거나, 워커들은 그것이 업데이트된 채로 유지하기 위하여 마스터에 대해 워커에 의해 실행되고 있는 각 태스크에 대한 판독 포인터 통지를 정기적으로 전송한다. 이전 예에 따르면, 단계(3042)에서, 예를 들어, 워커 W1에 의해 실행되는 태스크 M1의 입력 데이터 판독 포인터(501)가 여전히 15Mbyte의 임계값 전에 있는지가 결정된다. 여전히 입력 데이터 세그먼트 끝으로부터 미리 정해진 임계값 전에 있는 판독 포인터들을 갖는 태스크들이 존재하지 않으면, 단계(3042)는 단계(3045)로 계속된다. 그러나, 그러한 태스크들이 존재하면, 단계(3044)가 실행되고, 여기서 새로운("사본") 태스크가 생성되고 새로운 태스크는 유휴 워커에 할당되어 시작되며, 새로운 태스크는 오리지널 태스크에 의해 아직 프로세싱되지 않은 '오리지널' 태스크(즉, 새로운 "사본" 태스크들이 생성된 태스크)의 입력 데이터 세그먼트의 입력 데이터 부분으로서 자체 획득한다. 그 다음, 단계(3044)는 (화살표(3001)를 통해) 단계(303)로 계속된다. 변형 실시예에서, 결정 단계(3043)가 단계(3042)와 단계(3044) 사이에 삽입되고, 여기서 가로채기가 가능한지가 결정되는데, 즉, 단계(3042)에서 결정된 워커가 그의 태스크(들) 판독 포인터 값(들)을 획득하기 위해 마스터에 의해 명백하게 조사된다. 가능하게는, 그러한 조사는 워커에 그의 태스크(들)를 일시 정지하도록 요구한다. 이러한 변형은 단계(3042)의 결정이 더 이상 정확하지 않은 판독 포인터 값에 기초하는 것을 피한다는 이점이 있다.
작업이 태스크로부터 가로채기되면, 마스터는 그의 스케줄링 테이블을 업데이트한다. 예를 들어, 아래 표 2를 본다. 표 1에 나타낸 바와 같은 스케줄링 테이블에 대한 개조들이 이탤릭체로, 밑줄 표시되어 있다.
Figure pat00002
알 수 있는 바와 같이, 태스크 M1은 태스크 M1 및 M1'로 분할된다. 태스크 M1에 대한 입력 데이터 파일의 끝은 10Mbyte로 설정되도록 수정되고, 새로운 "분할된" 태스크 M1'이 생성되어, 10Mbyte에서 시작하고 16Mbyte에서 끝나는 세그먼트를 갖는 파일 1을 입력으로서 갖는 워커 W7에서 구동된다.
도 7은 본 발명의 추가 변형 실시예의 흐름도이다. 이전 도면들과 공통인 요소들은 여기서 다시 설명하지 않는다.
단계(3040)에서 모든 태스크들이 시작되었다고 검증되었다면, 단계(3047)에서 복잡하거나 느린 워커들에서 실행되는 태스크들이 존재하는지, 즉, "낙오자" 태스크들이 존재하는지가 결정된다. 이것은 워커들로부터 마스터에 의해 수집된 통계에 기초하여 마스터에 의해 결정될 수 있다. 이 통계에 기초하여, 입력 데이터 프로세싱 속도는 그것들이 각 입력 파일을 순차적으로 프로세싱할 때 태스크들에 의해 시간이 지남에 따라 판독된 데이터의 양을 검증함으로써 추론될 수 있다. 입력 데이터 프로세싱 속도는 후속하는 판독 포인터 값들로부터 획득될 수 있고, 예를 들어, Kbytes/s로 표현된 비트 레이트이다. 입력 데이터 프로세싱 속도가 임계값 아래에 있는지가 결정될 수 있다. 예로서, 그러한 임계값은 평균 프로세싱 속도 플러스 미리 정해진 허용 오차로부터 결정될 수 있다. 이 정보에 기초하여, 입력 파일 프로세싱 속도가 대부분의 태스크들에 대해 거의 동일하지만 일부는 다른 것들보다 훨씬 더 느린 경우, 느린 태스크들이 실행되고 있는 워커 노드들은 느리고 추론적 실행이 그 경우에는 최상의 솔루션인 것처럼 보이므로, 단계(3045)를 계속할 가능성이 있다. 동일한 태스크가 상이한 노드들에서 추론적으로 실행되고 추론적으로 실행되는 태스크에 대한 입력 데이터 프로세싱 속도가 여전히 앞서 언급한 임계값 아래에 있는 경우, 태스크는 아마도 평균 태스크보다 더 복잡하고 작업 가로채기가 도움이 될 가능성이 크기 때문에, 단계(3042)로 계속된다. 실행 환경이 유사하면서(예를 들어, 동일한 하드웨어, 동일한 부하, ...), 모든 태스크들이 입력 데이터 프로세싱 속도의 큰 변동으로 구동되는 경우, 작업 가로채기가 다시 도움이 될 것 같고, 단계(3047)는 단계(3042)로 계속된다. 입력 데이터 프로세싱 속도가 모든 태스크들에 대해 거의 동일한 경우, 즉, 더 복잡한 태스크들 또는 다른 것들보다 더 느린 노드들이 존재하지 않는 경우, 작업 가로채기가 추론적 실행보다 더 도움이 된다는 명백한 증거가 없으면 추론적 실행의 디폴트 전략을 적용하기 위해 단계(3047)는 단계(3045)로 계속된다(즉, 도 7에서 'n/a'("적용 불가능(non-applicable)")로 표시된 단계(3047)의 출구를 통해). 상황에 쉽게 가장 잘 적응되는, 즉, 전체 태스크 프로세싱의 속도를 높일 가능성이 높은 전략을 채택하는 것이 목적이다. 변형 실시예에 따르면, 디폴트 전략은 작업 가로채기를 적용하는 것이다. 디폴트 전략은 사용자 구성 가능한 파라미터 세팅에 의해 특정될 수 있다.
도 8은 본 발명에 따른 마스터 노드 디바이스의 비-제한적 예시적인 실시예의 블록도이다. 디바이스는 CPU 또는 중앙 프로세싱 유닛(Central Processing Unit) 또는 프로세서(810), 클록 유닛(811), 네트워크 인터페이스(812), I/O 인터페이스(813), 불휘발성 메모리(815), 및 휘발성 메모리(816)를 포함한다. 모든 이들 요소들은 데이터 또는 통신 버스(814)에 의해 상호접속된다. 디바이스는 접속(8000)을 통해 통신 네트워크에, 그리고 접속(8001)을 통해 외부 입력/출력 디바이스들(예를 들어, 키보드, 스크린, 외부 데이터 저장소)에 접속될 수 있다. CPU(810)는 본 발명의 방법을 구현하는 명령어들과 같은 컴퓨터 판독 가능한 명령어들을 실행할 수 있다. 불휘발성 메모리(815)는 메모리 존(8151)에 컴퓨터 판독 가능한 명령어들의 사본을 저장한다. 불휘발성 메모리(815)는 또한 디바이스가 정전으로부터 재시작할 때 디바이스를 알려진 상태로 되돌리는 데 이용될, 지속적으로 세이브될 필요가 있는 변수들 및 파라미터들과 같은, 지속성 데이터를 메모리 존(8152)에 저장한다. 휘발성 메모리(816)는 디바이스의 기동시에 명령어들이 메모리 존(8161)에 복사되는, 불휘발성 메모리(815)의 메모리 존(8151)에 저장된 컴퓨터 판독 가능한 명령어들의 사본을 포함하는, 메모리 존(8161)을 포함한다. 휘발성 메모리(816)는 또한 예를 들어, 메모리 존(8161)에 저장된 컴퓨터 판독 가능한 명령어들의 실행 동안 이용되는 변수들에 대한, 임시, 비-지속성 데이터 저장소로 이용되는, 메모리 존(8162)을 포함한다. 클록 유닛(811)은 타이밍 및 동기화를 위해 상이한 요소들(810 및 812 내지 816)에 의해 이용되는 클록 신호를 제공한다.
디바이스(800)는 입력 데이터를 입력 데이터 세그먼트들로 분할하기 위한 수단(CPU(810)); 워커 노드들에 상기 입력 데이터 세그먼트들을 프로세싱하기 위한 태스크들을 할당하기 위한 수단(CPU(810)) - 각 워커 노드는 입력 데이터 세그먼트를 프로세싱하기 위한 태스크를 할당받음 - ; 상기 태스크들을 실행하는 워커 노드들로부터 수신된 데이터로부터, 태스크에 의해 프로세싱된 입력 데이터 세그먼트 내의 현재의 판독 위치를 가리키는 판독 포인터가 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않았는지를 결정하기 위한 수단(CPU(810)); 및 프리 워커 노드에 새로운 태스크를 할당하기 위한 수단(CPU(810))을 포함하고, 새로운 태스크는 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않은 태스크에 의해 아직 프로세싱되지 않은 입력 데이터 세그먼트의, 분할된 부분이라고 하는, 일부분에 따른 것이고, 분할된 부분은 현재의 판독 포인터 위치 뒤에 배치되는 입력 데이터 세그먼트의 부분이다.
디바이스의 변형 구현에 따르면, 디바이스(800)는 상기 태스크들로부터 수신된 데이터로부터, 태스크당 입력 데이터 프로세싱 속도를 결정하기 위한 수단(CPU(810)), 및 데이터 프로세싱 속도가 데이터 프로세싱 속도 임계값 아래에 있는지를 결정하기 위한 수단(CPU(810))을 더 포함하고, 상기 데이터 프로세싱 속도는 상기 워커 노드들로부터 수신된 데이터로부터 획득된 후속하는 판독 포인터들로부터 결정된다.
디바이스의 변형 구현에 따르면, 디바이스(800)는 입력 데이터 세그먼트의 끝부분 앞에 상기 미리 정해진 임계값에 아직 도달하지 않은 태스크를 실행하는 워커 노드들에 메시지를 전송하기 위한 수단(네트워크 인터페이스(812))을 더 포함하고, 상기 메시지는 상기 메시지가 전송되는 워커 노드에 의해 실행되는 태스크에 대한 입력 데이터 세그먼트 끝을 업데이트하기 위한 정보를 포함한다.
디바이스의 변형 구현에 따르면, 디바이스(800)는 상기 분할된 부분 앞에 배치되는 입력 데이터 세그먼트의 일부분으로 입력 데이터의 프로세싱을 제한하기 위해 태스크에 제공되는 입력 데이터 스트림에 파일 끝 마커(End Of File marker)를 삽입하기 위한 수단(CPU(810))을 더 포함한다.
디바이스의 변형 구현에 따르면, 디바이스(800)는 상기 마스터 노드에서 스케줄링 테이블을 업데이트하기 위한 수단(CPU(810))을 더 포함하고, 상기 스케줄링 테이블은 그것에 할당된 태스크에 대한 워커 노드의 관련을 허용하고, 그것에 할당된 상기 태스크의 입력 데이터 세그먼트 부분 시작 및 끝을 정의하는 정보를 포함한다.
디바이스의 변형 구현에 따르면, 디바이스(800)는 입력 데이터 세그먼트들의 비-중첩 부분들을 프로세싱하는 태스크들의 추론적 실행을 위한 수단(CPU(810))을 더 포함한다.
도 9는 본 발명에 따른 방법의 비-제한적 변형 실시예를 예시하는 시퀀스 챠트이다. 수직선들(900, 901, 902 및 903)은 각각 마스터 노드, 워커 노드 W1, 워커 노드 W3, 및 워커 노드 W7를 나타낸다. 화살표들(910 내지 915)은 노드들 사이에 교환되는 메시지들을 나타낸다. T0-T3은 시간에서의 상이한 순간들을 나타낸다. T0에서, 마스터 노드의 맵 태스크 스케줄링 테이블은 표 1에 나타난 바와 같다. T0에서, 워커 노드들 W1(901) 및 W3(902)에 의해 실행된 태스크들의 판독 포인터들은 이 노드들에 메시지들(910 및 911)을 전송함으로써 검색된다. 그러한 메시지들은 예를 들어, 태스크의 입력 데이터 판독 포인터의 위치를 전송하라는 요구를 포함한다. 변형 실시예에 따르면, 요구는 새로운 태스크가 생성되어야 하는지를 결정할 때, 예를 들어, 도 6에 도시된 단계(3042-3044) 동안 또는 도 7에 도시된 단계(3047)를 포함하여 단계들(3042 내지 3044) 동안, 판독 포인터가 진전(evolve)하지 않는 것을 마스터가 보장하도록 실행되는 맵 태스크의 실행을 일시 정지한다. T1에서, 데이터는 W1에서 구동되는 태스크 M1로부터(화살표(912)) 및 워커 노드 W3에서 구동되는 태스크 M1로부터(화살표(913)) 수신되고, 이로부터 마스터 노드는 이 워커들에서 구동되는 이 태스크들의 판독 포인터를 결정할 수 있으며, 판독 포인터들은 이 태스크들에 대한 입력 데이터인 개개의 입력 데이터 세그먼트들 내의 위치들을 가리킨다. 마스터 노드는 판독 포인터들이 개개의 입력 데이터 세그먼트 끝들 이전에 미리 정해진 임계값(예를 들어, 1Mbyte)인지를 결정한다. 도시된 시나리오에 따르면, 표 1과 일관되어, 이것은 W1에 의해 실행된 태스크 M1에 대한 경우이고, 마스터는 맵 태스크 스케줄링 테이블 내의 엔트리들을 업데이트함으로써, 표 2를 생성한다(용어 "업데이트하기"는 기존의 엔트리들을 수정하는 것뿐만 아니라 새로운 엔트리들의 생성을 포함한다). T2에서, 마스터는 맵 태스크 M1이 재개되어야 함을 나타내고 W1에 태스크 M1의 입력 데이터 세그먼트 끝이 업데이트됨(이전에 16Mbyte, 이제는 10Mbyte로 업데이트됨)을 알리는 메시지(914)를 W1에 전송한다. T3에서, 마스터는 새로운 태스크 M1'가 그것에 따른 것임을 나타내고 그의 입력 데이터가 파일 F1, 세그먼트 10 내지 16Mbyte, 즉, W1에서 구동되는 태스크 M1에 의해 아직 프로세싱되지 않은 입력 데이터의 제2 부분임을 그것에 알리는 메시지(화살표(915))를 프리(또는 "유휴") W7(903)에 전송한다. 도 6에 도시된 단계들(3042-3044) 또는 도 7에 도시된 단계(3047)를 포함한 단계들(3042 내지 3044)은 미리 정해진 임계값에 도달할 때까지 반복될 수 있는데, 즉, 입력 데이터의 상이한 부분들에 대해 작업하는 새로운 태스크들이 생성될 수 있고; 예를 들어, 워커 노드(7)의 판독 포인터가 여전히 느리게 진전하고 따라서 태스크 M1'의 입력 파일 데이터 프로세싱 속도가 임계값 아래에 있으면, W7에 할당되고 그 노드에 의해 아직 프로세싱되지 않은 세그먼트의 일부분을 입력 데이터로서 갖는, 프리 워커 노드에서 실행될 새로운 태스크 M1"가 생성될 수 있다.
변형 실시예에 따르면, 그의 입력 데이터 프로세싱 속도가 다른 태스크들보다 느리기 때문에(낙오자 태스크) 새로운 맵 태스크의 생성을 위한 후보인 워커 노드는 변화하지 않은 채로 남지만, 각각이 변화하지 않은 채로 남은 태스크에 의해 프로세싱되는 입력 데이터의 부분들을 프로세싱하는 새로운 태스크들이 생성된다. 아래 표 3의 도움으로 예가 도시된다.
Figure pat00003
예를 들어, 태스크 M1은 낙오자 태스크이고, M1은 변화하지 않은 채로 남지만, 2개의 추가 사본(또는 "경쟁") 태스크들, M1' 및 M1"이 생성되며, 각각은 M1에 의해 핸들링되는 입력 데이터의 일부분을 핸들링한다는 것을 고려한다. 다른 것들 이전에 완료하는 태스크(사본 또는 원본)가 그것들이 핸들링하는 입력 데이터에 의존하여, 다른 태스크들의 실행을 취소함으로써, 리소스들의 낭비를 피한다. 예를 들어, W2가 먼저 완료되면, W1 및 W3이 취소된다. W3이 먼저 완료되면, W2가 취소된다. 따라서, 태스크가 완료되고, 완료된 태스크와 중첩하는 입력 데이터를 갖는 동일한 태스크들(즉, "중첩" 태스크들)이 존재하는 경우(그것들이 동일한 프로그램/함수를 실행한다는 것을 의미함), 중첩 태스크들은 취소된다. 따라서 이러한 전략은 작업 가로채기와 추론적 실행의 조합이고, 둘다, 즉, 입력 데이터 세그먼트들의 비-중첩 부분들을 프로세싱하는 태스크들의 추론적 실행의 이점들을 조합한다. 태스크 입력 데이터 프로세싱의 속도를 높일 수 있다는 희망으로 프리 리소스들을 이용함과 동시에, 실행되고 있는 태스크를 변화되지 않은 채로 남기는 복수의 이유가 존재한다. 그 이유들 중 하나는 태스크의 입력 데이터 프로세싱 속도가 주어진 순간에 느리더라도, 그의 입력 데이터 프로세싱 속도는 과거에 충분하였고, 입력 데이터 프로세싱 속도가 향상될 것이라고 기대하는 좋은 이유가 존재한다는 것이다. 다른 이유는 예를 들어, 워커가 그것이 실행하고 있는 태스크들의 입력 데이터 판독 포인터 위치를 전송하기 위해 마스터의 요구에 대해 특정 지연 내에 응답하지 않는다는 것이다. 또 다른 이유는 태스크가 중대한 것으로 고려되고 차단되어서는 안 된다는 것이다. 또 다른 이유는, 태스크 M1이 W2 및 W1에서 추론적으로 실행되었고, 가로채기가 수행되었을 때, 오직 W1이 세그먼트의 새로운 끝에 대해 통지받았기 때문에, W3과 중첩하여 W2를 변화되지 않게 남기는 것이다.
도 10은 비-제한적 예시적인 실시예에 따른 본 발명의 방법의 논리도이다.
제1 단계(10000)에서, 방법을 위해 이용되는 변수들 및 파라미터들이 초기화된다. 단계(10001)에서, 입력 데이터는 입력 데이터 세그먼트들로 분할된다. 단계(10002)에서, 입력 데이터 세그먼트들을 프로세싱하기 위한 태스크들이 워커 노드들에 할당되고, 여기서 각 워커 노드는 입력 데이터 세그먼트를 프로세싱하기 위한 태스크를 할당받는다. 단계(10003)에서, 태스크들을 실행하는 워커 노드들(901, 902, 903)로부터 수신된 데이터로부터, 태스크에 의해 프로세싱된 입력 데이터 세그먼트 내의 현재의 판독 위치를 가리키는 판독 포인터가 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않았는지가 결정되고; 단계(10004)에서, 프리 워커 노드에 새로운 태스크가 할당되고, 새로운 태스크는 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않은 태스크에 의해 아직 프로세싱되지 않은 입력 데이터 세그먼트의, 분할된 부분이라고 하는, 일부분에 따른 것이고, 분할된 부분은 현재의 판독 포인터 위치 뒤에 배치되는 입력 데이터 세그먼트의 부분이다. 분할할 더 많은 태스크들을 찾기 위해 또는 프리 워커 노드들이 이용 가능하게 되도록 방법은 단계(10003)으로 루프 백(loop back)한다.
본 발명의 구현은 도시된 실시예들로 한정되지 않는다. 독자는 도 8이 본 발명을 구현하는 마스터 디바이스(또는 마스터 "노드")의 비-제한적 예시적인 실시예임을 이해할 것이다. 특히, 본 발명을 구현하는 디바이스는 예를 들어, 복수의 기능들을 구현하는 더 적은 요소들, 또는 더욱 기본적인 기능들을 구현하는 더 많은 요소들과 같은, 도시된 것보다 많거나 적은 요소들을 포함할 수 있다.
마찬가지로, 독자는 방법 또는 본 발명의 구현이 도면들에 도시된 바와 같은 구현에 제한되지 않으며, 방법들의 단계들은 예를 들어, 프로세싱 시간을 벌기 위해 상이한 순서로, 또는 병렬로 실행될 수 있다는 것을 이해할 것이다.
논의된 변형들은 본 발명의 특히 유익한 변형 실시예들을 제공하기 위해 따로따로 이용되거나, 그것들 사이에서 조합될 수 있다.
설명된 실시예들 중 일부는 하드웨어 요소들의 이용을 논의하지만, 하드웨어에 의해 구현되는 것으로서 표시된 일부 기능들은 그 대신에 본 발명을 구현하는 디바이스의 생산 비용들을 줄이기 위해 소프트웨어로 구현될 수 있다.
대안적으로, 본 발명은 하드-앤드 소프트웨어 컴포넌트들(hard-and software components)의 혼합을 이용하여 구현되며, 도시된 하드웨어 컴포넌트들은 소프트웨어로 대안적으로 실행되는 기능들을 제공한다. 특정 실시예에 따르면, 본 발명은 전적으로 하드웨어로, 예를 들어, 전용 컴포넌트로서(예를 들어, ASIC, FPGA 또는 VLSI로서)(각각 <<Application Specific Integrated Circuit>>, <<Field-Programmable Gate Array>> 및 <<Very Large Scale Integration>>) 또는 하드웨어 및 소프트웨어의 혼합 형태로 또는 디바이스에 집적된 별개의 전자 컴포넌트들로서 구현된다.

Claims (12)

  1. 맵리듀스 프레임워크(map reduce framework)에서 데이터를 프로세싱하기 위한 방법으로서 - 상기 방법은 마스터 디바이스(800, 900)에 의해 실행됨 - ,
    입력 데이터를 입력 데이터 세그먼트들로 분할하는 단계(10001);
    상기 입력 데이터 세그먼트들을 프로세싱하기 위한 태스크들을 워커 노드들(worker nodes)에 할당하는 단계(10002) - 각각의 워커 노드에는 입력 데이터 세그먼트를 프로세싱하기 위한 태스크가 할당됨 - ;
    상기 태스크들을 실행하는 워커 노드들(901, 902, 903)로부터 수신된 데이터로부터, 태스크에 의해 프로세싱된 입력 데이터 세그먼트 내의 현재의 판독 위치를 가리키는 판독 포인터가 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않았는지를 결정하는 단계(10003); 및
    프리 워커 노드(free worker node)에 새로운 태스크를 할당하는 단계(10004) - 상기 새로운 태스크는 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않은 상기 태스크에 의해 아직 프로세싱되지 않은 상기 입력 데이터 세그먼트의 분할된 부분(split portion)이라고 지칭되는 부분에 부여(attribute)되고, 상기 분할된 부분은 상기 현재의 판독 포인터 위치 뒤에 배치되는 상기 입력 데이터 세그먼트의 일부임 -
    를 포함하는 데이터 프로세싱 방법.
  2. 제1항에 있어서,
    청구항 1의 방법의 마지막 단계는, 상기 태스크들로부터 수신된 상기 데이터로부터, 태스크당 입력 데이터 프로세싱 속도를 결정하는 단계(3047), 및 데이터 프로세싱 속도가 데이터 프로세싱 속도 임계값 아래에 있는 각각의 태스크에 대하여, 청구항 1의 마지막 단계를 실행하는 단계에 종속되고, 상기 데이터 프로세싱 속도는 상기 워커 노드들로부터 수신된 상기 데이터로부터 획득된 후속하는 판독 포인터들로부터 결정되는, 데이터 프로세싱 방법.
  3. 제1항 또는 제2항에 있어서,
    입력 데이터 세그먼트의 끝부분 앞에 상기 미리 정해진 임계값에 아직 도달하지 않은 태스크를 실행하는 워커 노드들에 메시지를 전송하는 단계를 포함하고, 상기 메시지는 상기 메시지가 전송되는 워커 노드에 의해 실행되는 태스크에 대한 입력 데이터 세그먼트의 끝부분을 업데이트하기 위한 정보를 포함하는, 데이터 프로세싱 방법.
  4. 제1항 또는 제2항에 있어서,
    입력 데이터의 프로세싱을 상기 분할된 부분 앞에 배치된 입력 데이터 세그먼트의 일부분으로 제한하기 위해, 태스크에 제공되는 입력 데이터 스트림에 파일 끝 마커(End Of File marker)를 삽입하는 단계를 포함하는 데이터 프로세싱 방법.
  5. 제1항 또는 제2항에 있어서,
    상기 마스터 노드에서 스케줄링 테이블을 업데이트하는 단계를 포함하고, 상기 스케줄링 테이블은, 할당된 태스크에 대한 워커 노드의 관련을 허용하고 또한 상기 할당된 태스크의 입력 데이터 세그먼트 부분의 시작 및 끝을 정의하는 정보를 포함하는, 데이터 프로세싱 방법.
  6. 제1항 또는 제2항에 있어서,
    상기 방법은 입력 데이터 세그먼트들의 비-중첩 부분들을 프로세싱하는 태스크들의 추론적 실행(speculative execution)을 포함하는, 데이터 프로세싱 방법.
  7. 맵리듀스 프레임워크에서 데이터를 프로세싱하기 위한 마스터 디바이스로서,
    입력 데이터를 입력 데이터 세그먼트들로 분할하기 위한 수단;
    상기 입력 데이터 세그먼트들을 프로세싱하기 위한 태스크들을 워커 노드들에 할당하기 위한 수단 - 각각의 워커 노드에는 입력 데이터 세그먼트를 프로세싱하기 위한 태스크가 할당됨 - ;
    상기 태스크들을 실행하는 워커 노드들로부터 수신된 데이터로부터, 태스크에 의해 프로세싱된 입력 데이터 세그먼트 내의 현재의 판독 위치를 가리키는 판독 포인터가 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않았는지를 결정하기 위한 수단; 및
    프리 워커 노드에 새로운 태스크를 할당하기 위한 수단 - 상기 새로운 태스크는 입력 데이터 세그먼트의 끝부분 앞에서 미리 정해진 임계값에 아직 도달하지 않은 상기 태스크에 의해 아직 프로세싱되지 않은 상기 입력 데이터 세그먼트의 분할된 부분(split portion)이라고 지칭되는 부분에 부여(attribute)되고, 상기 분할된 부분은 상기 현재의 판독 포인터 위치 뒤에 배치되는 상기 입력 데이터 세그먼트의 일부임 -
    을 포함하는 마스터 디바이스.
  8. 제7항에 있어서,
    상기 마스터 디바이스는, 상기 태스크들로부터 수신된 상기 데이터로부터, 태스크당 입력 데이터 프로세싱 속도를 결정하기 위한 수단, 및 데이터 프로세싱 속도가 데이터 프로세싱 속도 임계값 아래에 있는지를 결정하기 위한 수단을 더 포함하고, 상기 데이터 프로세싱 속도는 상기 워커 노드들로부터 수신된 상기 데이터로부터 획득된 후속하는 판독 포인터들로부터 결정되는, 마스터 디바이스.
  9. 제7항 또는 제8항에 있어서,
    입력 데이터 세그먼트의 끝부분 앞에서 상기 미리 정해진 임계값에 아직 도달하지 않은 태스크를 실행하는 워커 노드들에 메시지를 전송하기 위한 수단을 포함하고, 상기 메시지는 상기 메시지가 전송되는 워커 노드에 의해 실행되는 태스크에 대한 입력 데이터 세그먼트의 끝부분을 업데이트하기 위한 정보를 포함하는, 마스터 디바이스.
  10. 제7항 또는 제8항에 있어서,
    입력 데이터의 프로세싱을 상기 분할된 부분 앞에 배치된 입력 데이터 세그먼트의 일부분으로 제한하기 위해, 태스크에 제공되는 입력 데이터 스트림에 파일 끝 마커(End Of File marker)를 삽입하기 위한 수단을 포함하는, 마스터 디바이스.
  11. 제7항 또는 제8항에 있어서,
    상기 마스터 노드에서 스케줄링 테이블을 업데이트하기 위한 수단을 포함하고, 상기 스케줄링 테이블은, 할당된 태스크에 대한 워커 노드의 관련을 허용하고 또한 상기 할당된 태스크의 입력 데이터 세그먼트 부분의 시작 및 끝을 정의하는 정보를 포함하는, 마스터 디바이스.
  12. 제7항 또는 제8항에 있어서,
    상기 마스터 디바이스는 입력 데이터 세그먼트들의 비-중첩 부분들을 프로세싱하는 태스크들의 추론적 실행을 위한 수단을 포함하는, 마스터 디바이스.
KR1020130158292A 2012-12-20 2013-12-18 맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법 KR20140080434A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP12306644.1 2012-12-20
EP12306644.1A EP2746941A1 (en) 2012-12-20 2012-12-20 Device and method for optimization of data processing in a MapReduce framework

Publications (1)

Publication Number Publication Date
KR20140080434A true KR20140080434A (ko) 2014-06-30

Family

ID=47598646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130158292A KR20140080434A (ko) 2012-12-20 2013-12-18 맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법

Country Status (5)

Country Link
US (1) US20140181831A1 (ko)
EP (2) EP2746941A1 (ko)
JP (1) JP2014123365A (ko)
KR (1) KR20140080434A (ko)
CN (1) CN103885835A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180028004A (ko) * 2016-09-07 2018-03-15 한국전자통신연구원 복수의 워커 노드가 분산된 환경에서 데이터 스트림을 분석하고 처리하는 방법 및 장치, 그리고 태스크를 관리하는 방법 및 장치
KR20200063962A (ko) * 2018-11-28 2020-06-05 서울대학교산학협력단 분산 처리 시스템 및 이의 동작 방법

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101480867B1 (ko) * 2013-05-31 2015-01-09 삼성에스디에스 주식회사 맵리듀스 연산 가속 시스템 및 방법
US10491663B1 (en) * 2013-10-28 2019-11-26 Amazon Technologies, Inc. Heterogeneous computations on homogeneous input data
US9983901B2 (en) * 2014-07-09 2018-05-29 Google Llc Dynamic shard allocation adjustment
JP6519111B2 (ja) * 2014-07-18 2019-05-29 富士通株式会社 データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
US10133602B2 (en) * 2015-02-19 2018-11-20 Oracle International Corporation Adaptive contention-aware thread placement for parallel runtime systems
US9832137B1 (en) * 2015-03-23 2017-11-28 VCE IP Holding Company LLC Provisioning system and method for a distributed computing environment using a map reduce process
US9684512B2 (en) * 2015-03-30 2017-06-20 International Business Machines Corporation Adaptive Map-Reduce pipeline with dynamic thread allocations
JP2016206757A (ja) * 2015-04-16 2016-12-08 富士通株式会社 分散処理プログラム、分散処理方法および情報処理装置
EP3328019B1 (en) 2015-07-21 2019-11-27 LG Electronics Inc. Broadcasting signal transmitting apparatus, broadcasting signal receiving apparatus, broadcasting signal transmitting method, and broadcasting signal receiving method
CN107402952A (zh) * 2016-05-20 2017-11-28 伟萨科技有限公司 大数据处理加速器及大数据处理系统
US10275287B2 (en) 2016-06-07 2019-04-30 Oracle International Corporation Concurrent distributed graph processing system with self-balance
US10545815B2 (en) * 2016-08-03 2020-01-28 Futurewei Technologies, Inc. System and method for data redistribution in a database
US10318355B2 (en) 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US10534657B2 (en) 2017-05-30 2020-01-14 Oracle International Corporation Distributed graph processing system that adopts a faster data loading technique that requires low degree of communication
CN107632890B (zh) * 2017-08-10 2021-03-02 北京中科睿芯科技集团有限公司 一种数据流体系结构中动态节点分配方法和系统
JP6778161B2 (ja) * 2017-08-10 2020-10-28 日本電信電話株式会社 分散同期処理システム、分散同期処理方法および分散同期処理プログラム
EP3701374A1 (en) * 2017-11-03 2020-09-02 Huawei Technologies Co., Ltd. A system and method for high-performance general-purpose parallel computing with fault tolerance and tail tolerance
US10776148B1 (en) * 2018-02-06 2020-09-15 Parallels International Gmbh System and method for utilizing computational power of a server farm
US10990595B2 (en) 2018-05-18 2021-04-27 Oracle International Corporation Fast distributed graph query engine
CN110928656B (zh) * 2019-11-18 2023-02-28 浙江大搜车软件技术有限公司 一种业务处理方法、装置、计算机设备和存储介质
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
US11645200B2 (en) * 2020-11-24 2023-05-09 International Business Machines Corporation Reducing load balancing work stealing
CN113722071A (zh) * 2021-09-10 2021-11-30 拉卡拉支付股份有限公司 数据处理方法、装置、电子设备、存储介质及程序产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148365A (en) * 1998-06-29 2000-11-14 Vlsi Technology, Inc. Dual pointer circular queue
TWI228250B (en) * 2002-07-18 2005-02-21 Mediatek Inc Method for defect management of optical disk
US7599456B1 (en) * 2004-12-13 2009-10-06 Marvell International Ltd. Input/output data rate synchronization using first in first out data buffers
JP4519082B2 (ja) * 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
WO2008118613A1 (en) * 2007-03-01 2008-10-02 Microsoft Corporation Executing tasks through multiple processors consistently with dynamic assignments
CN102622272A (zh) * 2012-01-18 2012-08-01 北京华迪宏图信息技术有限公司 基于集群和并行技术的海量卫星数据处理系统及处理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180028004A (ko) * 2016-09-07 2018-03-15 한국전자통신연구원 복수의 워커 노드가 분산된 환경에서 데이터 스트림을 분석하고 처리하는 방법 및 장치, 그리고 태스크를 관리하는 방법 및 장치
KR20200063962A (ko) * 2018-11-28 2020-06-05 서울대학교산학협력단 분산 처리 시스템 및 이의 동작 방법

Also Published As

Publication number Publication date
US20140181831A1 (en) 2014-06-26
EP2746941A1 (en) 2014-06-25
EP2746948A1 (en) 2014-06-25
JP2014123365A (ja) 2014-07-03
CN103885835A (zh) 2014-06-25

Similar Documents

Publication Publication Date Title
KR20140080434A (ko) 맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법
US10452441B1 (en) Determining an allocation of computing resources for a job
US9442760B2 (en) Job scheduling using expected server performance information
CN106933669B (zh) 用于数据处理的装置和方法
US8234652B2 (en) Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks
EP3226133A1 (en) Task scheduling and resource provisioning system and method
US9401835B2 (en) Data integration on retargetable engines in a networked environment
US8108876B2 (en) Modifying an operation of one or more processors executing message passing interface tasks
US8127300B2 (en) Hardware based dynamic load balancing of message passing interface tasks
US9396028B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
US9218210B2 (en) Distributed processing system
CN109117252B (zh) 基于容器的任务处理的方法、系统及容器集群管理系统
US20140215003A1 (en) Data processing method, distributed processing system, and program
US9141677B2 (en) Apparatus and method for arranging query
US11074103B2 (en) Scheduling method and scheduling device
CN115373835A (zh) Flink集群的任务资源调整方法、装置及电子设备
CN110673959A (zh) 用于处理任务的系统、方法和装置
US20170371713A1 (en) Intelligent resource management system
CN114816709A (zh) 任务调度方法、装置、服务器及可读存储介质
Werner et al. HARDLESS: A generalized serverless compute architecture for hardware processing accelerators
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
CN109189581B (zh) 一种作业调度方法和装置
US9367326B2 (en) Multiprocessor system and task allocation method
KR20190109638A (ko) 분산 파일 시스템을 기반으로 하는 빅데이터 처리 플랫폼의 태스크 스케줄링 방법, 이를 위한 컴퓨터 프로그램 및 컴퓨터 판독 가능 기록 매체
Huang et al. Improving speculative execution performance with coworker for cloud computing

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid