KR20190107507A - 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치 - Google Patents

연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치 Download PDF

Info

Publication number
KR20190107507A
KR20190107507A KR1020180028837A KR20180028837A KR20190107507A KR 20190107507 A KR20190107507 A KR 20190107507A KR 1020180028837 A KR1020180028837 A KR 1020180028837A KR 20180028837 A KR20180028837 A KR 20180028837A KR 20190107507 A KR20190107507 A KR 20190107507A
Authority
KR
South Korea
Prior art keywords
map
unit
reduce
unit operation
chain
Prior art date
Application number
KR1020180028837A
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 한국전자통신연구원
Priority to KR1020180028837A priority Critical patent/KR20190107507A/ko
Publication of KR20190107507A publication Critical patent/KR20190107507A/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법이 개시된다. 연산 체인으로 구성된 프로그램을 이용하여 맵 단계(Map phase)와 리듀스 단계(Reduce phase)로 구성되는 맵리듀스 작업을 생성하는 방법은, 일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계, 상기 연산 체인에 포함된 상기 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계, 부여된 속성을 기반으로 상기 일련의 순서에 따라 상기 연산 체인에서 단위 연산을 추출하여 맵 단계를 구성하는 단계 및 구성된 단계를 포함하여 맵리듀스 작업을 생성하는 단계를 포함한다. 따라서, 누구나 쉽게 기존의 프로그램을 맵리듀스 기반의 분산 처리 환경에서의 맵리듀스 작업으로 변환할 수 있다.

Description

