KR101620896B1 - 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템 - Google Patents

이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템 Download PDF

Info

Publication number
KR101620896B1
KR101620896B1 KR1020140023195A KR20140023195A KR101620896B1 KR 101620896 B1 KR101620896 B1 KR 101620896B1 KR 1020140023195 A KR1020140023195 A KR 1020140023195A KR 20140023195 A KR20140023195 A KR 20140023195A KR 101620896 B1 KR101620896 B1 KR 101620896B1
Authority
KR
South Korea
Prior art keywords
task
processing unit
map
job
tracker node
Prior art date
Application number
KR1020140023195A
Other languages
English (en)
Other versions
KR20150101644A (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 서울시립대학교 산학협력단
Priority to KR1020140023195A priority Critical patent/KR101620896B1/ko
Publication of KR20150101644A publication Critical patent/KR20150101644A/ko
Application granted granted Critical
Publication of KR101620896B1 publication Critical patent/KR101620896B1/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/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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

본 발명은 분산처리 프레임워크에서 이용할 수 있는 머신에 내장된 프로세싱 유닛의 수행 성능을 반영하여 맵리듀스 프로그램 모델의 수행 성능을 향상시킬 수 있도록 하는, 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템에 관한 것이다.
본 발명을 이용함으로써, 이기종 프로세싱 타입의 프로세싱 유닛을 활용하여 맵리듀스 프로그램 모델의 잡의 수행 성능을 향상시킬 수 있는 효과가 있다.

Description

이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템{EXECUTING PERFORMANCE ENHANCEMENT METHOD, EXECUTING PERFORMANCE ENHANCEMENT APPARATUS AND EXECUTING PERFORMANCE ENHANCEMENT SYSTEM FOR MAP-REDUCE PROGRAMMING MODEL CONSIDERING DIFFERENT PROCESSING TYPE}
본 발명은 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템에 관한 것으로서, 구체적으로는 분산처리 프레임워크에서 이용할 수 있는 머신에 내장된 프로세싱 유닛의 수행 성능을 반영하여 맵리듀스 프로그램 모델의 수행 성능을 향상시킬 수 있도록 하는, 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템에 관한 것이다.
하둡(Hadoop, High-Availability Distributed Object-Oriented Platform)은 대량의 자료를 처리할 수 있도록 클러스터 컴퓨팅 환경에서 동작하는 분산처리 프레임워크(Framework)이다.
하둡은 분산 파일 처리 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 관리하고 맵리듀스(Map-Reduce)를 이용해서 데이터를 병렬적으로 처리할 수 있다.
하둡 프레임워크는 2 단계를 거쳐서 데이터를 처리하도록 구성되는데 처리해야 할 데이터를 작은 입력 스플릿(input split)으로 나누어 이를 여러 머신(노드)에서 수행(맵 태스크)하도록 하고 각각의 머신에서의 처리 결과를 병합(리듀스 태스크)하여 결과를 출력할 수 있도록 한다.
하둡 프레임워크는 분산 처리가 가능하여 네트워크로 연결된 여러 머신 상에 태스크를 할당하고 각 머신에 할당된 태스크를 동시에 수행하여 병렬성을 높일 수 있고 또한 용이하게 확장가능하도록 한다. 각각의 맵 태스크는 처리해야 할 전체 입력 데이터를 분할한 입력 스플릿을 독립적으로 처리하도록 구성된다.
이와 같은 하둡 상에서 수행되는 맵리듀스 프로그램 모델은 클러스터링 컴퓨팅 업계에서 각광받고 있다.
한편 하둡 프레임워크는 각 머신에 맵 태스크를 할당하도록 구성되는 데, 각 머신의 수행 성능을 고려치 않고 맵 태스크를 할당한다. 따라서 하둡 프레임워크는 머신내의 프로세서의 성능을 동일하게 간주하여 동일한 크기의 입력 스플릿을 가지는 맵 태스크를 머신내의 프로세서에 할당한다.
한편 컴퓨터 아키텍처의 발전으로 다양한 프로세서가 개발되고 있다. 한 예로, 그래픽을 처리하기 위해 수백 개 이상의 매니코어를 가지는 프로세서가 알려져 있다. 이러한 프로세서는 GPGPU(General Purpose Graphic Processing Unit)라고도 불린다. 이 GPGPU는 수행 성능이 CPU와 같은 일반 프로세서에 비해서 수백 배 이상인 것으로 알려져 있다. 그리고 GPGPU는 고속의 그래픽 처리를 위해서 일반 PC에 널리 탑재되고 있는 실정이다.
한편, 하둡 프레임워크는 이 머신 상에 탑재되어 주요 프로그램을 실행하는 CPU(Central Processing Unit)에만 맵 태스크 등을 할당하는 것으로 알려져 있다. 설령 하둡 프레임워크가 GPGPU에 맵 태스크 등을 할당가능하다고 하더라도 일반 CPU와 GPGPU에 동일한 크기의 입력 스플릿을 제공하여 동일한 맵 태스크를 수행하도록 한다.
이에 따라 GPGPU가 맵 태스크의 수행 완료 후에 대기하는 시간이 늘어나고 이는 맵리듀스 프로그램 모델을 통한 잡(Job)의 수행 완료 시간을 머신의 수행가능한 성능 이상의 시간으로 늘리는 문제가 발생한다.
따라서 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능을 향상시킬 수 있도록 하는, 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법 및 수행 성능 향상 장치가 필요하다.
본 발명은, 상술한 문제점을 해결하기 위해서 안출한 것으로서, 하둡 프레임워크에서 이용할 수 있는 머신들에 내장된 GPGPU를 활용하여 맵리듀스 프로그램 모델의 수행 성능을 향상시킬 수 있도록 하는 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템을 제공하는 데 그 목적이 있다.
또한 본 발명은 하둡 프레임워크에서 이용되는 프로그래밍 모델과 GPGPU에서 이용되는 프로그래밍 모델을 결합하여 맵리듀스 프로그램 모델의 잡(Job) 수행 성능을 향상시킬 수 있도록 하는 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템을 제공하는 데 그 목적이 있다.
또한 본 발명은 정적 스케쥴링 기법이나 동적 스케쥴링 기법을 활용하여 맵리듀스 프로그램 모델의 잡(Job)의 수행 성능을 향상시킬 수 있도록 하는 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템을 제공하는 데 그 목적이 있다.
또한 본 발명은 이기종 프로세싱 타입을 고려하여 잡의 입력 스플릿의 크기를 가변적으로 구성할 수 있도록 하여 맵리듀스 프로그램 모델의 잡 수행 성능을 향상시킬 수 있도록 하는 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템을 제공하는 데 그 목적이 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위한 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법은 (a) 맵리듀스 프로그램 모델로 구성된 잡(Job)의 복수의 맵 태스크 각각이 처리할 복수의 입력 스플릿을 결정하는 단계 및 (b) 제1 프로세싱 유닛 또는 제1 프로세싱 유닛과 상이한 프로세싱 타입인 제2 프로세싱 유닛에 복수의 맵 태스크를 할당하는 단계를 포함하며, 제2 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기는 제1 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기보다 더 크다.
또한 상기와 같은 목적을 달성하기 위한 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 장치는 맵리듀스 프로그램 모델로 구성된 잡의 복수의 맵 태스크 각각이 처리할 복수의 입력 스플릿을 결정하는 입력 스플릿 결정부 및 제1 프로세싱 유닛 또는 제1 프로세싱 유닛과 상이한 프로세싱 타입인 제2 프로세싱 유닛에 복수의 맵 태스크를 할당하는 맵 태스크 할당부를 포함하며, 제2 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기는 제1 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기보다 더 크다.
또한 상기와 같은 목적을 달성하기 위한 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 시스템은 잡을 수행하기 위한 잡 트래커 노드를 포함하며, 잡 트래커 노드는 맵리듀스 프로그램 모델로 구성된 잡의 복수의 맵 태스크 각각이 처리할 복수의 입력 스플릿을 결정하는 입력 스플릿 결정부 및 제1 프로세싱 유닛 또는 제1 프로세싱 유닛과 상이한 프로세싱 타입인 제2 프로세싱 유닛에 복수의 맵 태스크를 할당하는 맵 태스크 할당부를 포함하고, 제2 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기는 제1 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기보다 더 크다.
상기와 같은 본 발명에 따른 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템은 하둡 프레임워크에서 이용할 수 있는 머신들에 내장된 GPGPU를 활용하여 맵리듀스 프로그램 모델의 수행 성능을 향상시킬 수 있도록 하는 효과가 있다.
또한 상기와 같은 본 발명에 따른 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템은 하둡 프레임워크에서 이용되는 프로그래밍 모델과 GPGPU에서 이용되는 프로그래밍 모델을 결합하여 맵리듀스 프로그램 모델의 잡(Job) 수행 성능을 향상시킬 수 있도록 하는 효과가 있다.
또한 상기와 같은 본 발명에 따른 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템은 정적 스케쥴링 기법이나 동적 스케쥴링 기법을 활용하여 맵리듀스 프로그램 모델의 잡(Job)의 수행 성능을 향상시킬 수 있도록 하는 효과가 있다.
또한 상기와 같은 본 발명에 따른 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템은 이기종 프로세싱 타입을 고려하여 잡의 입력 스플릿의 크기를 가변적으로 구성할 수 있도록 하여 맵리듀스 프로그램 모델의 잡 수행 성능을 향상시킬 수 있도록 하는 효과가 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 하둡 프레임워크를 구성하는 예시적인 하드웨어 구성 시스템을 도시한 도면이다.
도 2는 도 1의 머신의 예시적인 내부 하드웨어 블록도를 도시한 도면이다.
도 3은 맵리듀스 프로그램 모델의 잡을 기능적으로 수행하기 위한 예시적인 시스템 구성도 및 개괄적인 수행 흐름을 도시한 도면이다.
도 4는 태스크 트래커 노드들의 예시적인 내부 기능 제어 구조를 도시한 도면이다.
도 5는 맵리듀스 프로그램 모델의 잡 처리를 위한 예시적인 제어 흐름을 도시한 도면이다.
도 6은 잡 트래커 노드의 예시적인 기능 블록도를 도시한 도면이다.
상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되어 있는 상세한 설명을 통하여 더욱 명확해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
도 1은 하둡 프레임워크를 구성하는 예시적인 하드웨어 구성 시스템을 도시한 도면이다.
도 1에 따르면 이 하드웨어 구성 시스템은 다수의 머신(100)과 머신(100)들 사이에서 송수신되는 데이터를 송수신하기 위한 네트워크로 구성된다.
머신(100)들은 하둡 프레임워크를 통해 처리할 맵리듀스 프로그램 모델의 잡(Job)들을 처리한다. 머신(100)은 예를 들어 개인용 컴퓨터, 워크스테이션 등과 같이 응용 프로그램들을 처리할 수 있는 장치이다.
하나 혹은 복수의 머신(100)은 맵리듀스 프로그램 모델의 잡을 생성하고 처리를 요청하는 클라이언트 머신(100)(client node, 이하 '클라이언트 노드'라 함)일 수 있다. 다른 하나 혹은 복수의 머신(100)은 클라이언트 노드(200)로부터 처리 요청된 잡을 수신하고 잡을 맵/리듀스 태스크로 분할하여 태스크들을 머신(100)에 할당하고 스케쥴링하는 머신(100)(jobtracker node, 이하 '잡 트래커 노드'라 함)일 수 있다. 또 다른 복수의 머신(100)은 잡 트래커 노드(300)의 지시에 따라 복수의 맵 태스크 또는 리듀스 태스크를 수행하고 그 처리 결과를 생성하기 위한 머신(100)(tasktracker node, '이하 태스크 트래커 노드'라 함)일 수 있다.
클라이언트 노드(200), 잡 트래커 노드(300) 및 태스크 트래커 노드(400)는 반드시 상이한 머신(100)에 맵핑될 필요는 없다. 예를 들어 잡 트래커 노드(300)와 특정 하나의 태스크 트래커 노드(400)는 동일한 머신(100)에 맵핑될 수 있다. 또한 클라이언트 노드(200), 잡 트래커 노드(300) 및 태스크 트래커 노드(400)는 반드시 하나의 머신(100)에 맵핑될 필요가 없다. 예를 들어 하나의 태스크 트래커 노드(400)는 복수의 머신(100)에 맵핑될 수도 있다.
각각의 머신(100)들은 하둡 프레임워크 상에서 SSH(Secure Shell) 데이터 통신을 통해서 필요한 데이터들을 송수신할 수 있도록 구성되며 HDFS를 통해 파일을 공유할 수 있다.
이 머신(100)에 관련된 구체적인 내용은 도 2 내지 6을 통해서 보다더 상세히 살펴보도록 한다.
네트워크는 예를 들어 근거리 통신 네트워크이거나 광대역 통신 네트워크일 수 있다. 네트워크는 예를 들어 인터넷 망을 구성할 수 있다.
도 2는 도 1의 머신(100)의 예시적인 내부 하드웨어 블록도를 도시한 도면이다.
도 2의 예시적인 하드웨어 블록도에 따르면 머신(100)은 네트워크 인터페이스(101), 휘발성 메모리(103), 대용량 저장 매체(105), 제2 프로세싱 유닛(107), 하나 이상의 제1 프로세싱 유닛(109) 및 시스템 버스/제어 버스(111)를 포함한다.
각 블록에 대해서 간단히 살펴보면, 네트워크 인터페이스(101)는 네트워크를 통해 데이터를 송수신하기 위한 인터페이스이다. 네트워크 인터페이스(101)는 예를 들어 로컬 랜, 무선 랜 등에서의 데이터 패킷을 송수신하고 수신할 수 있다.
휘발성 메모리(103)는 데이터와 프로그램을 임시로 저장하는 메모리이다. 휘발성 메모리(103)는 SDRAM, DDR-DRAM 등으로 구성된다. 이런 휘발성 메모리(103)는 사용자에 의해서 생성되고 처리될 잡에 관련된 프로그램이나 파일들을 임시로 저장할 수 있다.
대용량 저장 매체(105)는 하드 디스크 등과 같이 각종 파일과 프로그램 등을 저장하는 매체이다. 대용량 저장 매체(105)는 HDFS를 구성할 수 있고 사용자에 의해서 생성되고 처리될 잡에 관련된 프로그램이나 잡에서 처리할 파일들을 저장할 수 있다.
하나 이상의 제1 프로세싱 유닛(109)은 대용량 저장 매체(105) 등에 저장되어 있거나 네트워크 인터페이스(101)를 통해 수신된 프로그램을 수행할 수 있는 실행 유닛이다. 이 프로세싱 유닛(109)은 프로그램을 휘발성 메모리(103)에 로딩하고 휘발성 메모리(103)에 저장된 프로그램을 수행할 수 있다.
하나 혹은 복수의 제1 프로세싱 유닛(109)은 하나의 칩 패키지 내에 내장될 수 있고 예를 들어 CPU(Central Processing Unit)를 구성한다. CPU는 예를 들어 1 개, 4 개 또는 8 개의 제1 프로세싱 유닛(109)을 포함하고 각각의 프로세싱 유닛(109)은 순차적으로 구성된 프로그램을 수행할 수 있다.
제2 프로세싱 유닛(107)은 제1 프로세싱 유닛(109)과는 상이한 프로세싱 타입의 실행 유닛이다. 제2 프로세싱 유닛(107)은 예를 들어 GPGPU이다. GPGPU는 그래픽 처리를 위해서 특화되어 있으며 병렬의 데이터 처리를 위해 수백 개 이상의 프로세싱 코어를 내장하고 있다. 이에 따라 GPGPU는 일반 제1 프로세싱 유닛(109)의 수행 성능보다 적게는 수십 배에서 수십 배 이상의 수행 성능을 가진다.
따라서 만일 GPGPU에 다른 제1 프로세싱 유닛(109)과 동일한 크기의 입력 스플릿의 맵 태스크나 리듀스 태스크를 할당한다면 GPGPU에서의 처리가 다른 제1 프로세싱 유닛(109)보다 수십 배 이상 빨리 완료되어 GPGPU의 수행 성능을 충분히 활용하지 못하게 된다. 이에 따라 맵리듀스 프로그램 모델의 잡의 처리가 머신(100)들의 하드웨어 성능을 충분히 활용하지 못하게 된다.
한편 GPGPU를 이용한 프로그래밍 환경은 하둡의 프로그래밍 환경과는 달리 C++ 언어를 이용하도록 구성된다. 예를 들어 GPGPU를 이용한 프로그래밍 환경은 CUDA(Compute Unified Device Architecture)로 일 수 있다. 반면에 하둡의 프로그래밍 환경은 자바(Java)로 구성된다. 따라서 하둡 프레임워크에서 GPGPU를 이용하기 위해서는 자바와 C++ 간의 연동 방안이 필요하다. 이 연동 방안에 대해서는 도 4에서 살펴보도록 한다.
시스템 버스/제어 버스(111)는 각 블록 간의 데이터를 송수신하기 위한 버스이다. 시스템 버스/제어 버스(111)는 병렬 버스이거나 시리얼 버스일 수 있다. 각 블록 간 데이터 송수신을 위한 이 시스템 버스/제어 버스(111)는 모든 블록 간에 공통으로 연결될 필요는 없고 또한 동일한 버스 타입일 필요는 없다. 따라서 제1 프로세싱 유닛(109)과 휘발성 메모리(103), 대용량 저장 매체(105) 및 네트워크 인터페이스(101)를 위한 버스와 제1 프로세싱 유닛(109) 및 제2 프로세싱 유닛(107) 사이의 데이터 송수신을 위한 버스는 상이할 수 있다.
도 3은 맵리듀스 프로그램 모델의 잡을 기능적으로 수행하기 위한 예시적인 시스템 구성도 및 개괄적인 수행 흐름을 도시한 도면이다.
도 3에서는 설명의 단순화를 위해서 도 1의 하드웨어 구성 시스템 상에 하나의 클라이언트 노드(200), 하나의 잡 트래커 노드(300) 및 하나의 태스크 트래커 노드(400)가 맵핑되어 있는 것으로 가정한다. 물론 태스크 트래커 노드(400)는 일반적으로는 복 수개로 구성된다. 각각의 노드는 특정 머신(100)에 맵핑될 수 있다.
각각의 노드는 하둡 프레임워크에서 동작하는 객체를 포함한다. 예를 들어 클라이언트 노드(200)는 프로그래머에 의해서 작성된 잡에 대한 처리 요청을 수신하고 이를 잡 트래커 노드(300)에 요청하기 위한 잡클라이언트 객체를 포함한다. 잡 트래커 노드(300)는 잡클라이언트 객체의 요청에 따라 새로운 잡을 처리하는 잡트래커 객체를 포함하고 태스크 트래커 노드(400)는 잡트래커 객체와 연동하여 맵 태스크나 리듀스 태스크를 프로세싱 유닛(107, 109)에 할당하여 처리하는 태스크트래커 객체를 포함한다.
이러한 객체는 하둡 프레임워크의 구성에 의해 자바 가상 머신(Jave Virtual Machine, JVM) 상에서 수행된다.
이하에서 하둡 프레임워크에서의 잡의 수행 흐름을 간단히 살펴보면, 먼저 사용자는 하둡 프레임워크에서 구동할 맵리듀스 프로그램을 작성하고 이를 실행(도 3의 '1' 참조)한다.
이후 잡클라이언트 객체는 잡트래커 객체로 새로운 잡 ID를 요청(도 3의 '2' 참조)한다. 이로 인해 잡클라이언트 객체는 JAR 파일, 설정 파일, 처리할 전체 입력 데이터, 입력 스플릿에 관련된 정보 등을 새로이 생성된 잡 ID를 이름으로 하는 HDFS 상의 디렉토리에 복사(도 3의 '3' 참조)한다.
이후 잡트래커 객체는 잡클라이언트 객체에게 잡을 시작할 준비가 되었음을 알리고(도 3의 '4' 참조) 잡을 초기화(도 3의 '5' 참조)한다. 초기화 과정에서 잡트래커 객체는 내부 잡 큐(Queue)에 삽입하고 잡 스케쥴러는 큐의 잡을 추출하여 초기화한다. 초기화 과정에서 잡을 표현하기 위한 잡 객체가 생성된다. 이러한 잡 객체는 맵 태스크, 리듀스 태스크, 맵 태스크의 입력 스플릿을 결정할 수 있다.
이후 잡트래커 객체는 잡 객체를 이용하여 복수의 맵 태스크를 결정하고 각 맵 태스크의 입력 스플릿을 결정(도 3의 '6' 참조)할 수 있다. 이러한 맵 태스크의 결정과 입력 스플릿의 결정은 잡 트래커 노드(300)에서 수행되고 잡 객체(즉 잡 객체의 기능(function) 호출)를 이용하여 이루어질 수 있다. 이러한 맵 태스크와 입력 스플릿의 결정 과정은 도 5 및 도 6을 통해서 상세히 살펴보도록 한다.
이후 잡트래커 객체는 이 객체가 할당할 수 있는 태스크 트래커 노드(400)의 개수와 각 태스크 트래커 노드(400)의 프로세싱 유닛(107,109)의 개수 등을 식별하여 각각의 태스크 트래커 노드(400)의 각각의 프로세싱 유닛(107,109)에 맵 태스크를 할당하여 태스크 트래커 노드(400)로 하여금 해당 맵 태스크를 수행(도 3의 '7' 및 '8' 참조)하도록 한다.
참고로, 도 3에서는 하나의 태스크 트래커 노드(400)가 있는 것으로 도시하였으나 일반적으로 잡트래커 객체는 복수의 태스크 트래커 노드(400)에 맵 태스크를 할당할 수 있다. 또한 각각의 태스크 트래커 노드(400)는 복수의 프로세싱 유닛(107,109)을 포함하여 각각의 프로세싱 유닛(107,109)에 맵 태스크를 할당할 수 있다. 도 3에 도시되어 있는 하트비트(heart beat)는 태스크 트래커 객체에 의해서 생성되고 태스크 트래커가 작동중(또는 살아 있음)임을 나타내고 이를 이용하여 메시지 등을 주고 받을 수 있다. 그리고 잡트래커 객체는 하트비트의 응답으로 할당된 태스크(들)을 전달한다.
이후 태스크 트래커 객체는 HDFS로부터 잡 리소스를 복사하고 JVM을 실행하여 하나 혹은 복수의 프로세싱 유닛(107,109)에 할당된 각 맵 태스크를 수행(도 3의 '9' 및 '10' 참조)한다.
리듀스 태스크 역시 맵 태스크의 할당과 수행과 유사하게 잡트래커 객체에 의해서 모든 맵 태스크의 수행 완료 후에 또는 각각의 리듀스 태스크의 해당 입력의 생성 후에 태스크 트래커 노드(400)(또는 프로세싱 유닛(107,109))에 할당되어 처리될 수 있다.
도 4는 태스크 트래커 노드(400)들의 예시적인 내부 기능 제어 구조를 도시한 도면이다. 도 4에서는 두 개의 태스크 트래커 노드(400)를 도시하고 있다. 좌측의 태스크 트래커 노드(400)는 하둡 프레임워크에서 제공하는 프로그램 개발 환경에서 이용되는 일반적인 내부 기능 제어 구조를 나타내고 우측의 태스크 트래커 노드(400)는 GPGPU와 연동하기 위한 내부 기능 제어 구조를 나타낸다.
일반적으로 태스크 트래커 노드(400)의 태스크트래커 객체는 하나 이상의 맵 태스크를 잡 트래커 노드(300)로부터 수신하는 경우에, 차일드(child) JVM을 하나 이상 작동(launch)시켜 대응하는 제1 프로세싱 유닛(109)에 맵 태스크를 수행하도록 한다.
반면에 GPGPU에 맵 태스크가 할당된 경우에는 차일드 JVM과 연동하기 위한 C++ 랩퍼(Wrapper)를 이용하여 이루어진다. 이에 따라 C++ 래퍼는 차일드 JVM과 인터페이싱할 수 있고 각종 데이터와 기능을 C++ 코드로 변환하여 GPGPU인 제2 프로세싱 유닛(107)에 맵 태스크를 수행시킬 수 있다. 이러한 동작은 예를 들어 파이프(pipe) 태스크를 사용하여 이루어지게 되고 하나의 소켓(socket)을 활용하여 이루어진다. 이에 따라 GPGPU를 위한 CUDA로 구현된 프로세서(process)가 이 GPGPU에서 수행될 수 있다.
도 5는 맵리듀스 프로그램 모델의 잡 처리를 위한 예시적인 제어 흐름을 도시한 도면이다. 도 5의 제어 흐름은 잡 트래커 노드(300)와 태스크 트래커 노드(400)에 의해서 수행되며 바람직하게는 잡트래커 객체와 태스크트래커 객체에 의해서 수행된다. 도 5의 이하 설명에서는 도 3과 중복되지 않는 범위에서 살펴보도록 한다.
먼저 잡클라이언트 객체의 새로운 잡 수행 요청(S100)에 따라 요청된 잡을 초기화(S110) 한다. 이 초기화 과정에서 맵리듀스 프로그램 모델로 구성된 잡의 객체를 생성한다. 이러한 잡 객체는 클라이언트 노드(200)에서 제공된 사용자의 맵리듀스 프로그램에 의해서 생성될 수 있다. 잡 객체는 맵리듀스 프로그램에서 제공된 각종 기능을 수행하고 데이터를 액세스할 수 있도록 구성된다. 그리고 잡 객체는 잡트래커 객체와 연동하여 잡 트래커 노드(300) 내에서 구동될 수 있다.
이후 잡트래커 객체는 잡 객체를 이용하여 수행해야할 복수의 맵 태스크를 식별(S120)한다. 또한 잡트래커 객체는 식별된 맵 태스크 각각에 대한 입력 스플릿을 결정(S130)한다. 이러한 입력 스플릿은 각각의 맵 태스크가 처리해야하는 입력 데이터이다. 맵 태스크와 입력 스플릿의 결정은 잡 객체를 통해 이루어질 수 있고 본 발명에 따라 상이한 입력 스플릿이 각 맵 태스크에 할당될 수 있다.
입력 스플릿(의 크기)을 결정하기 위해서, 잡 트래커 객체는 잡 객체에서 제공하는 기능을 호출함으로써 각각의 맵 태스크에 대응하는 각각의 입력 스플릿을 결정할 수 있다. 이와 같은 구조로 인해 하둡 프레임워크의 구조 변경 없이 맵리듀스 프로그램 모델을 활용하여 입력 스플릿의 크기를 변경할 수 있다.
한 예로서, 잡 객체는 처리해야하는 전체 입력 데이터를 포함하는 단일의 파일로부터 각 맵 태스크가 처리할 입력 스플릿을 결정하도록 구성할 수 있다. 혹은 각 맵 태스크 별로 할당된 복수의 파일(복수의 파일이 전체 입력 데이터를 구성함) 각각으로부터 맵 태스크 별 입력 스플릿을 결정할 수도 있다. 후자의 방식은 사용자에 의해서 의도적으로 제2 프로세싱 유닛(107)에 특정 크기의 입력 스플릿을 할당하도록 한다.
이에 따라 적어도 복수의 맵 태스크 중에서 제2 프로세싱 유닛(107)에 할당될 맵 태스크의 입력 스플릿의 크기를 제1 프로세싱 유닛(109)에 할당될 맵 태스크의 입력 스플릿의 크기보다 더 크도록 구성될 수 있다.
이러한 입력 스플릿의 결정 방식을 통해, 잡 객체는 특정 태스크 트래커 노드(400)의 제1 프로세싱 유닛(109)들에 처리할 입력 스플릿의 크기를 단일의 파일로부터 또는 상이한 파일로부터 동일하게 혹은 유사한 크기로 구성하고 제2 프로세싱 유닛(107)에서 처리할 입력 스플릿의 크기는 제1 프로세싱 유닛(109)의 수행 성능과 제2 프로세싱 유닛(107)의 수행 성능의 비율을 고려하여 단일의 파일로부터 또는 상이한 파일로부터 더 큰 크기로 결정할 수 있다. 예를 들어 제2 프로세싱 유닛(107)의 수행 성능이 제1 프로세싱 유닛(109)에 비해서 10 배 정도의 수행 성능 차이가 있는 경우에 제2 프로세싱 유닛(107)에 할당할 입력 스플릿의 크기를 제1 프로세싱 유닛(109)의 입력 스플릿에 비해 10배 크게 구성할 수 있다. 혹은 각각의 프로세싱 유닛(107, 109)의 타입에 따라 입력 스플릿의 크기 임계값을 설정하고 제1 프로세싱 유닛(109)에는 임계값 이하 크기의 입력 스플릿을 제2 프로세싱 유닛(107)에는 임계값 이상 크기의 입력 스플릿을 할당할 수도 있다.
이와 같이 본 발명에 따른 입력 스플릿은 이기종 프로세싱 타입에 따라 달리 구성되고 프로세싱 타입, 임계값, 수행 성능 등에 기초하여 그 크기가 달리 결정된다.
이상과 같이 살펴본, 입력 스플릿을 상이하게 구성하여 잡의 처리 성능을 극대화하는 기법은 정적 스케쥴링 기법을 나타낸다. 이러한 정적 스케쥴링 기법에 국한될 필요는 없다. 따라서 태스크 트래커 노드(400)의 제1 프로세싱 유닛(109), 제2 프로세싱 유닛(107)의 개수에 따라 맵 태스크를 분할할 필요 없이 잡 트래커 노드(300)에서 이용할 수 있는 태스크 트래커 노드(400)의 개수만큼의 맵 태스크를 생성하고 동일한 입력 스플릿을 각 맵 태스크에 할당하도록 구성할 수도 있다.
대신에 태스크 트래커 노드(400)의 태스커트래커 객체가 내부 프로세싱 유닛(107,109)의 타입에 따라 처리할 맵 태스크를 복수의 서브 맵 태스크로 분할하고 서브 맵 태스크의 입력 스플릿을 재차 분할할 수도 있다. 이 때에는 제2 프로세싱 유닛(107)에 할당되는 서브 맵 태스크의 입력 스플릿의 크기를 다른 제1 프로세싱 유닛(109)에 할당되는 서브 맵 태스크의 입력 스플릿의 크기보다 각각의 수행 성능 비율로 더 크게 할당하도록 구성된다. 이러한 분할 방식은 동적 스케쥴링 기법에 해당한다.
이후 잡트래커 객체는 복수의 맵 태스크를 각각의 입력 스플릿과 함께 태스크 트래커 노드(400)에 할당(S140)한다. 구체적으로 잡트래커 객체는 식별된 복수의 맵 태스크를 복수의 태스크 트래커 노드(400)의 제1 프로세싱 유닛(109)들과 제2 프로세싱 유닛(107)에 할당한다. 이 과정에서 잡트래커 객체는 잡 객체에 의해서 맵 태스크 별로 지정된 프로세싱 타입을 이용하여 대응하는 프로세싱 유닛(107,109)에 해당 맵 태스크를 할당할 수 있다.
이후 잡트래커 객체는 이용할 수 있는 복수의 태스크 트래커 노드(400)로 맵 태스크들과 입력 스플릿들을 전달한다. 이러한 전달 과정은 맵 태스크와 입력 스플릿 자체의 전달이거나 HDFS에서의 대응 위치와 크기를 나타내는 정보의 전달일 수 있다.
복수의 태스크 트래커 노드(400) 각각은 복수의 맵 태스크들과 입력 스플릿을 전달받고 각각의 태스크 트래커 노드(400)는 맵 태스크들을 수행(S150)한다.
구체적으로 태스크 트래커 노드(400)의 태스크트래커 객체는 복수의 맵 태스크들과 입력 스플릿을 제1 프로세싱 유닛(109)들과 제2 프로세싱 유닛(107)들에 할당하고 차일드 JVM을 구동하여 각각의 프로세싱 유닛(107,109)들에서 수행하도록 한다.
이에 따라 태스크트래커 객체는 제2 프로세싱 유닛(107)에 할당된 맵 태스크를 또한 제2 프로세싱 유닛(107)에서 수행되도록 한다. 이때, GPGPU로 된 제2 프로세싱 유닛(107)은 C++로 된 태스크만을 수행할 수 있기에 차일드 JVM과 인터페이스하기 위한 C++ 래퍼를 이용하여 제2 프로세싱 유닛(107)에 할당된 맵 태스크가 수행되도록 구성된다.
한편 동적 스케쥴링 기법에 따라 단일의 맵 태스크와 단일의 입력 스플릿이 태스크 트래커 노드(400)로 전달될 수 있다. 이때에는 태스크 트래커 노드(400)의 태스크트래커 객체가 단일의 맵 태스크를 태스크 트래커 노드(400)에 내장된 제1 프로세싱 유닛(109)과 제2 프로세싱 유닛(107)의 개수, 제1 프로세싱 유닛(109)과 제2 프로세싱 유닛(107)의 수행 성능 비를 고려하여 복수의 서브 맵 태스크로 분할한다. 이후 태스크트래커 객체는 분할된 서브 맵 태스크를 제1 프로세싱 유닛(109)과 제2 프로세싱 유닛(107)에 할당하여 각각의 프로세싱 유닛(107,109)이 해당 서브 맵 태스크를 수행하도록 한다. 이에 따라 적어도 제2 프로세싱 유닛(107)은 하나 이상의 서브 맵 태스크를 수행할 수 있다.
제2 프로세싱 유닛(107)에 할당되는 서브 맵 태스크의 입력 스플릿의 크기는 제1 프로세싱 유닛(109)의 서브 맵 태스크의 입력 스플릿의 크기보다 크며 바람직하게는 수행 성능의 비율에 따라 그 크기가 결정될 수 있다.
이러한 동적 또는 정적 스케쥴링 기법에 의해서 각 머신(100)에 내장된 GPGPU의 처리 성능을 극대화할 수 있고 이에 따라 잡 처리 성능을 극대화할 수 있다.
모든 맵 태스크의 수행 완료를 인식한 잡 트래커 노드(300)(잡태스크 객체)는 이후 잡 객체를 통해 리듀스 태스크를 식별(S160)하고 리듀스 태스크를 특정 하나 혹은 복수의 태스크 트래커 노드(400)에 할당(S170)한다.
할당된 태스크 트래커 노드(400)는 해당 리듀스 태스크를 수행(S180)하고 이를 잡 트래커 노드(300)에 보고한다. 이에 따라 잡 트래커 노드(300)는 잡에 대한 결과를 클라이언트 노드(200)로 전송할 수 있다.
잡 수행 완료에 따라 본 제어 흐름은 종료(S200)될 수 있다.
도 6은 잡 트래커 노드(300)의 예시적인 기능 블록도를 도시한 도면이다.
도 6에 따르면 잡 트래커 노드(300)는 저장부(301), 잡 데이터 초기화부(303), 맵 태스크 식별부(305), 입력 스플릿 결정부(307), 맵 태스크 할당부(309), 맵 태스크 처리 요청부(311), 맵 태스크 처리 결과 수신부(313), 리듀스 태스크 식별부(315), 리듀스 태스크 할당부(317), 리듀스 태스크 처리 요청부(319) 및 리듀스 태스크 처리 결과 수신부(321)를 포함한다.
도 5를 통해서 잡 트래커 노드(300)에서 수행되는 제어 흐름을 상세히 살펴보았으므로 여기서는 각 기능 블록의 기능을 간단히 살펴보도록 한다. 도 6의 기능 블록도는 바람직하게는 잡트래커 객체에 의해서 잡 객체를 활용하여 수행될 수 있다.
먼저 저장부(301)는 잡 객체와 관련된 각종 데이터를 저장한다. 이러한 각종 데이터는 HDFS를 통해서 수신되고 저장될 수 있다. 저장부(301)는 휘발성 메모리(103) 및/또는 대용량 저장 매체(105)를 활용하여 구성된다.
잡 데이터 초기화부(303)는 객체의 새로운 잡 수행 요청에 따라 요청된 잡을 초기화 한다. 이 초기화 과정에서 맵리듀스 프로그램 모델로 구성된 잡의 객체를 생성할 수 있다.
맵 태스크 식별부(305)는 맵리듀스 프로그램 모델로 구성되어 잡 데이터 초기화부(303)에 의해 생성된 잡 객체를 이용하여 수행해야할 복수의 맵 태스크를 식별한다.
입력 스플릿 결정부(307)는 식별된 복수의 맵 태스크 각각이 처리해야하는 입력 스플릿을 결정한다. 입력 스플릿 결정부(307)는 단일의 파일로부터 맵 태스크 각각이 처리해야하는 입력 스플릿을 결정하거나 각각의 맵 태스크에 할당된 복수의 파일로부터 맵 태스크가 처리해야하는 입력 스플릿을 결정할 수 있다.
입력 스플릿 결정부(307)는 태스크 트래커 노드(400)의 제1 프로세싱 유닛(109)과 제2 프로세싱 유닛(107)의 수행 성능 비율에 기초하여 상이한 크기의 입력 스플릿을 생성하도록 할 수 있다. 이에 따라 입력 스플릿 결정부(307)는 제2 프로세싱 유닛(107)에 할당되는 맵 태스크의 입력 스플릿의 크기가 제1 프로세싱 유닛(109)에 할당되는 맵 태스크의 입력 스플릿의 크기보다 더 크도록 구성한다.
맵 태스크 할당부(309)는 제1 프로세싱 유닛(109) 또는 상기 제1 프로세싱 유닛(109)과 상이한 프로세싱 타입인 제2 프로세싱 유닛(107)에 상기 복수의 맵 태스크를 할당한다. 제1 프로세싱 유닛(109)은 CPU이거나 CPU 내에 포함되고 제2 프로세싱 유닛(107)은 GPGPU이다.
맵 태스크 할당부(309)는 복수의 맵 태스크 각각에 대해 잡 객체를 통해 지정된 프로세싱 타입에 따라 상기 제1 프로세싱 유닛(109) 또는 상기 제2 프로세싱 유닛(107)에 복수의 맵 태스크 각각을 할당할 수 있다. 이에 따라 맵 태스크 할당부(309)는 각각의 태스크 트래커 노드(400)가 수행해야하는 맵 태스크들과 대응하는 입력 스플릿을 결정할 수 있다.
맵 태스크 할당부(309)와 입력 스플릿 결정부(307)는 정정 스케쥴링 기법 대신에 동적 스케쥴링 기법에 따라 맵 태스크의 개수와 입력 스플릿을 결정하도록 구성될 수도 있다.
맵 태스크 처리 요청부(311)는 태스크 트래커 노드(400) 각각에 할당된 맵 태스크를 처리하도록 태스크 트래커 노드(400)에 요청한다. 맵 태스크 처리 요청부(311)는 맵 태스크별로 요청하거나 태스크 트래커 노드(400)에 할당된 모든 맵 태스크 처리를 요청하도록 구성될 수 있다.
맵 태스크 처리 결과 수신부(313)는 맵 태스크 처리 요청에 대한 처리 결과를 수신한다. 맵 태스크 처리 결과 수신부(313)는 모든 맵 태스크의 처리 결과를 수신하면 이후 과정(리듀스 태스크)을 수행하도록 한다.
리듀스 태스크 식별부(315)는 맵 태스크 처리 결과 수신부(313)로부터의 시그널에 따라 잡 객체로부터 리듀스 태스크를 식별한다.
리듀스 태스크 할당부(317)는 식별된 리듀스 태스크를 특정 태스크 트래커 노드(400)에 할당한다. 리듀스 태스크 할당부(317)는 예를 들어 태스크 트래커 노드(400)의 제1 프로세싱 유닛(109)이나 제2 프로세싱 유닛(107)에 리듀스 태스크를 할당할 수 있다. 리듀스 태스크 역시 복수 개로 구성될 수 있고 각각의 리듀스 태스크의 입력 데이터(맵 태스크들에 의해서 생성된 처리 결과)의 크기를 상이하게 구성할 수 있다. 이에 따라 제2 프로세싱 유닛(107)에 리듀스 태스크를 할당하고 또한 제1 프로세싱 유닛(109)에 리듀스 태스크를 할당하는 경우에 수행 성능 비율에 따라 상이한 크기로 된 입력 데이터를 프로세싱 유닛(107,109)에 제공할 수 있다.
리듀스 태스크 처리 요청부(319)는 할당된 리듀스 태스크를 대응하는 태스크 트래커 노드(400)에 처리하도록 요청한다.
리듀스 태스크 처리 결과 수신부(321)는 태스크 트래커 노드(400)에서의 리듀스 태스크 처리 결과를 수신한다. 수신된 처리 결과는 저장부(301)에 임시로 저장되고 이후 HDFS를 통해 클라이언트 노드(200)에 복사되거나 클라이언트 노드(200)에 의해서 액세스 될 수 있다.
이상과 같은 잡 트래커 노드(300)에 의해서 맵리듀스 프로그램 모델의 잡의 프로세싱 타입의 수행 성능을 고려한 수행 성능 최적화가 가능하다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다.
100 : 머신
101 : 네트워크 인터페이스 103 : 휘발성 메모리
105 : 대용량 저장 매체 107 : 제2 프로세싱 유닛
109 : 제1 프로세싱 유닛 111 : 시스템 버스/제어 버스
200 : 클라이언트 노드 300 : 잡 트래커 노드
301 : 저장부 303 : 잡 데이터 초기화부
305 : 맵 태스크 식별부 307 : 입력 스플릿 결정부
309 : 맵 태스크 할당부 311 : 맵 태스크 처리 요청부
313 : 맵 태스크 처리 결과 수신부 315 : 리듀스 태스크 식별부
317 : 리듀스 태스크 할당부 319 : 리듀스 태스크 처리 요청부
321 : 리듀스 태스크 처리 결과 수신부
400 : 태스크 트래커 노드

Claims (16)

  1. 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법으로서,
    (a) 맵리듀스 프로그램 모델로 구성된 잡(Job)의 복수의 맵 태스크 각각이 처리할 복수의 입력 스플릿을 처리요청된 상기 잡을 수신하는 잡 트래커 노드가 결정하는 단계;
    (b) 제1 프로세싱 유닛 및 상기 제1 프로세싱 유닛과 상이한 프로세싱 타입인 제2 프로세싱 유닛을 각각 포함하고 상기 잡 트래커 노드의 결정에 따라 할당된 태스크를 각각 병렬로 수행하는 복수의 태스크 트래커 노드에 상기 복수의 맵 태스크를 상기 잡 트래커 노드가 할당하는 단계; 및
    (c) 상기 태스크 트래커 노드가 상기 태스크 트래커 노드의 태스크트래커 객체를 통해 상기 태스크 트래커 노드의 제1 프로세싱 유닛에 할당된 맵 태스크를 제1 프로세싱 유닛에서 수행하고 상기 태스크 트래커 노드의 제2 프로세싱 유닛에 할당된 맵 태스크를 제2 프로세싱 유닛에서 수행하는 단계;를 포함하며,
    상기 태스크 트래커 노드의 상기 제1 프로세싱 유닛에 할당되는 맵 태스크는 상기 제1 프로세싱 유닛에서 수행되고 상기 태스크 트래커 노드의 상기 제2 프로세싱 유닛에 할당되는 맵 태스크는 상기 제2 프로세싱 유닛에서 동시에 수행되며,
    상기 제2 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기는 상기 제1 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기보다 더 큰,
    수행 성능 향상 방법.
  2. 제1항에 있어서,
    상기 단계 (a)는 상기 잡이 처리할 단일의 파일로부터 상기 복수의 맵 태스크 각각이 처리할 복수의 입력 스플릿을 결정하는,
    수행 성능 향상 방법.
  3. 제1항에 있어서,
    상기 단계 (a)는 상기 잡이 처리할 복수의 파일 각각으로부터 상기 복수의 맵 태스크 각각이 처리할 복수의 입력 스플릿을 결정하는,
    수행 성능 향상 방법.
  4. 제1항에 있어서,
    상기 단계 (b)는 복수의 맵 태스크 각각에 지정된 프로세싱 타입에 따라 상기 태스크 트래커 노드의 상기 제1 프로세싱 유닛 또는 상기 제2 프로세싱 유닛에 상기 맵 태스크를 할당하는,
    수행 성능 향상 방법.
  5. 제4항에 있어서,
    상기 제2 프로세싱 유닛은 GPGPU이고 상기 제1 프로세싱 유닛은 CPU인,
    수행 성능 향상 방법.
  6. 삭제
  7. 제1항에 있어서,
    상기 단계 (c)는 상기 태스크 트래커 노드의 태스크트래커 객체가 차일드 JVM(Java Virtual Machine)을 작동시켜 상기 제1 프로세싱 유닛이 할당된 맵 태스크를 수행하고 상기 차일드 JVM과 인터페이스하기 위해 생성되는 C++ 래퍼를 통해 상기 제2 프로세싱 유닛이 할당된 맵 태스크를 수행하며,
    상기 C++ 래퍼는 상기 차일드 JVM과 인터페이스 가능하고 상기 제2 프로세싱 유닛에 이용할 데이터와 수행할 기능을 C++ 코드로 변환하는,
    수행 성능 향상 방법.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 시스템으로서,
    잡을 수행하기 위한 잡 트래커 노드; 및
    상기 잡 트래커 노드에 의해 할당된 맵 태스크를 수행하기 위한 복수의 태스크 트래커 노드;를 포함하며,
    상기 잡 트래커 노드는,
    맵리듀스 프로그램 모델로 구성되고 처리요청된 잡의 복수의 맵 태스크 각각이 처리할 복수의 입력 스플릿을 결정하는 입력 스플릿 결정부; 및
    제1 프로세싱 유닛 및 상기 제1 프로세싱 유닛과 상이한 프로세싱 타입인 제2 프로세싱 유닛을 각각 포함하고 상기 잡 트래커 노드의 결정에 따라 할당된 태스크를 각각 병렬로 수행하는 상기 복수의 태스크 트래커 노드에 상기 복수의 맵 태스크를 할당하는 맵 태스크 할당부;를 포함하며,
    상기 태스크 트래커 노드의 상기 제1 프로세싱 유닛에 할당되는 맵 태스크는 상기 제1 프로세싱 유닛에서 수행되고 상기 태스크 트래커 노드의 상기 제2 프로세싱 유닛에 할당되는 맵 태스크는 상기 제2 프로세싱 유닛에서 동시에 수행되며,
    상기 제2 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기는 상기 제1 프로세싱 유닛에 할당되는 맵 태스크의 입력 스플릿의 크기보다 더 크며,
    상기 태스크 트래커 노드는 상기 태스크 트래커 노드의 태스크트래커 객체가 차일드 JVM을 작동시켜 상기 제1 프로세싱 유닛에 할당된 맵 태스크를 상기 제1 프로세싱 유닛을 통해 수행하고 상기 차일드 JVM과 인터페이스하기 위해 생성되는 C++ 래퍼를 통해 상기 제2 프로세싱 유닛에 할당된 맵 태스크를 상기 제2 프로세싱 유닛을 통해 수행하며,
    상기 C++ 래퍼는 상기 차일드 JVM과 인터페이스 가능하고 상기 제2 프로세싱 유닛에 이용할 데이터와 수행할 기능을 C++ 코드로 변환하는,
    수행 성능 향상 시스템.
  14. 삭제
  15. 삭제
  16. 삭제
KR1020140023195A 2014-02-27 2014-02-27 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템 KR101620896B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140023195A KR101620896B1 (ko) 2014-02-27 2014-02-27 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140023195A KR101620896B1 (ko) 2014-02-27 2014-02-27 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템

Publications (2)

Publication Number Publication Date
KR20150101644A KR20150101644A (ko) 2015-09-04
KR101620896B1 true KR101620896B1 (ko) 2016-05-13

Family

ID=54242719

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140023195A KR101620896B1 (ko) 2014-02-27 2014-02-27 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템

Country Status (1)

Country Link
KR (1) KR101620896B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077303A (ko) * 2018-12-20 2020-06-30 아주대학교산학협력단 대용량 클러스터에서 컴퓨팅 작업을 고속으로 처리하는 동적 스케줄링 방법
KR102315397B1 (ko) * 2021-06-22 2021-10-20 주식회사 크라우드웍스 데이터 필터링을 활용한 프로젝트 관리 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102026333B1 (ko) * 2017-05-12 2019-09-27 울산과학기술원 분산 파일 시스템에 대한 태스크 처리 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101245994B1 (ko) * 2012-08-31 2013-03-20 케이씨씨시큐리티주식회사 대용량 데이터의 분산 병렬 처리 시스템 및 방법
KR101255060B1 (ko) * 2012-07-16 2013-04-16 한국과학기술정보연구원 맵리듀스 기반 분산 병렬 개체 추출 시스템 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101255060B1 (ko) * 2012-07-16 2013-04-16 한국과학기술정보연구원 맵리듀스 기반 분산 병렬 개체 추출 시스템 및 방법
KR101245994B1 (ko) * 2012-08-31 2013-03-20 케이씨씨시큐리티주식회사 대용량 데이터의 분산 병렬 처리 시스템 및 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200077303A (ko) * 2018-12-20 2020-06-30 아주대학교산학협력단 대용량 클러스터에서 컴퓨팅 작업을 고속으로 처리하는 동적 스케줄링 방법
KR102153689B1 (ko) * 2018-12-20 2020-09-08 아주대학교산학협력단 대용량 클러스터에서 컴퓨팅 작업을 고속으로 처리하는 동적 스케줄링 방법
KR102315397B1 (ko) * 2021-06-22 2021-10-20 주식회사 크라우드웍스 데이터 필터링을 활용한 프로젝트 관리 방법 및 장치

Also Published As

Publication number Publication date
KR20150101644A (ko) 2015-09-04

Similar Documents

Publication Publication Date Title
US10467725B2 (en) Managing access to a resource pool of graphics processing units under fine grain control
US11681564B2 (en) Heterogeneous computing-based task processing method and software and hardware framework system
JP6433554B2 (ja) 計算タスクを処理するためのコンピュータクラスタ構成、およびそれを動作させるための方法
US10109030B1 (en) Queue-based GPU virtualization and management system
US11221888B2 (en) Method and system for GPU virtualization based on container
CN111488205B (zh) 面向异构硬件架构的调度方法和调度系统
KR20120008026A (ko) 가상 머신들을 위한 가상 불균일 메모리 아키텍처
US11169846B2 (en) System and method for managing tasks and task workload items between address spaces and logical partitions
KR20130114497A (ko) 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치
CN111309649B (zh) 一种数据传输和任务处理方法、装置及设备
US11321090B2 (en) Serializing and/or deserializing programs with serializable state
Diab et al. Dynamic sharing of GPUs in cloud systems
KR101620896B1 (ko) 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템
US20130219386A1 (en) Dynamic allocation of compute resources
JP2023511467A (ja) 機械学習ワークロードのためのタスクスケジューリング
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
KR101640231B1 (ko) 자동 분산병렬 처리 하둡 시스템의 지원을 위한 클라우드 구동 방법
US20240126561A1 (en) Dynamic distribution of container images
AU2017330520A1 (en) Peer-to-peer distributed computing system for heterogeneous device types
Stamelos et al. A novel framework for the seamless integration of fpga accelerators with big data analytics frameworks in heterogeneous data centers
CN111459668A (zh) 用于服务器的轻量级资源虚拟化方法及轻量级资源虚拟化装置
EP3343370A1 (en) Method of processing opencl kernel and computing device therefor
Butler et al. Improving application concurrency on GPUs by managing implicit and explicit synchronizations
Kocoloski et al. Hobbes: A multi-kernel infrastructure for application composition
US9547522B2 (en) Method and system for reconfigurable virtual single processor programming model

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190329

Year of fee payment: 4