연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치{METHOD AND APPARATUS FOR GENERATING MAP-REDUCE JOB USING A PROGRAM CONTAINING OPERATION CHAIN}
본 발명은 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치에 관한 것으로, 더욱 상세하게는 프로그램에 포함된 단위 연산들에 대하여 속성을 부여하고 부여된 속성을 기반으로 단위 연산들을 맵 단계와 리듀스 단계에 추가함으로써 맵리듀스 작업을 생성하는 방법 및 장치에 관한 것이다.
맵리듀스(MapReduce)는 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어 프레임워크이다. 맵리듀스는 페타바이트 이상의 대용량 데이터를 신뢰도가 낮은 컴퓨터로 구성된 클러스터 환경에서 병렬 처리를 지원하기 위해서 개발되었으나, 병렬처리, 장애복구, 로드 밸런싱과 같이 병렬처리에서 고려해야할 복잡한 문제들을 해결하여 대용량 분산 병렬 처리 분야에서 가장 대중적인 프레임워크가 되었다.
맵리듀스는 대규모 데이터를 처리하는 작업을 여러 개의 작은 단위의 세부 작업으로 분할하여 이를 여러 컴퓨터에 적재하여 병렬적으로 처리(Map 단계)하고, 그 수행 결과를 합하여 최종 결과물을 생성(Reduce 단계)하는 방식으로 동작한다.
이러한 맵리듀스의 동작 방식은 함수형 프로그래밍에서 일반적으로 사용되는 맵(Map)과 리듀스(Reduce)라는 함수 기반으로 구성될 수 있다. 맵 함수에서는 키와 값의 쌍인 (key, value)를 입력으로 받고, 사용자에 의해 정의된 map 함수의 작업을 수행하여 또다른 키-값의 쌍을 출력한다.
리듀스 함수는 맵 함수의 출력 중에서 특정 키와 특정 키와 쌍을 이루는 값들의 리스트(key, list(values))를 입력으로 받고, 또다른 키와 값의 쌍인 (key2, value2)를 출력한다.
한편, 맵리듀스는 기존의 다른 분산 처리 방식보다 단순하여 많은 주목을 받았으나, 개발자들이 각자 자신의 분석 로직을 여러 단계의 맵리듀스 과정으로 구현하는 것은 어려운 일이다. 특히, 빅데이터 응용 개발자들은 대용량의 빅데이터를 분석하는 복잡한 응용 프로그램을 작성하게 되므로 개발하고자 하는 로직을 맵리듀스 과정에 적용하는 것은 더더욱 어렵다.
따라서, 개발자들이 별도의 맵리듀스 지식 없이도 개발하려는 프로그램을 맵리듀스 작업으로 구성할 수 있는 방안이 필요한 실정이다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법을 제공하는 데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 장치를 제공하는 데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 또 다른 목적은, 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업에 포함될 맵 단계를 구성하는 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 일 측면은, 연산 체인으로 구성된 프로그램을 이용하여 맵 단계(Map phase)와 리듀스 단계(Reduce phase)로 구성되는 맵리듀스 작업을 생성하는 방법을 제공한다.
여기서 맵리듀스 작업을 생성하는 방법은, 일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계, 상기 연산 체인에 포함된 상기 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계, 부여된 속성을 기반으로 상기 일련의 순서에 따라 상기 연산 체인에서 단위 연산을 추출하여 맵 단계를 구성하는 단계 및 구성된 단계를 포함하여 맵리듀스 작업을 생성하는 단계를 포함할 수 있다.
여기서 상기 속성을 부여하는 단계는, 연산 수행 결과로 반환하는 값이 없는 단위 연산에 대하여 터미널 속성을 부여할 수 있다.
여기서 상기 속성을 부여하는 단계는, 입력 레코드들을 기준값에 따라 그룹핑하는 그룹핑 연산 및 각 그룹을 입력으로 0개 또는 1개 이상의 결과 레코드를 반환하는 그룹단위 연산을 포함하는 단위 연산에 대하여 조인트 속성을 부여할 수 있다.
여기서 상기 맵 단계를 구성하는 단계는, 상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 상기 제1 단위 연산이 상기 터미널 속성 또는 상기 조인트 속성을 갖지 않으면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 맵 단계를 구성하는 단계는, 상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 상기 제1 단위 연산이 상기 터미널 속성을 가지면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 제1 단위 연산이 상기 터미널 속성을 가지면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계는, 상기 제1 단위 연산이 상기 연산 체인의 마지막 연산에 해당하면, 상기 맵 단계에 저장(store) 연산을 추가하는 단계 및 상기 연산 체인에 가장 먼저 수행되는 연산으로 로드(Load) 연산을 추가하는 단계를 포함할 수 있다.
여기서 상기 맵 단계를 구성하는 단계는, 상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 상기 제1 단위 연산이 상기 조인트 속성을 가지면, 상기 제1 단위 연산에 포함된 그룹핑 연산을 상기 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 그룹핑 연산을 상기 맵 단계에 추가하는 단계 이후에, 상기 리듀스 단계를 구성하는 단계를 더 포함할 수 있다.
여기서 상기 리듀스 단계를 구성하는 단계는, 상기 제1 단위 연산에 포함된 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에, 상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 상기 제2 단위 연산이 상기 터미널 속성 또는 상기 조인트 속성을 갖지 않으면, 상기 제2 단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에, 상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 상기 제2 단위 연산이 상기 조인트 속성을 가지면, 상기 제2 단위 연산을 다시 상기 연산 체인에 가장 먼저 수행되는 연산으로 추가하는 단계를 포함할 수 있다.
여기서 상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에, 상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 상기 제2 단위 연산이 상기 터미널 속성을 가지면, 상기 제2 단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함할 수 있다.
상기 목적을 달성하기 위한 본 발명의 다른 측면은 연산 체인으로 구성된 프로그램을 이용하여 맵 단계(Map phase)와 리듀스 단계(Reduce phase)로 구성되는 맵듀스 작업을 생성하는 장치를 제공한다.
여기서 맵리듀스 작업을 생성하는 장치는, 적어도 하나의 프로세서(processor) 및 상기 적어도 하나의 프로세서가 적어도 하나의 단계를 수행하도록 지시하는 명령어들을 저장하는 메모리(memory)를 포함할 수 있다.
여기서 상기 적어도 하나의 단계는, 일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계, 상기 연산 체인에 포함된 상기 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계, 부여된 속성을 기반으로 상기 일련의 순서에 따라 상기 연산 체인에서 단위 연산을 추출하여 맵 단계를 구성하는 단계 및 구성된 단계를 포함하여 맵리듀스 작업을 생성하는 단계를 포함할 수 있다.
여기서 상기 속성을 부여하는 단계는, 연산 수행 결과로 반환하는 값이 없는 단위 연산에 대하여 터미널 속성을 부여할 수 있다.
여기서 상기 속성을 부여하는 단계는, 입력 레코드들을 기준값에 따라 그룹핑하는 그룹핑 연산 및 각 그룹을 입력으로 0개 또는 1개 이상의 결과 레코드를 반환하는 그룹단위 연산을 포함하는 단위 연산에 대하여 조인트 속성을 부여할 수 있다.
여기서 상기 맵 단계를 구성하는 단계는, 상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 상기 제1 단위 연산이 상기 터미널 속성 또는 상기 조인트 속성을 갖지 않으면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 맵 단계를 구성하는 단계는, 상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 상기 제1 단위 연산이 상기 터미널 속성을 가지면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 제1 단위 연산이 상기 터미널 속성을 가지면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계는, 상기 제1 단위 연산이 상기 연산 체인의 마지막 연산에 해당하면, 상기 맵 단계에 저장(store) 연산을 추가하는 단계 및 상기 연산 체인에 가장 먼저 수행되는 연산으로 로드(Load) 연산을 추가하는 단계를 포함할 수 있다.
여기서 상기 맵 단계를 구성하는 단계는, 상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 상기 제1 단위 연산이 상기 조인트 속성을 가지면, 상기 제1 단위 연산에 포함된 그룹핑 연산을 상기 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 그룹핑 연산을 상기 맵 단계에 추가하는 단계 이후에, 상기 리듀스 단계를 구성하는 단계를 더 포함할 수 있다.
여기서 상기 리듀스 단계를 구성하는 단계는, 상기 제1 단위 연산에 포함된 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에, 상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 상기 제2 단위 연산이 상기 터미널 속성 또는 상기 조인트 속성을 갖지 않으면, 상기 제2 단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에, 상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 상기 제2 단위 연산이 상기 조인트 속성을 가지면, 상기 제2 단위 연산을 다시 상기 연산 체인에 가장 먼저 수행되는 연산으로 추가하는 단계를 포함할 수 있다.
여기서 상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에, 상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 상기 제2 단위 연산이 상기 터미널 속성을 가지면, 상기 제2 단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함할 수 있다.
상기 목적을 달성하기 위한 본 발명의 다른 측면은 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업에 포함될 맵 단계(Map phase)를 구성하는 방법을 제공한다.
여기서 맵 단계를 구성하는 방법은, 일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계, 상기 연산 체인에 포함된 상기 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계, 상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 상기 제1 단위 연산이 조인트 속성을 가지면, 상기 제1 단위 연산에 포함된 그룹핑 연산을 상기 맵 단계에 추가하는 단계를 포함할 수 있다.
상기와 같은 본 발명에 따른 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치를 이용할 경우에는 누구나 쉽게 맵리듀스 기반의 분산 처리 환경으로 프로그램을 변환할 수 있다.
따라서, 맵리듀스 분산 처리 환경으로 변환된 프로그램을 더 신속하게 동작시킬 수 있는 장점이 있다.
도 1은 본 발명의 일 실시예에 따른 맵리듀스 작업을 생성하는 방법을 설명하기 위한 예시 프로그램의 연산 흐름도이다.
도 2는 도 1에 따른 예시 프로그램에 포함된 복수의 단위 연산에 대하여 속성을 부여하는 과정을 설명하기 위한 예시도이다.
도 3은 본 발명의 일 실시예에 따른 맵 구성 단계를 설명하기 위한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 리듀스 구성 단계를 설명하기 위한 흐름도이다.
도 5는 도 3 및 도 4에 따른 맵 구성 단계와 리듀스 구성 단계를 도 2의 예시 프로그램에 적용한 결과를 나타낸 것이다.
도 6은 도 5에 따라 남아있는 연산 체인을 대상으로 도 3 및 도 4에 따른 맵 구성 단계와 리듀스 구성 단계를 적용한 결과를 나타낸 것이다.
도 7은 본 발명의 일 실시예에 따른 맵듀스 작업을 생성하는 방법에 대한 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 맵듀스 작업을 생성하는 장치에 대한 구성도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 맵리듀스 작업을 생성하는 방법을 설명하기 위한 예시 프로그램의 연산 흐름도이다.
본 발명에서는 임의의 특정 프로그램을 입력 데이터(input)로 하여, 맵리듀스 환경에서 해당 프로그램의 동작을 구현하기 위한 맵리듀스 작업을 생성하는 방법 및 장치를 제시한다.
입력 데이터가 되는 프로그램은 복수의 단위 연산을 조합하여 구성될 수 있다. 이때, 각 단위 연산이 일련의 연속적인 순서로 수행된다고 전제하면, 단위 연산의 순차적 호출로 프로그램이 동작하게 되며, 순차적 호출 순서를 갖는 단위 연산의 집합을 연산 체인으로 지칭할 수 있다.
여기서 단위 연산은 데이터 파일에 기록된 여러 레코드들을 입력으로 사용하여 지정된 작업을 수행하고, 0 또는 1개 이상의 결과 레코드를 생성(또는 반환, return)하는 작업을 의미할 수 있다. 또한, 함수 기반 프로그래밍에서 각 단위 연산은 하나의 함수 또는 하나의 목적을 달성하기 위하여 유기적으로 동작하는 복수의 함수를 의미할 수도 있다.
도 1에 따른 예시 프로그램은 빅데이터를 이용하여 종합 병원 주변 50 m 이내에서 택시 승하차가 가장 빈번한 5개의 종합병원을 분석하는 프로그램으로, 이하에서는 해당 예시 프로그램을 이용하여 본 발명의 일 실시예에 따른 맵리듀스 작업을 생성하는 방법을 설명한다. 다만, 예시 프로그램은 설명의 편의를 위한 것으로서만 해석되어야 하며, 본 발명의 범위를 한정하는 용도로 해석되어서는 안된다.
도 1에 따른 예시 프로그램은 앞에서 설명한 복수의 단위 연산의 연속된 호출로 동작하게 되며, 이때 가장 먼저 수행되는 단위 연산으로 로드 연산(load, 10)을 포함할 수 있다. 여기서 로드 연산(10)은 택시 로그 데이터들을 읽어들이는 연산을 의미할 수 있다. 또한, 예시 프로그램은 로드 연산(10) 이후에, 입력된 로그 데이터 중에서 승차 또는 하차에 관한 데이터들만으로 필터링하는 필터링 연산(Filter, 11)을 포함할 수 있다. 또한, 예시 프로그램은 필터링 연산(11) 이후에, 종합 병원의 데이터를 이용하여 50m 이내에 해당하는 영역으로 한정하여 택시 승하차를 판단하는 공간 결합 연산(Spartial Join, 12)을 포함할 수 있다.
또한, 예시 프로그램은 공간 결합 연산(12) 이후에, 병원 단위로 택시 승하차를 판단하는 연산(ReduceByGroupKey, 13)를 포함할 수 있다. 또한, 예시 프로그램은 병원 단위로 택시 승하차를 판단하는 연산(130) 이후에 택시 승하차가 가장 빈번한 상위 종합 병원 5개를 결정하는 연산(PickTopK, 14)을 포함할 수 있고, 상위 종합 병원 5개를 결정하는 연산(14)에 따른 결과 데이터를 생성하는 연산(StoreAsCSV, 15)을 포함할 수 있다.
이하에서는 도 1에 따른 예시 프로그램이 맵리듀스 기반의 분산 처리 환경에서 동작할 수 있도록 맵 단계와 리듀스 단계로 이루어지는 맵리듀스 작업을 생성하는 방법을 설명한다.
도 2는 도 1에 따른 예시 프로그램에 포함된 복수의 단위 연산에 대하여 속성을 부여하는 과정을 설명하기 위한 예시도이다.
본 발명의 일 실시예에 따른 맵리듀스 작업을 생성하는 방법은 단위 연산의 수행 성격에 따라 적어도 두 가지 속성을 부여할 수 있다. 이때, 본 발명에서는 그 두 가지 속성을 각각 터미널 속성(MapReduceTerminal)과 조인트 속성(MapReduceJoint)으로 지칭한다.
먼저, 터미널 속성(MapReduceTerminal)을 갖는 단위 연산은 연산 수행 결과로 0개의 결과 레코드를 생성(또는 연산에 따라 반환하는 값이 없는 경우)하는 연산을 의미할 수 있으며, 일반적으로는 연산 체인의 마지막 연산이 터미널 속성을 가질 수 있다.
또한, 조인트 속성(MapReduceJoint)을 갖는 단위 연산은 입력 레코드들을 특정 컬럼값(또는 기준값)에 따라 그룹핑하고, 각 그룹을 입력으로 0개 또는 1개 이상의 결과 레코드를 생성(또는 반환)하는 연산을 의미할 수 있다. 따라서, 조인트 속성을 갖는 단위 연산은 입력 레코드들을 그룹핑하는 그룹핑 연산 및 그룹핑 연산에 따라 생성된 각 그룹들을 입력으로 0개 또는 1개 이상의 결과 레코드를 생성(또는 반환)하는 그룹단위 연산을 포함할 수 있다.
도 2를 참조하면, 예시 프로그램에 포함된 대부분의 각 단위 연산들(10, 11, 12)은 터미널 속성이나 조인트 속성을 갖지 않는 것을 확인할 수 있다.
그러나, 병원 단위로 택시 승하차를 판단하는 연산(ReduceByGroupKey, 13)은 입력 레코드들을 종합 병원 단위로 그룹핑하는 그룹핑 연산(MapSideReduceByGroupKey, 13a)과 종합 병원 단위로 택시 승하차를 판단하는 그룹단위 연산(ReduceSideReduceByGroupKey, 13b)를 포함하므로, 조인트 속성을 가질 수 있다.
또한, 도 2에서 택시 승하차가 가장 빈번한 상위 종합 병원 5개를 결정하는 연산(PickTopK)도 그룹핑 연산(MapSidePickTopK, 14a)과 그룹단위 연산(ReduceSidePickTopK, 14b)를 포함하여 조인트 속성을 가질 수 있다.
또한, 도 2에서 결과 데이터를 생성하는 연산(StoreAsCSV, 15)은 반환값이 없어 터미널 속성을 가질 수 있다.
한편, 이처럼 속성이 결정된 단위 연산들로 이루어진 연산 체인을 이용하여 하나 이상의 맵리듀스 작업을 생성함으로써, 맵리듀스 환경에서의 분산 처리가 가능할 수 있다. 이때, 맵리듀스 작업이란 맵 단계와 리듀스 단계로 구성되는 분산 처리 작업으로서, 맵리듀스 환경에서의 맵 함수와 리듀스 함수에 대응될 수 있다.
따라서, 맵리듀스 작업을 생성하기 위해서는 맵 단계와 리듀스 단계를 구성해야 하고, 맵 단계를 구성하는 과정을 맵 구성 단계, 리듀스 단계를 구성하는 과정을 리듀스 구성 단계로 지칭한다. 이하에서는, 맵 구성 단계와 리듀스 구성 단계를 설명한다.
도 3은 본 발명의 일 실시예에 따른 맵 구성 단계를 설명하기 위한 흐름도이다.
도 3을 참조하면, 맵 구성 단계는 먼저 프로그램을 구성하는 연산 체인을 입력(S300)받고, 입력받은 연산 체인에서 첫번째로 수행되는 단위 연산을 추출(S302)할 수 있다. 여기서 추출은 연산 체인에서 추출된 단위 연산의 삭제를 포함하는 의미일 수 있다. 이때, 추출된 단위 연산이 터미널 속성을 갖는지 판단(S304)하고, 터미널 속성을 갖지 않는다면, 추출된 단위 연산이 조인트 속성을 갖는지 판단(S306)할 수 있다. 추출된 단위 연산이 터미널 속성도 갖지 않고, 조인트 속성도 갖지 않는다면, 추출된 단위 연산을 맵리듀스 작업으로 구성할 맵 단계에 추가(S308)하고, 다시 연산 체인의 가장 첫번째 단위 연산을 추출할 수 있다. 즉, 연산 체인에 포함된 단위 연산이 터미널 속성을 갖거나 조인트 속성을 속성을 가질 때까지 계속해서 연산 체인에서 단위 연산을 추출해 맵 단계에 추가할 수 있다.
한편, 추출된 단위 연산이 터미널 속성을 갖는 것으로 판단되면, 추출된 단위 연산을 맵 단계에 추가(S310)하고, 추출된 단위 연산이 마지막으로 수행되는 연산인지 판단(S312)할 수 있다. 마지막으로 수행되는 연산이 아니면, 맵 단계의 마지막 연산 과정으로 저장 연산(store 연산, 맵 단계의 최종 수행 결과를 저장하는 연산에 해당할 수 있다)을 추가(S314)하고, 연산 체인에 가장 먼저 수행되는 연산으로 로드 연산(Load 연산, 연산 체인에 남아있는 단위 연산 중에서 가장 먼저 수행되는 단위 연산의 데이터를 불러오기 하는 연산에 해당할 수 있다)을 추가(S316)할 수 있다. 다음으로, 맵 단계로만 이루어지는 맵리듀스 작업을 생성(S318)할 수 있다. 즉, 추출된 단위 연산이 터미널 속성을 가지면 별도의 리듀스 단계를 구성하지 않고, 맵 단계로만 이루어진 맵리듀스 작업을 생성할 수 있다.
한편, 추출된 단위 속성이 터미널 속성이 아니라 조인트 속성이면, 추출된 단위 연산에는 그룹핑 연산과 그룹단위 연산을 포함하고 있으므로, 이때 그룹핑 연산을 맵 단계에 추가(S320)할 수 있다. 그룹핑 연산을 맵 단계에 추가하고 나면, 맵 단계의 구성을 마치고 리듀스 구성 단계를 개시(S322)할 수 있다.
도 4는 본 발명의 일 실시예에 따른 리듀스 구성 단계를 설명하기 위한 흐름도이다.
도 4를 참조하면, 리듀스 구성 단계(S322)는 먼저 맵 구성 단계에서 추출한 단위 연산에 포함된 그룹단위 연산을 리듀스 단계에 추가(S400)할 수 있다. 다음으로, 다시 연산 체인에서 가장 먼저 수행되는 단위 연산을 추출(S402)할 수 있다. 추출된 단위 연산이 터미널 속성을 갖는지 판단(S404)하여, 추출된 단위 연산이 터미널 속성을 갖지 않으면, 추출된 단위 연산이 조인트 속성을 갖는지 판단(S406)할 수 있다. 추출된 단위 연산이 조인트 속성을 갖지 않으면, 추출된 단위 연산을 리듀스 단계에 추가(S408)하고, 다시 연산 체인에서 가장 먼저 수행되는 단위 연산을 추출할 수 있다. 즉, 연산 체인에서 추출된 단위 연산이 터미널 속성을 갖거나 조인트 속성을 가질 때까지 계속해서 연산 체인에서 단위 연산을 추출해 리듀스 단계에 추가할 수 있다.
한편, 추출된 단위 연산이 터미널 속성을 갖는 것으로 판단되면, 추출된 단위 연산을 리듀스 단계에 추가(S410)하고, 추출된 단위 연산이 연산 체인에서 가장 마지막에 수행되는 연산인지 판단(S412)할 수 있다. 이때, 추출된 단위 연산이 연산 체인의 가장 마지막에 수행되는 연산이 아니라면, 리듀스 단계에 저장 연산을 추가(S414)하고, 연산 체인의 가장 먼저 수행되는 연산으로 로드 연산을 추가(S416)한 후 앞서 도 3에서 얻어진 맵 단계와 상기 리듀스 단계를 결합해 맵리듀스 작업을 생성할 수 있다. 즉, 로드 연산을 연산 체인에 추가하고 리듀스 단계에는 저장 연산을 추가함으로써, 이후 추가적으로 맵리듀스 작업을 생성하는 과정을 준비하고, 다시 도 3에 따른 맵 구성 단계가 진행될 수 있다. 다만, 추출된 단위 연산이 연산 체인의 가장 마지막에 수행되는 연산이면, 앞에 도 3에서 얻어진 맵 단계와 상기 리듀스 단계를 결합하여 맵리듀스 작업을 생성(S418)하고 추가적인 맵리듀스 작업의 생성 없이 종료될 수 있다.
한편, 추출된 단위 연산이 조인트 속성을 갖는 것으로 판단되면, 추출된 단위 연산을 다시 연산 체인의 가장 앞에 추가(S420)하고, 리듀스 단계에 저장 연산을 추가하는 단계(S414)로 진행될 수 있다. 즉, 추출된 단위 연산이 조인트 속성을 가지면 다음에 생성될 맵리듀스 작업에서 처리할 수 있도록 다시 연산 체인에 넣을 수 있다. 이 경우 맵 리듀스 작업을 생성(S418)한 후 다시 도 3에 따른 맵 단계가 더 진행될 수 있다.
도 5는 도 3 및 도 4에 따른 맵 구성 단계와 리듀스 구성 단계를 도 2의 예시 프로그램에 적용한 결과를 나타낸 것이다.
구체적으로 도 2에 따른 예시 프로그램에 포함된 연산 체인에 대하여 도 3에 따른 맵 구성 단계를 적용하면, 먼저 로드 연산(Load, 10)과 필터링 연산(Filter, 11) 및 공간 결합 연산(Spatial Join, 12)을 연산 체인에서 순차적으로 추출하게 되고, 이때 추출된 단위 연산들은 조인트 속성이나 터미널 속성을 갖지 않기 때문에 맵 단계에 추가될 수 있다. 다음으로 추출되는 병원 단위로 택시 승하차를 판단하는 연산(ReduceByGroupKey, 13)은 그룹핑 연산(MapSideReduceByGroupKey, 13a)과 그룹단위 연산(ReduceSideReduceByGroupKey, 13b)을 포함하여 구성되므로, 이때 그룹핑 연산(13a)이 맵 단계에 추가된 것을 확인할 수 있다.
다음으로, 도 3에 따른 리듀스 구성 단계가 진행될 수 있는데, 그룹 단위 연산(ReduceSideReduceByGroupKey, 13b)을 먼저 리듀스 단계로 추가하게 되며, 다시 연산 체인에서 단위 연산을 추출할 수 있다. 이때 추출되는 단위 연산은 택시 승하차가 가장 빈번한 상위 종합 병원 5개를 결정하는 연산(PickTopK, 14)으로서 조인트 속성을 갖기 때문에, 추출된 단위 연산(PickTopK, 14)은 다시 연산 체인에 넣어 다음에 생성될 맵리듀스 작업으로 수행되도록 유보할 수 있다. 그리고, 다음에 생성될 맵리듀스 작업과의 연계를 위하여 리듀스 단계에 저장 연산(Store 연산)이 추가된 것을 확인할 수 있다.
또한, 이렇게 준비된 맵 단계와 리듀스 단계를 결합하여 첫번째 맵리듀스 작업이 생성되고 나면, 연산 체인에는 택시 승하차가 가장 빈번한 상위 종합 병원 5개를 결정하는 연산(PickTopK, 14)과 결과 데이터를 생성하는 연산(StoreAsCSV, 15)이 남아있는 것을 확인할 수 있다. 또한, 이때 이후 추가적인 맵리듀스 작업의 생성을 위해 가장 먼저 수행되는 단위 연산으로서 로드 연산(Load)이 연산 체인에 포함되어 있는 것을 확인할 수 있다.
도 6은 도 5에 따라 남아있는 연산 체인을 대상으로 도 3 및 도 4에 따른 맵 구성 단계와 리듀스 구성 단계를 적용한 결과를 나타낸 것이다.
도 5에서의 연산 체인에 대하여 다시 도 3에 따른 맵 구성 단계를 적용하면, 가장 먼저 수행되는 로드 연산이 연산 체인에서 추출될 수 있고, 추출된 로드 연산은 조인트 속성이나 터미널 속성을 갖지 않기 때문에 도 6의 맵 단계에 추가된 것을 확인할 수 있다.
다음으로 추출되는 단위 연산은 택시 승하차가 가장 빈번한 상위 종합 병원 5개를 결정하는 연산(PickTopK, 14)으로서 조인트 속성을 갖기 때문에 그룹핑 연산(MapSidePickTopK, 14a)과 그룹 단위 연산(ReduceSidePickTopK, 14b)을 포함할 수 있다. 따라서, 그룹핑 연산(MapSidePickTopK, 14a)을 추출하여 맵 단계에 추가한 후 도 4에 따른 리듀스 구성 단계로 진입할 수 있다.
도 4에 따른 리듀스 구성 단계에 진입하면, 그룹단위 연산(ReduceSidePickTopK, 14b)은 리듀스 단계에 추가되며, 연산 체인에서 그 다음 남아있는 단위 연산을 추출할 수 있다. 이때 추출되는 단위 연산은 결과 데이터를 생성하는 연산(StoreAsCSV, 15)으로서 터미널 속성을 가지므로 리듀스 단계에 추가될 수 있다. 이때, 결과 데이터를 생성하는 연산(StoreAsCSV, 15)은 연산 체인의 마지막 연산에 해당하기 때문에 리듀스 단계에 저장 연산을 추가하거나, 연산 체인의 가장 앞에 로드 연산을 추가하는 과정 없이 현재까지 구성된 맵 단계와 리듀스 단계를 결합하여 맵리듀스 작업을 생성한 후 모든 절차를 종료할 수 있다. 이때, 맵리듀스 작업을 생성한 후 연산 체인에는 모든 단위 연산이 추출된 후이므로 남아있는 연산이 없는 상태(Empty)인 것을 확인할 수 있다.
도 7은 본 발명의 일 실시예에 따른 맵듀스 작업을 생성하는 방법에 대한 흐름도이다.
도 7을 참조하면, 연산 체인으로 구성된 프로그램을 이용하여 맵 단계(Map phase)와 리듀스 단계(Reduce phase)로 구성되는 맵리듀스 작업을 생성하는 방법은, 일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계(S100), 연산 체인에 포함된 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계(S110), 부여된 속성을 기반으로 일련의 순서에 따라 연산 체인에서 단위 연산을 추출하여 맵 단계를 구성하는 단계(S120) 및 구성된 단계를 포함하여 맵리듀스 작업을 생성하는 단계(S130)를 포함할 수 있다.
여기서 속성을 부여하는 단계(S110)는, 연산 수행 결과로 반환하는 값이 없는 단위 연산에 대하여 터미널 속성을 부여할 수 있다.
여기서 속성을 부여하는 단계(S110)는, 입력 레코드들을 기준값에 따라 그룹핑하는 그룹핑 연산 및 각 그룹을 입력으로 0개 또는 1개 이상의 결과 레코드를 반환하는 그룹단위 연산을 포함하는 단위 연산에 대하여 조인트 속성을 부여할 수 있다.
여기서 맵 단계를 구성하는 단계(S120)는, 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 제1 단위 연산이 터미널 속성 또는 조인트 속성을 갖지 않으면, 제1 단위 연산을 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 맵 단계를 구성하는 단계(S120)는, 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 제1 단위 연산이 터미널 속성을 가지면, 제1 단위 연산을 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 제1 단위 연산이 터미널 속성을 가지면, 제1 단위 연산을 맵 단계에 추가하는 단계는, 제1 단위 연산이 연산 체인의 마지막 연산에 해당하면, 맵 단계에 저장(store) 연산을 추가하는 단계 및 연산 체인에 가장 먼저 수행되는 연산으로 로드(Load) 연산을 추가하는 단계를 포함할 수 있다.
여기서 맵 단계를 구성하는 단계(S120)는, 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 제1 단위 연산이 조인트 속성을 가지면, 제1 단위 연산에 포함된 그룹핑 연산을 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 그룹핑 연산을 맵 단계에 추가하는 단계 이후에, 리듀스 단계를 구성하는 단계를 더 포함할 수 있다.
여기서 리듀스 단계를 구성하는 단계는, 제1 단위 연산에 포함된 그룹단위 연산을 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 그룹단위 연산을 리듀스 단계에 추가하는 단계 이후에, 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 제2 단위 연산이 터미널 속성 또는 조인트 속성을 갖지 않으면, 제2 단위 연산을 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 그룹단위 연산을 리듀스 단계에 추가하는 단계 이후에, 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 제2 단위 연산이 조인트 속성을 가지면, 제2 단위 연산을 다시 연산 체인에 가장 먼저 수행되는 연산으로 추가하는 단계를 포함할 수 있다.
여기서 그룹단위 연산을 리듀스 단계에 추가하는 단계 이후에, 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 제2 단위 연산이 터미널 속성을 가지면, 제2 단위 연산을 리듀스 단계에 추가하는 단계를 포함할 수 있다.
한편, 본 발명의 일 실시예에 따른 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업에 포함될 맵 단계(Map phase)를 구성하는 방법은, 일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계, 연산 체인에 포함된 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계, 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 제1 단위 연산이 조인트 속성을 가지면, 제1 단위 연산에 포함된 그룹핑 연산을 맵 단계에 추가하는 단계를 포함할 수 있다.
도 8은 본 발명의 일 실시예에 따른 맵듀스 작업을 생성하는 장치에 대한 구성도이다.
도 8을 참조하면, 연산 체인으로 구성된 프로그램을 이용하여 맵 단계(Map phase)와 리듀스 단계(Reduce phase)로 구성되는 맵리듀스 작업을 생성하는 장치(100)는, 적어도 하나의 프로세서(processor, 110) 및 적어도 하나의 프로세서(110)가 적어도 하나의 단계를 수행하도록 지시하는 명령어들을 저장하는 메모리(memory, 120)를 포함할 수 있다.
여기서 맵리듀스 작업을 생성하는 장치(100)는 연산 체인, 구성될 맵 단계나 리듀스 단계를 저장하기 위한 저장소(storage, 140)를 더 포함할 수 있다.
여기서 맵리듀스 작업을 생성하는 장치는 생성된 맵리듀스 작업을 분산 처리 환경의 분산 서버 또는 분산 클라이언트로 전송하고, 임의의 단말로부터 프로그램을 전송받기 위한 통신 모듈(130)을 더 포함할 수 있다.
여기서 적어도 하나의 단계는, 일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계, 연산 체인에 포함된 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계, 부여된 속성을 기반으로 일련의 순서에 따라 연산 체인에서 단위 연산을 추출하여 맵 단계를 구성하는 단계 및 구성된 단계를 포함하여 맵리듀스 작업을 생성하는 단계를 포함할 수 있다.
여기서 속성을 부여하는 단계는, 연산 수행 결과로 반환하는 값이 없는 단위 연산에 대하여 터미널 속성을 부여할 수 있다.
여기서 속성을 부여하는 단계는, 입력 레코드들을 기준값에 따라 그룹핑하는 그룹핑 연산 및 각 그룹을 입력으로 0개 또는 1개 이상의 결과 레코드를 반환하는 그룹단위 연산을 포함하는 단위 연산에 대하여 조인트 속성을 부여할 수 있다.
여기서 맵 단계를 구성하는 단계는, 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 제1 단위 연산이 터미널 속성 또는 조인트 속성을 갖지 않으면, 제1 단위 연산을 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 맵 단계를 구성하는 단계는, 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 제1 단위 연산이 터미널 속성을 가지면, 제1 단위 연산을 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 제1 단위 연산이 터미널 속성을 가지면, 제1 단위 연산을 맵 단계에 추가하는 단계는, 제1 단위 연산이 연산 체인의 마지막 연산에 해당하면, 맵 단계에 저장(store) 연산을 추가하는 단계 및 연산 체인에 가장 먼저 수행되는 연산으로 로드(Load) 연산을 추가하는 단계를 포함할 수 있다.
여기서 맵 단계를 구성하는 단계는, 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계 및 제1 단위 연산이 조인트 속성을 가지면, 제1 단위 연산에 포함된 그룹핑 연산을 맵 단계에 추가하는 단계를 포함할 수 있다.
여기서 그룹핑 연산을 맵 단계에 추가하는 단계 이후에, 리듀스 단계를 구성하는 단계를 더 포함할 수 있다.
여기서 리듀스 단계를 구성하는 단계는, 제1 단위 연산에 포함된 그룹단위 연산을 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 그룹단위 연산을 리듀스 단계에 추가하는 단계 이후에, 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 제2 단위 연산이 터미널 속성 또는 조인트 속성을 갖지 않으면, 제2 단위 연산을 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 그룹단위 연산을 리듀스 단계에 추가하는 단계 이후에, 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 제2 단위 연산이 조인트 속성을 가지면, 제2 단위 연산을 다시 연산 체인에 가장 먼저 수행되는 연산으로 추가하는 단계를 포함할 수 있다.
여기서 그룹단위 연산을 리듀스 단계에 추가하는 단계 이후에, 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계 및 제2 단위 연산이 터미널 속성을 가지면, 제2 단위 연산을 리듀스 단계에 추가하는 단계를 포함할 수 있다.
여기서 맵리듀스 작업을 생성하는 장치(100)의 예를 들면, 통신 가능한 데스크탑 컴퓨터(desktop computer), 랩탑 컴퓨터(laptop computer), 노트북(notebook), 스마트폰(smart phone), 태블릿 PC(tablet PC), 모바일폰(mobile phone), 스마트 워치(smart watch), 스마트 글래스(smart glass), e-book 리더기, PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 디지털 카메라(digital camera), DMB(digital multimedia broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), PDA(Personal Digital Assistant) 등이 포함될 수 있다.
본 발명에 따른 방법들은 다양한 컴퓨터 수단을 통해 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 매체의 예에는 롬(ROM), 램(RAM), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함될 수 있다. 프로그램 명령의 예에는 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
또한, 상술한 방법 또는 장치는 그 구성이나 기능의 전부 또는 일부가 결합되어 구현되거나, 분리되어 구현될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 연산 체인으로 구성된 프로그램을 이용하여 맵 단계(Map phase)와 리듀스 단계(Reduce phase)로 구성되는 맵리듀스 작업을 생성하는 방법으로,
    일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계;
    상기 연산 체인에 포함된 상기 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계;
    부여된 속성을 기반으로 상기 일련의 순서에 따라 상기 연산 체인에서 단위 연산을 추출하여 맵 단계를 구성하는 단계; 및
    구성된 단계를 포함하여 맵리듀스 작업을 생성하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  2. 청구항 1에서,
    상기 속성을 부여하는 단계는,
    연산 수행 결과로 반환하는 값이 없는 단위 연산에 대하여 터미널 속성을 부여하는, 맵리듀스 작업을 생성하는 방법.
  3. 청구항 2에서,
    상기 속성을 부여하는 단계는,
    입력 레코드들을 기준값에 따라 그룹핑하는 그룹핑 연산 및 각 그룹을 입력으로 0개 또는 1개 이상의 결과 레코드를 반환하는 그룹단위 연산을 포함하는 단위 연산에 대하여 조인트 속성을 부여하는, 맵리듀스 작업을 생성하는 방법.
  4. 청구항 3에서,
    상기 맵 단계를 구성하는 단계는,
    상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계; 및
    상기 제1 단위 연산이 상기 터미널 속성 또는 상기 조인트 속성을 갖지 않으면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  5. 청구항 3에서,
    상기 맵 단계를 구성하는 단계는,
    상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계; 및
    상기 제1 단위 연산이 상기 터미널 속성을 가지면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  6. 청구항 5에서,
    상기 제1 단위 연산이 상기 터미널 속성을 가지면, 상기 제1 단위 연산을 상기 맵 단계에 추가하는 단계는,
    상기 제1 단위 연산이 상기 연산 체인의 마지막 연산에 해당하면, 상기 맵 단계에 저장(store) 연산을 추가하는 단계; 및
    상기 연산 체인에 가장 먼저 수행되는 연산으로 로드(Load) 연산을 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  7. 청구항 3에서,
    상기 맵 단계를 구성하는 단계는,
    상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계; 및
    상기 제1 단위 연산이 상기 조인트 속성을 가지면, 상기 제1 단위 연산에 포함된 그룹핑 연산을 상기 맵 단계에 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  8. 청구항 7에서,
    상기 그룹핑 연산을 상기 맵 단계에 추가하는 단계 이후에,
    상기 리듀스 단계를 구성하는 단계를 더 포함하는, 맵리듀스 작업을 생성하는 방법.
  9. 청구항 8에서,
    상기 리듀스 단계를 구성하는 단계는,
    상기 제1 단위 연산에 포함된 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  10. 청구항 9에서,
    상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에,
    상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계; 및
    상기 제2 단위 연산이 상기 터미널 속성 또는 상기 조인트 속성을 갖지 않으면, 상기 제2 단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  11. 청구항 9에서,
    상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에,
    상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계; 및
    상기 제2 단위 연산이 상기 조인트 속성을 가지면, 상기 제2 단위 연산을 다시 상기 연산 체인에 가장 먼저 수행되는 연산으로 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  12. 청구항 9에서,
    상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에,
    상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계; 및
    상기 제2 단위 연산이 상기 터미널 속성을 가지면, 상기 제2 단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 방법.
  13. 연산 체인으로 구성된 프로그램을 이용하여 맵 단계(Map phase)와 리듀스 단계(Reduce phase)로 구성되는 맵리듀스 작업을 생성하는 장치로,
    적어도 하나의 프로세서(processor); 및
    상기 적어도 하나의 프로세서가 적어도 하나의 단계를 수행하도록 지시하는 명령어들을 저장하는 메모리(memory)를 포함하고,
    상기 적어도 하나의 단계는,
    일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계;
    상기 연산 체인에 포함된 상기 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계;
    부여된 속성을 기반으로 상기 일련의 순서에 따라 상기 연산 체인에서 단위 연산을 추출하여 맵 단계를 구성하는 단계; 및
    구성된 단계를 포함하여 맵리듀스 작업을 생성하는 단계를 포함하는, 맵리듀스 작업을 생성하는 장치.
  14. 청구항 13에서,
    상기 속성을 부여하는 단계는,
    연산 수행 결과로 반환하는 값이 없는 단위 연산에 대하여 터미널 속성을 부여하는, 맵리듀스 작업을 생성하는 장치.
  15. 청구항 13에서,
    상기 속성을 부여하는 단계는,
    입력 레코드들을 기준값에 따라 그룹핑하는 그룹핑 연산 및 각 그룹을 입력으로 0개 또는 1개 이상의 결과 레코드를 반환하는 그룹단위 연산을 포함하는 단위 연산에 대하여 조인트 속성을 부여하는, 맵리듀스 작업을 생성하는 장치.
  16. 청구항 15에서,
    상기 맵 단계를 구성하는 단계는,
    상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계; 및
    상기 제1 단위 연산이 상기 조인트 속성을 가지면, 상기 제1 단위 연산에 포함된 그룹핑 연산을 상기 맵 단계에 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 장치.
  17. 청구항 16에서,
    상기 그룹핑 연산을 상기 맵 단계에 추가하는 단계 이후에,
    상기 리듀스 단계를 구성하는 단계를 더 포함하는, 맵리듀스 작업을 생성하는 장치.
  18. 청구항 17에서,
    상기 리듀스 단계를 구성하는 단계는,
    상기 제1 단위 연산에 포함된 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 장치.
  19. 청구항 18에서,
    상기 그룹단위 연산을 상기 리듀스 단계에 추가하는 단계 이후에,
    상기 연산 체인에서 첫번째로 호출되는 제2 단위 연산을 추출하는 단계; 및
    상기 제2 단위 연산이 상기 조인트 속성을 가지면, 상기 제2 단위 연산을 다시 상기 연산 체인에 가장 먼저 수행되는 연산으로 추가하는 단계를 포함하는, 맵리듀스 작업을 생성하는 장치.
  20. 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업에 포함될 맵 단계(Map phase)를 구성하는 방법으로,
    일련의 순서에 따라 호출되는 복수의 단위 연산을 포함하는 연산 체인을 획득하는 단계;
    상기 연산 체인에 포함된 상기 복수의 단위 연산 중 적어도 일부에 대하여 속성을 부여하는 단계;
    상기 연산 체인에서 첫번째로 호출되는 제1 단위 연산을 추출하는 단계; 및
    상기 제1 단위 연산이 조인트 속성을 가지면, 상기 제1 단위 연산에 포함된 그룹핑 연산을 상기 맵 단계에 추가하는 단계를 포함하는, 맵 단계를 구성하는 방법.
KR1020180028837A 2018-03-12 2018-03-12 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치 KR20190107507A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180028837A KR20190107507A (ko) 2018-03-12 2018-03-12 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180028837A KR20190107507A (ko) 2018-03-12 2018-03-12 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20190107507A true KR20190107507A (ko) 2019-09-20

Family

ID=68067644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180028837A KR20190107507A (ko) 2018-03-12 2018-03-12 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20190107507A (ko)

Similar Documents

Publication Publication Date Title
US11037345B2 (en) Systems and methods for processing computational workflows
US20210182263A1 (en) Systems and methods for performing data processing operations using variable level parallelism
CN111427971B (zh) 用于计算机系统的业务建模方法、装置、系统和介质
JP6903755B2 (ja) データ統合ジョブ変換
US8711160B1 (en) System and method for efficient resource management of a signal flow programmed digital signal processor code
US20210158131A1 (en) Hierarchical partitioning of operators
US20210295158A1 (en) End-to-end optimization
CN106557307B (zh) 业务数据的处理方法及处理系统
Han et al. Parallel data intensive applications using MapReduce: a data mining case study in biomedical sciences
JPWO2019123703A1 (ja) データ分析支援装置、データ分析支援方法およびデータ分析支援プログラム
CN110837531A (zh) 数据源读写的分离方法、装置及计算机可读存储介质
JP2023553220A (ja) マルチインスタンスプロセスのためのプロセスマイニング
CN112306452A (zh) 归并排序算法处理业务数据的方法、装置及系统
CN111209283A (zh) 一种数据处理方法及装置
US9201937B2 (en) Rapid provisioning of information for business analytics
KR20190107507A (ko) 연산 체인으로 구성된 프로그램을 이용하여 맵리듀스 작업을 생성하는 방법 및 장치
US11372677B1 (en) Efficient scheduling of load instructions
US9298517B2 (en) Exclusive control request allocation method and system
US10693494B2 (en) Reducing a size of multiple data sets
US11775299B1 (en) Vector clocks for highly concurrent execution engines
CN113641964B (zh) 重打包应用检测方法、电子设备及存储介质
US11487467B1 (en) Layered memory mapped file technology
CN110891120B (zh) 界面内容展示方法、装置及存储介质
CN118069044A (zh) 芯片数据存储方法、装置、设备、介质和产品
CN115809304A (zh) 字段级血缘解析方法、装置、计算机设备、存储介质