KR20150017052A - 워크플로우의 실행 방법 및 시스템 - Google Patents

워크플로우의 실행 방법 및 시스템 Download PDF

Info

Publication number
KR20150017052A
KR20150017052A KR1020130092738A KR20130092738A KR20150017052A KR 20150017052 A KR20150017052 A KR 20150017052A KR 1020130092738 A KR1020130092738 A KR 1020130092738A KR 20130092738 A KR20130092738 A KR 20130092738A KR 20150017052 A KR20150017052 A KR 20150017052A
Authority
KR
South Korea
Prior art keywords
workflow
xsd
experimental
work
scenario
Prior art date
Application number
KR1020130092738A
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 KR1020130092738A priority Critical patent/KR20150017052A/ko
Priority to US14/098,725 priority patent/US20150039382A1/en
Publication of KR20150017052A publication Critical patent/KR20150017052A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Development Economics (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • General Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Operations Research (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

비IT 연구자가 생성한 워크플로우를 클러스터 환경의 컴퓨팅 자원에서 적합하게 실행할 수 있는 클러스터 기반 워크플로우 시스템이 제공된다. 사용자는 대규모 컴퓨팅 클러스터를 이용하여 대규모 바이오 데이터 분석 워크플로우, 일기 예보 데이터 분석 워크플로우, 고객 관계 관리(customer relationship management, CRM) 데이터 분석 워크플로우 등의 제3자 응용을 이용한 워크 플로우를 빠르게 분석할 수 있다. 또한, 클러스터 환경에 최적화 되지 않은 제3자의 응용이 클러스터 환경에서도 적절하게 수행될 수 있도록 사전 분석에 의하여 자동으로 병렬 실행할 수 있다.

Description

워크플로우의 실행 방법 및 시스템 {Method and system for performing workflow}
본 발명은 클러스터를 기반으로 하여 워크플로우를 실행하는 방법 및 시스템에 관한 것이다.
최근, 웹 로그(web log), 웹 클릭(web click) 데이터 및 소셜 네트워크 서비스(social network service, SNS) 데이터와 같은 IT 데이터와, 기상, 바이오 등의 과학 데이터의 분석 규모가 증가하고 분석 기술이 발달함으로써, 대용량 데이터를 고속으로 분석하고 처리할 수 있는 기술이 요구되고 있다.
이러한 요구는, 일반 컴퓨터 환경에서 풍부한 저장공간이 확보되고 다양한 컴퓨팅 자원을 활용할 수 있는 고성능 클러스터 컴퓨터 환경으로 데이터의 분석 환경을 이동하게 만들었다. 고성능 클러스터 컴퓨터 환경은 범용 GPU (General-Purpose computing on Graphics Processing Units, GPGPU) 또는 마이크 아키텍처(Many Integrated Core Architecture, MIC Architecture)와 같은 고속 연산 장치를 포함할 수 있다.
초기에는 여러 가지 제3자 응용(application)을 순차적으로 엮어서 파이프라인을 구성한 후 데이터를 분석하는 방법을 사용하였다. 이렇게 파이프라인을 구성하는 방법은 배치 스크립트(batch script)를 이용하여 개발될 수 있다.
이후, 배치 스크립트의 확장성을 보강하고, 유지 관리를 쉽게 하며, 편의성을 제공하기 위하여 워크 플로우 관리 시스템(workflow management system, WMS)이 등장하였다. 과학자 또는 서비스 프로바이더(service provider)는 WMS를 이용하여 쉽고 다양하게 워크플로우(파이프라인)을 구성함으로써 데이터를 분석할 수 있게 되었다.
최근 WMS는 그리드 환경을 기반으로 서비스를 엮어서 파이프라인을 정의하고 실행(execute)할 수 있는 그리드 기반 워크플로우 관리 시스템(Grid-based workflow management system)으로 발전하였다. 사용자는 그리드 기반 워크플로우 관리 시스템을 이용하여 넓은 분야의 서비스를 연동시킬 수 있게 되고, 더욱 많은 자원을 활용하여 데이터를 분석할 수 있게 되었다. 그러나, 그리드 기반 워크플로우 관리 시스템은 타 시스템에서 실행되는 서비스를 대상으로 데이터 및 실행 흐름을 정의할 수 있도록 설계되었다.
최근 데이터의 규모가 증가하면서 처리 대상 데이터가 매우 커지거나, 데이터 처리에 많은 계산 자원이 요구되는 경우가 증가하면서, 네트워크를 통해 이동해야 할 데이터의 양이 방대하게 되었다. 이로 인해, 클러스터 내부에서 데이터를 분석하고자 하는 요구가 증가하고 있다.
하지만, 기존 WMS는 클러스터 시스템의 외부 서비스 연동에 적합한 워크플로우를 정의하고 실행하는 방법을 제공할 뿐이고, 클러스터 시스템 내부에서 여러 응용을 이용하여 워크플로우를 정의하고 실행하는 방법은 제공하지 않는다. 또한, 기존 WMS에서는 분산 병렬적으로 데이터를 분석하는 방법이 제한되어 있다. 즉, 응용이 분산 병렬 실행 정의를 지원하더라도 사용자가 응용의 병렬화 정도를 모두 결정하게 되어 있기 때문에, 워크플로우가 비IT 연구자에 의해 클러스터 환경의 컴퓨팅 자원에 적합하게 실행되기 어렵다.
따라서, 본 발명의 실시 예에서는, 비IT 연구자가 생성한 워크플로우를 클러스터 환경의 컴퓨팅 자원에서 적합하게 실행할 수 있는 클러스터 기반 워크플로우 시스템을 제공한다.
본 발명의 한 특징에 따르면, 클러스터의 자원을 이용하여 워크플로우를 실행하는 방법이 제공된다. 상기 워크플로우의 실행 방법은, 워크플로우를 분석하여 워크플로우로부터 실험 워크플로우 및 실험 시나리오를 생성하는 단계, 실험 시나리오에 따라 실험 워크플로우를 실행하는 단계, 실험 워크플로우의 실행 로그를 분석하여 워크플로우에 대한 최적 병렬 실행 정보를 추출하는 단계, 그리고 최적 병렬 실행 정보에 따라 워크플로우를 실행하는 단계를 포함한다.
상기 워크플로우의 실행 방법에서 실험 워크플로우 및 실험 시나리오를 생성하는 단계는, 워크플로우를 파싱하여 워크플로우에 포함된 복수의 워크를 분리하는 단계, 분리된 복수의 워크가 서로 병렬 실행 가능한지 판단하는 단계, 판단 결과에 따라, 병렬 실행 가능한 워크에 대해서 실험 워크플로우를 생성하는 단계, 그리고 워크의 병렬 실행 가능 조건을 바탕으로 실험 시나리오를 생성하는 단계를 포함할 수 있다.
상기 워크플로우의 실행 방법에서 실험 워크플로우 및 실험 시나리오를 생성하는 단계는, 복수의 워크 중 하나의 워크마다 실험 워크플로우를 생성하는 단계를 포함할 수 있다.
상기 워크플로우의 실행 방법에서, 병렬 실행 가능 조건은 클러스터의 자원 중 동시에 실행할 수 있는 프로세스(process)의 개수 또는 쓰레드(thread)의 개수이고, 실험 시나리오를 생성하는 단계는, 프로세스의 개수 및 쓰레드의 개수가 각각 다른 복수의 실험 시나리오를 생성하는 단계를 포함할 수 있다.
상기 워크플로우의 실행 방법에서 실험 시나리오는, 엑스엠엘(extensible markup language, XML) 형식을 따를 수 있다.
상기 워크플로우의 실행 방법에서 워크플로우를 실행하는 단계는, 최적 병렬 실행 정보를 이용하여 워크플로우를 작업 및 자원 관리 시스템(job and resource management system, JRMS)의 작업 형태로 변환하는 단계, 그리고 JRMS를 이용하여 변환된 워크플로우를 실행하는 단계를 포함할 수 있다.
본 발명의 다른 특징에 따르면, 클러스터의 자원을 이용하여 워크플로우를 실행하는 워크플로우 시스템이 제공된다. 상기 워크플로우 시스템은, 워크플로우를 분석하여 워크플로우로부터 실험 워크플로우와 실험 시나리오를 생성하고, 실험 시나리오를 바탕으로 실행된 실험 워크플로우의 실행 로그를 분석하여 워크플로우에 대한 최적 병렬 실행 정보를 추출하는 워크플로우 분석 장치, 그리고 실험 시나리오에 따라 실험 워크플로우를 실행하고, 최적 병렬 실행 정보에 따라 워크플로우를 실행하는 워크플로우 실행 장치를 포함한다.
상기 워크플로우 시스템에서 워크플로우 분석 장치는, 워크플로우를 파싱하여 워크플로우에 포함된 복수의 워크를 분리하고, 분리된 복수의 워크가 서로 병렬 실행 가능한지 판단한 후, 병렬 실행 가능한 워크에 대해서 실험 워크를 생성할 수 있다.
상기 워크플로우 시스템에서 워크플로우 분석 장치는, 워크의 병렬 실행 가능 조건을 바탕으로 실험 시나리오를 생성할 수 있다.
상기 워크플로우 시스템에서 워크플로우 분석 장치는, 복수의 워크 중 병렬 실행 가능한 워크에 대해서 실험 워크플로우를 생성할 수 있다.
상기 워크플로우 시스템에서, 병렬 실행 가능 조건은 클러스터의 자원 중 동시에 실행할 수 있는 프로세스(process)의 개수 또는 쓰레드(thread)의 개수이고, 워크플로우 분석 장치는, 프로세스의 개수 또는 쓰레드의 개수가 각각 다른 복수의 실험 시나리오를 생성할 수 있다.
상기 워크플로우 시스템에서 실험 시나리오는, 엑스엠엘(extensible markup language, XML) 형식을 따를 수 있다.
상기 워크플로우 시스템에서 워크플로우 실행 장치는, 최적 병렬 실행 정보를 이용하여 워크플로우를 작업 및 자원 관리 시스템(job and resource management system, JRMS)의 작업 형태로 변환하고, JRMS를 이용하여 변환된 워크플로우를 실행할 수 있다.
이와 같이 본 발명의 한 실시 예에 따르면, 사용자는 대규모 컴퓨팅 클러스터를 이용하여 대규모 바이오 데이터 분석 워크플로우, 일기 예보 데이터 분석 워크플로우, 고객 관계 관리 데이터 분석 워크플로우 등의 제3자 응용으로 구성된 워크플로우를 빠르게 처리할 수 있다. 또한, 클러스터 환경에 최적화 되지 않은 제3자의 응용이 클러스터 환경에서도 적절하게 수행될 수 있도록 사전 분석에 의하여 자동으로 분산 병렬 처리(distributed and parallel processing) 할 수 있다.
도 1은 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 관리 시스템을 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 그래픽 사용자 인터페이스 기반 워크플로우의 개념도이다.
도 3a 내지 도 3c는 본 발명의 실시 예에 따른 워크플로우 모델링을 나타낸 개념도이다.
도 4는 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 시스템을 나타내는 블록도이다.
도 5는 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 시스템의 워크플로우 분석 장치의 동작을 나타낸 흐름도이다.
도 6은 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 시스템의 워크플로우 실행 장치의 동작을 나타낸 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 관리 시스템을 나타낸 도면이다.
도 1을 참조하면, 본 발명의 실시 예에 따른 워크플로우 관리 시스템은, 클러스터 기반 워크플로우 시스템, 작업 및 자원 관리 시스템(Job and Resource Management System, JRMS), 컴퓨팅 노드, 그리고 파일 시스템을 포함한다.
그리고, 클러스터 기반 워크플로우 시스템은 워크플로우 정의 도구, 워크플로우 분석 장치, 그리고 워크플로우 실행 장치를 포함한다.
워크플로우 정의 도구는 데이터 및 제3자 응용 프로그램을 엮어서 데이터를 분석하기 위한 워크플로우 구조를 정의하고, 워크플로우 정의 도구를 통해 정의한 워크플로우를 실행할 때 워크플로우의 실행 정보를 설정할 수 있다. 이때 워크플로우의 실행 정보의 예로 입력 데이터 파일의 위치 또는 병렬 실행 정보가 될 수 있다.
본 발명의 실시 예에 따른 클러스터 기반 워크플로우 모델(cluster-based workflow model)은 워크플로우 정의 모델과 워크플로우 실행 설정 모델을 함께 제공한다.
워크플로우 정의 모델은 워크플로우의 실행에 있어서, 각 단계별 워크(또는 태스크)의 규격 및 워크의 입출력 데이터에 대한 규격을 정의할 수 있다. 또한, 워크플로우 정의 모델은 각 단계별 워크 사이의 연결 관계를 표시하는 워크플로우 구조(workflow structure) 등 워크플로우의 실행 규격 및 절차를 정의할 수 있다.
워크플로우 실행 설정 모델은 정의된 워크플로우를 기반으로, 워크플로우를 실행할 때마다 변할 수 있는 입력 데이터의 위치 또는 병렬 실행 정보와 같은 실행 정보를 설정할 수 있는 모델이다.
워크플로우 분석 장치는 시나리오를 생성하여 워크플로우를 사전에 분석함으로써, 병렬 실행을 위한 최적 병렬 실행 정보를 추출한다. 즉, 사용자는 특정 워크플로우를 여러 번 실행할 계획이 있는 경우 워크플로우 분석 장치를 통해 특정 워크플로우를 분석할 수 있고, 워크플로우 분석 장치는 워크 플로우를 분석하여 최적의 병렬 실행 정보를 추출한 후, 추출된 최적 병렬 실행 정보를 메타 정보에 저장한다. 워크플로우 실행 장치는 워크플로우 분석 장치가 제공하는 최적 병렬 실행 정보를 이용하여 사용자의 워크플로우가 최적으로 병렬 실행될 수 있도록 워크플로우를 JRMS의 작업 집합으로 변환한다. 또한, 변환한 작업 집합의 처리를 JRMS에게 요청함으로써 워크플로우를 처리한다.
JRMS는 대규모 컴퓨팅 클러스터 환경에서 자원을 활용하여 많은 작업을 효율적으로 실행할 수 있도록 사용되는 시스템이다. JRMS 시스템은 다수의 작업을 클러스터로 제출(submit)할 수 있고, 클러스터의 자원을 이용하여 작업을 실행(execute)할 수 있다. 본 발명의 한 실시 예에 따른 클러스터 기반 워크플로우 시스템은 JRMS 뿐만 아니라, 소켓이나 SSH(secure shell)와 같이 간단한 원격 통신 방법을 추가할 수 있으며, 이 경우 워크플로우 실행 장치의 변환 모듈을 확장할 수 있다. 아래에서는 JRMS 시스템과 연결된 클러스터 기반 워크플로우 시스템을 설명한다.
또한, 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 시스템은 파일 시스템으로 클러스터 파일 시스템(cluster file system, cluster FS) 또는 전역 파일 시스템(global file system, global FS)을 사용할 수 있고, 아래에서는 전역 파일 시스템을 사용하는 클러스터 기반 워크플로우 시스템을 설명한다.
도 1을 참조하면, 사용자가 워크플로우 정의 도구를 사용하여 사용자 워크플로우를 정의하고, 반복적으로 실행될 사용자 워크플로우를 워크플로우 분석 장치로 전달한다. 이후, 워크플로우 분석 장치는 사용자 워크플로우의 최적 병렬 실행 정보를 추출한다. 이때 최적 병렬 실행 정보는 워크플로우 실행 장치에서 사용자 워크플로우를 실행할 때 이용될 수 있다.
워크플로우 분석 장치는 사용자의 워크플로우를 분석한 후, 최적 병렬 실행 정보를 워크플로우 실행 장치로 전달하고, 워크플로우 실행 장치는 컴퓨팅 노드의 자원과 파일 시스템을 이용하여 워크플로우를 실행한다. 이때, 워크플로우 실행 장치는 JRMS를 이용하여 컴퓨팅 노드의 자원을 이용할 수 있다.
도 2는 본 발명의 실시 예에 따른 그래픽 사용자 인터페이스 기반 워크플로우의 개념도이다.
도 2를 참조하면, 워크플로우의 개념적 모델은 워크플로우 컴포넌트(component)(210), 워크 컴포넌트(220), 커맨드(command, CMD) 컴포넌트(230), 데이터(data) 컴포넌트(240), 전달(delivery) 컴포넌트, 링크(link) 컴포넌트를 포함한다. 본 발명의 한 실시 예에서는, 워크플로우 컴포넌트(210), 워크 컴포넌트(220), CMD 컴포넌트(230), 데이터 컴포넌트(240), 전달 컴포넌트, 그리고 링크 컴포넌트를 주(main) 컴포넌트라고 한다.
워크플로우 컴포넌트(210)는, 워크플로우의 전체 범위를 표시하며, 표시 기호의 좌측 상단에 워크플로우의 이름이 표시될 수 있다. 하나의 워크플로우에는 복수의 워크가 추가될 수 있고, 워크 사이는 데이터 컴포넌트(240)를 사용하여 연결된다.
워크 컴포넌트(220)는, 워크플로우에 포함된 워크의 범위를 표시하며, 복수의 CMD가 추가될 수 있다. 표시 기호의 바깥쪽 하단에 이름이 표시될 수 있다.
워크 컴포넌트(220)는, 멀티 프로세스(multi-process) 컴포넌트(221)와, 워크 패치(work fetch) 컴포넌트(222)를 부(sub) 컴포넌트로 포함한다.
멀티 프로세스 컴포넌트(221)는, 워크가 동시에 수행될 수 있는지 여부를 표시한다. 워크 컴포넌트(220)의 상단에 표시될 수 있다. 한편, 각 워크는 입력 데이터를 패치하여 처리될 수 있고, 이때 워크 패치 컴포넌트(222)는 패치할 데이터의 개념적인 범위를 표시한다. 즉, 워크 패치 컴포넌트(222)로 표시된 영역에 포함된 컴포넌트는 동일한 패치 데이터를 처리하게 된다. 1회 패치할 때마다 가져올 입력 데이터의 개수는 패치 옵션(fetch option) 컴포넌트(254)에서 표시될 수 있다.
CMD 컴포넌트(230)는 제3자의 응용을 표시한다. 표시 기호의 중앙에 명령어의 대표 이름이 표시될 수 있다.
CMD 컴포넌트(230)는 프로세서 유형(processor type) 컴포넌트(231), CMD 인자(arguments) 컴포넌트(232), 그리고 멀티스레드 컴포넌트(233)를 부 컴포넌트로 포함한다.
프로세서 유형 컴포넌트(231)는, 명령어가 사용하는 프로세서의 유형을 표시한다. CPU만 사용하는 명령어는 중앙에 'C'를 표시하고, GPGPU를 함께 사용하면 중앙에 'G'를 표시하고, MIC를 함께 사용하면 중앙에 'M'을 표시할 수 있다. GPGPU와 MIC를 함께 사용하면 중앙에 GM를 표시한다.
CMD 인자 컴포넌트(232)는, CMD에 필요한 인자를 표시한다. CMD 컴포넌트(230)의 상하단에 표시 CMD 인자 컴포넌트(232)가 표시될 수 있고, CMD 인자 컴포넌트(232)의 중앙에는 인자의 이름(a1, a2 등)이 표시될 수 있다. 만약 순서가 필요한 인자가 표시된다면, CMD 컴포넌트(230)의 상단 좌측에서 우측 또는 하단 좌측에서 우측의 순서로 표시될 수 있다.
멀티스레드 컴포넌트(233)는, 명령어가 멀티스레드를 지원하는지 여부를 표시한다. 명령어가 멀티스레드를 지원한다면, 멀티스레드 컴포넌트(233)가 CMD 컴포넌트(230)의 상단에 표시된다.
데이터 컴포넌트(240)는, 워크의 입력과 출력에 사용되는 데이터를 표시한다. 데이터 컴포넌트(240)의 중앙에는 데이터 이름이 표시될 수 있고, 데이터 컴포넌트(240)의 바깥쪽 하단에는 데이터 유형이 표시될 수 있다. [표 1]은 데이터 유형으로 표시할 수 있는 데이터를 나타낸다.
지원하는 데이터 타입 설명
string 1개의 문자열
string List 문자열 목록
FilePath 1개의 파일 경로
FilePath List 파일 경로 목록
데이터 컴포넌트(240)는 자동 네이밍(auto naming) 컴포넌트(241)를 부 컴포넌트로 포함할 수 있다. 자동 네이밍 컴포넌트(241)는, 워크플로우 컴포넌트(210)가 2개 이상의 워크를 포함할 때, 데이터 컴포넌트(240)의 상단에 표시된다. 자동 네이밍 컴포넌트(241)는, 이전 단계 워크의 출력 파일의 이름을 사용자가 직접 설정하지 않은 경우, 시스템이 자동으로 임시 파일을 설정하여 다음 단계 워크에 전달할 때 표시될 수 있다.
전달 컴포넌트는, 입력되는 데이터 또는 출력되는 데이터의 목적지를 표시한다. 전달 컴포넌트는 내부 전달 컴포넌트(251), 외부 전달 컴포넌트(252), 전송 옵션 컴포넌트(253), 그리고 패치 옵션 컴포넌트(254)를 부 컴포넌트로 포함한다.
내부 전달 컴포넌트(251)는, 워크로 입력되는 데이터를 CMD 인자 컴포넌트(232)에 전달하고, 컴포넌트의 중앙에 이름이 표시될 수 있다. 하나의 내부 전달 컴포넌트(251)는 복수 개의 CMD 인자 컴포넌트(232)에 매핑될 수 있다.
외부 전달 컴포넌트(252)는, CMD 컴포넌트(230)에서 명령이 실행된 결과를 출력 데이터에 전달하고, 컴포넌트의 중앙에 이름이 표시될 수 있다. 하나의 외부 전달 컴포넌트(252)는 출력 데이터 컴포넌트 또는 다른 명령어의 CMD 인자 컴포넌트에 매핑될 수 있다.
전송 옵션 컴포넌트(253)는, 외부 전달 컴포넌트(252)가 명령어의 결과를 전달하는 방법을 표시할 수 있다. 예를 들어, 명령어에 출력 표시가 필요 없는 경우에는 빈칸으로 표시하고, 하나의 워크 내에서 다음 명령어로 연결할 경우에는 '|'로 표시하며, 파일로 출력하는 경우에는 '>'로 표시할 수 있다.
패치 옵션 컴포넌트(254)는 내부 전달 컴포넌트(251)가 입력 데이터를 1회 패치할 때 가져오는 입력 데이터의 개수를 표시할 수 있다. 예를 들어, 한 번의 패치로 모든 데이터를 가져오는 경우에는 패치 옵션 컴포넌트(254)의 중앙에 'A'가 표시되고, 1개의 데이터를 가져올 경우에는 '1'이 표시되며, 2개의 데이터를 가져올 경우에는 '2'가 표시될 수 있다.
링크 컴포넌트는 데이터 컴포넌트 및 전달 컴포넌트 또는 전달 컴포넌트 및 CMD 인자 컴포넌트의 연결을 표시할 수 있다. 링크 컴포넌트는 데이터 링크 컴포넌트(261)와, 인자 링크 컴포넌트(262)를 부 컴포넌트로 포함한다.
데이터 링크 컴포넌트(261)는, 데이터 컴포넌트(240)와 내부 전달 컴포넌트(251), 그리고 외부 전달 컴포넌트(252)와 데이터 컴포넌트(240)의 연결을 표시한다.
인자 링크 컴포넌트(262)는, 내부 전달 컴포넌트(251)와 CMD 인자 컴포넌트(232)의 연결을 표시한다.
본 발명의 실시 예에 따르면, 사용자는 클러스터 기반 워크플로우의 개념적 모델을 다음과 같이 사용할 수 있다. 먼저, 사용자는 응용 프로그램의 대표 이름을 설정하고, 실제 실행될 명령어의 문자열을 설정한다. 이와 같은 사항은 개념적 모델에는 표시되지 않는다.
이후, 명령을 실행하는 프로세서의 유형(CPU, GPGPU, MIC 등)을 설정하고, 입력 데이터와 출력 데이터의 유형을 설정한다. 입력 데이터 컴포넌트를 CMD 인자 컴포넌트로 연결하고, CMD 컴포넌트의 명령 실행 결과를 출력 데이터 컴포넌트와 연결하며, 전달 옵션('|', '>' 등)을 설정한다.
이후, 워크를 1회 실행할 때 마다 처리할 데이터의 개수(A, 1, 2 등)를 설정하고, 명령어의 멀티스레드 제공 여부와 워크의 멀티프로세스 적용 가능 여부도 설정한다.
도 3a 내지 도 3c는 본 발명의 실시 예에 따른 워크플로우 모델링을 나타낸 개념도이다.
도 3a 내지 도 3c를 참조하면, 본 발명의 실시 예에 따른 워크플로우 모델링은 리눅스의 'grep' 명령어 및 'wc' 명령어를 이용하여 데이터를 처리하고, 아래와 같은 시나리오를 실행한다.
[시나리오]
"웹 방문 로그를 분석하여 user1의 방문 횟수를 구하라."
상기 시나리오에 대한 데이터 분석 작업의 세부 시나리오는 아래와 같다.
[세부 시나리오]
1. 모든 로그 파일에서 grep 명령어로 user1이 포함되어 있는 줄을 로그 파일별로 추출하고, 결과를 파일로 저장함.
2. 저장된 파일에 포함된 줄의 개수를 wc 명령어로 구함.
먼저, grep 명령어를 이용하여 세부 시나리오 1을 정의하고(도 3a), wc 명령어를 이용하여 세부 시나리오 2를 정의한 다음(도 3b), 세부 시나리오 1 및 세부 시나리오 2를 통합하여 grep-wc 워크플로우를 정의한다(도 3c). 도 3a는 grep 명령어에 대한 워크의 개념적 모델이다.
리눅스의 grep 명령어는 아래와 같이 사용할 수 있다.
Figure pat00001
또한, grep 명령어로 워크플로우를 모델링하기 위해서는 [표 2]에 기재된 GREP-워크의 실행 정보가 필요하다.
CMD Name GREP
processor type CPU
command grep
isMultiThreading false
arguments a1: PATTERN
a2: [FILE…]
이후, [표 2]의 정보를 이용하여 도 3a의 GREP-워크의 개념적 모델을 실행시키려면, 입출력 데이터 정보와 최적 병렬 실행 정보가 필요하다. 이때, 최적 병렬 실행 정보는 클러스터 기반 워크플로우 시스템의 워크플로우 분석 장치에서 추출한 실행 정보로서, 워크플로우 분석 장치에서 한 번 최적 병렬 실행 정보를 추출하면 이후 워크플로우의 실행에서는 추출된 최적 병렬 실행 정보를 사용하면 되므로, 자동 설정으로 워크플로우가 실행된다면 최적 실행 정보를 별도로 설정하지 않아도 된다.
[표 3]은 GREP-워크를 실행하기 위한 실행 설정 정보(입출력 데이터 정보와 최적 병렬 실행 정보)를 나타낸다.
Figure pat00002
도 3b는 wc 명령어에 대한 워크의 개념적 모델이다.
리눅스의 wc 명령어는 아래와 같이 사용할 수 있다.
Figure pat00003
또한, wc 명령어로 워크플로우를 모델링하기 위해서는 [표 4]에 기재된 WC-워크의 실행 정보가 필요하다.
CMD Name WC
processor type CPU
Command wc
isMultiThreading false
arguments a1: [FILE]...
이후, [표 4]의 정보를 이용하여 도 3b의 WC-워크의 개념적 모델을 실행시키려면, 입출력 데이터 정보가 필요하다. [표 5]는 WC-워크를 실행하기 위한 실행 설정 정보(입출력 데이터 정보)를 나타낸다.
Figure pat00004
이후, 도 3a의 GREP-워크와, 도 3b의 WC-워크를 통합하면, 도 3c와 같은 GREP-WC-워크플로우가 정의될 수 있다.
[표 6]은 본 발명의 한 실시 예에 따른 클러스터 기반 워크플로우 시스템에서 처리하기 위한 모델링 언어로서의 엑스엠엘(extensible markup language, XML) 스키마(schema) 규격을 나타낸다.
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.maha.org"
targetNamespace="http://www.maha.org" elementFormDefault="qualified">
<xsd:element name="WorkFlow">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Work" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="InputDelivery" maxOccurs="unbounded" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="InputDataLink">
<xsd:complexType>
<xsd:attribute name="inputDataName" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ArgumentLink" maxOccurs="unbounded" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="commandName" type="xsd:string" use="required"/>
<xsd:attribute name="argumentName" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="fetchOption" type="InputFetchType"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="CMD" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Argument" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="processorType" type="ProcessorType" use="required"/>
<xsd:attribute name="command" type="xsd:string" use="required"/>
<xsd:attribute name="isMultiThreading" type="xsd:boolean" use="required"/>
<xsd:attribute name="multiThreadOption" type="xsd:string"/>
<xsd:attribute name="help" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="OutputDelivery" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="OutputDataLink" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="outputDataName" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ArgumentLink" maxOccurs="unbounded" minOccurs="0">
<xsd:complexType>
<xsd:attribute name="commandName" type="xsd:string" use="required"/>
<xsd:attribute name="argumentName" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="transferOption" use="required" type="OutputTransferType"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="isMultiProcessing" type="xsd:boolean" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Data" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="String"/>
<xsd:enumeration value="StringList"/>
<xsd:enumeration value="FilePath"/>
<xsd:enumeration value="FilePathList"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="isAutoNaming" type="xsd:boolean" default="false"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="all">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="all"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="InputFetchType">
<xsd:union memberTypes="all xsd:nonNegativeInteger"/>
</xsd:simpleType>
<xsd:simpleType name="ProcessorType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="CPU"/>
<xsd:enumeration value="GPGPU"/>
<xsd:enumeration value="MIC"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="OutputTransferType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="none"/>
<xsd:enumeration value="|"/>
<xsd:enumeration value=">"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
또한, [표 7]은 워크플로우 실행 설정 모델의 XML 스키마 규격을 나타낸다.
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.maha.org"
targetNamespace="http://www.maha.org" elementFormDefault="qualified">
<xsd:element name="ExecutionData">
<xsd:annotation>
<xsd:documentation>
A sample element
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MultipleConfig">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Work" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CMD" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="multiThreadNumber" type="xsd:nonNegativeInteger" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="multiProcessNumber" type="xsd:nonNegativeInteger" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DataSet">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Data" type="DataType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="DataType">
<xsd:choice>
<xsd:element name="String" type="xsd:string"/>
<xsd:element name="StringList">
<xsd:simpleType>
<xsd:list itemType="xsd:string"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="FilePath">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="location" type="xsd:string"/>
<xsd:element name="FileName" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FilePathList">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="location" type="xsd:string"/>
<xsd:element name="FileNameList">
<xsd:simpleType>
<xsd:list itemType="xsd:string"/>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:schema>
[표 8]은 XML 스키마 규격에 따르는 XML로 정의된 도 3c의 개념적 모델(워크플로우 정의)을 나타낸다.
<?xml version="1.0" encoding="UTF-8" ?>
<WorkFlow name="GREP-WC-Workflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.maha.org wTuner-Workflow-Model.xsd"
xmlns="http://www.maha.org">

<!--+++++++++++++++++++++++++++++ Work1 +++++++++++++++++++++++++++++-->
<Work name="GREP-Work" isMultiProcessing="true">
<InputDelivery name="arg1">
<InputDataLink inputDataName="pattern"/>
<ArgumentLink commandName="GREP" argumentName="a1"/>
</InputDelivery>
<InputDelivery name="arg2" fetchOption="1">
<InputDataLink inputDataName="logList"/>
<ArgumentLink commandName="GREP" argumentName="a2"/>
</InputDelivery>

<CMD name="GREP" processorType="CPU" command="grep" isMultiThreading="false">
<Argument name="a1"/>
<Argument name="a2"/>
</CMD>

<OutputDelivery name="out1" transferOption=">">
<OutputDataLink outputDataName="resultList"/>
</OutputDelivery>
</Work>

<!--+++++++++++++++++++++++++++++ Work2 +++++++++++++++++++++++++++++-->
<Work name="WC-Work" isMultiProcessing="false">
<InputDelivery name="arg1" fetchOption="all">
<InputDataLink inputDataName="resultList"/>
<ArgumentLink commandName="WC" argumentName="a1"/>
</InputDelivery>

<CMD name="WC" processorType="CPU" command="wc -l" isMultiThreading="false">
<Argument name="a1"/>
</CMD>

<OutputDelivery name="out1" transferOption=">">
<OutputDataLink outputDataName="result"/>
</OutputDelivery>
</Work>

<!--+++++++++++++++++++++++++++++ Data Set +++++++++++++++++++++++++++++-->
<!-- GREP-Work: input -->
<Data name="pattern" type="String"/>
<Data name="logList" type="FilePathList"/>

<!-- GREP-Work ==> WC-Work -->
<Data name="resultList" type="FilePathList"/>

<!-- WC-Work: output -->
<Data name="result" type="FilePathList"/>

</WorkFlow>
[표 9]는 XML 스키마 규격에 따르는 XML로 정의된 도 3c의 개념적 모델의 워크플로우 실행 설정 모델을 나타낸다.
<?xml version="1.0" encoding="UTF-8" ?>
<ExecutionData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.maha.org
wTuner-ExecutionData-Model.xsd" xmlns="http://www.maha.org">
<MultipleConfig>
<Work name="GREP-Work" multiProcessNumber="5"/>
</MultipleConfig>
<DataSet>

<Data name="pattern">
<String>user1</String>
</Data>

<Data name="logList">
<FilePathList>
<location>/web/log</location>
<FileNameList>
1.log
2.log
3.log
4.log
5.log
</FileNameList>
</FilePathList>
</Data>

<Data name="resultList">
<FilePathList>
<location>/result</location>
<FileNameList>
1.out
2.out
3.out
4.out
5.out
</FileNameList>
</FilePathList>
</Data>

<Data name="result">
<FilePath>
<location>/out</location>
<FileName>visit_count.txt</FileName>
</FilePath>
</Data>

</DataSet>
</ExecutionData>
도 4는 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 시스템을 나타내는 블록도이다.
도 4를 참조하면, 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 시스템(100)은, 워크플로우 정의 도구(200)를 이용하여 정의된 워크플로우가 제출되면, 제출된 워크플로우를 분석한다.
워크플로우 분석 장치(110)는, 자원 정보 수집 모듈(111), 실험 워크플로우 생성 모듈(112), 실험 워크플로우 실행 모듈(113), 그리고 워크플로우 실행 로그 분석 모듈(114)을 포함한다.
자원 정보 수집 모듈(111)은, 클러스터 기반 워크플로우 시스템(100)에 연결된 컴퓨팅 노드(20)의 자원 정보를 수집한다.
실험 워크플로우 생성 모듈(112)은, 자원 정보와 사용자 워크플로우를 기반으로 실험 워크플로우 및 실험 시나리오를 자동으로 생성한다. 이때, 실험 시나리오는 실행 설정 정보의 형식에 따른다.
실험 워크플로우 실행 모듈(113)은, 생성된 실험 워크플로우 및 실험 시나리오를 워크플로우 실행 장치(120)로 전달한다.
워크플로우 실행 로그 분석 모듈(114)은, 워크플로우 실행 장치(120)에서 실험 시나리오에 따라 실행된 실험 워크플로우에 대한 로그 정보를 분석함으로써 응용이 최적으로 수행될 수 있는 최적 병렬 실행 정보를 추출한다.
워크플로우 실행 장치(120)는, 워크플로우 변환 모듈(121)과, 워크플로우 작업 실행 모듈(122)을 포함한다.
워크플로우 변환 모듈(121)은, 워크플로우 분석 장치(110)에서 추출된 최적 병렬 실행 정보를 이용하여 사용자의 워크플로우를 JRMS의 작업 형태로 변환시킨다.
워크플로우 작업 실행 모듈(122)은, 변환된 워크플로우를 JRMS 시스템을 이용하여 실험 시나리오에 따라 실행한다.
도 5는 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 시스템의 워크플로우 분석 장치의 동작을 나타낸 흐름도이다.
본 발명의 실시 예에 따른 워크플로우 분석 장치는 사용자 워크플로우를 분석하여 최적 병렬 실행 정보를 추출한다. 즉, 사용자 워크플로우의 최초 실행에서 최적 병렬 실행 정보를 추출함으로써, 이후의 실행에서 추출된 최적 병렬 실행 정보가 이용될 수 있도록 한다.
도 5를 참조하면, 워크플로우 분석 장치는, 사용자가 사용자 워크플로우와 사용자 워크플로우의 실행을 위한 실행 설정 정보를 입력하면(S501), XML 파서(parser)를 사용하여 사용자 워크플로우를 파싱함으로써, 사용자 워크플로우에 포함된 복수의 워크를 각각 분리한다(S502).
그리고 분리된 복수의 워크가 병렬 실행 가능한지 판단한다(S503).
이후, 사용자 워크플로우에 포함된 복수의 워크 중 병렬 실행 가능한 워크에 대해서 실험 워크플로우를 생성한다(S504). 이때, 사용자 워크플로우에 포함된 복수의 워크 중에서 병렬 실행이 가능하지 않은 워크는 실험 워크플로우를 생성하지 않는다. 병렬 실행이 가능하지 않은 워크는 동시성 실험을 위한 실험 시나리오를 생성할 필요가 없기 때문이다.
이후, 생성된 실험 워크플로우는 병렬 실행 가능하므로, 워크플로우 분석 장치는 각 워크의 병렬 실행 가능 조건을 바탕으로 실험 시나리오를 생성한다(S505).
이때, 각 워크의 병렬 실행 가능 조건은 동시에 실행할 수 있는 프로세스(process)의 개수 또는 쓰레드(thread)의 개수이다. 멀티 프로세스(multi-process)의 개수 또는 멀티 쓰레드(multi-thread)의 개수는 컴퓨터에 존재하는 코어(core)의 개수와 연관된다. 따라서, 워크플로우 분석 장치는 쓰레드의 개수 또는 프로세스의 개수를 증가시키면서 시나리오를 생성할 수 있다.
즉, 워크플로우 실행 장치에서는 쓰레드의 개수 또는 프로세스의 개수에 따라 다양하게 생성된 실험 시나리오에 따라 실험 워크플로우를 실행하고(분석을 위한 실행), 워크플로우 분석 장치는 워크플로우 실행 장치의 워크플로우 실행 로그를 분석하여 워크플로우의 처리 속도가 최대가 되는 시나리오의 병렬 실행 정보, 즉 최적 병렬 실행 정보를 추출한다.
실험 시나리오의 형식은 워크플로우 실행 설정 정보(XML) 형식을 따른다. 또한, 워크 내의 CMD가 멀티 쓰레드를 지원한다면, 워크플로우 분석 장치는 멀티 쓰레드 실험 시나리오도 추가 생성할 수 있다.
실험 워크플로우 실행 모듈은 실험 워크플로우 생성 모듈이 생성한 실험 워크플로우 및 실행 설정 정보 형식의 실험 시나리오를 워크플로우 실행 장치에 전달한다(S506). 이때, 워크플로우 실행 장치는 실험 시나리오에 따라 실행한 실험 워크플로우의 실행 로그를 컴퓨팅 노드의 파일 또는 데이터베이스 관리 시스템(database management system, DBMS)에 저장할 수 있다(S507).
워크플로우 실행 로그 분석 모듈은 워크플로우 실행 장치가 저장한 실험 워크플로우 실행 로그를 모아서 분석한 후, 최적 병렬 실행 정보를 추출하고, 추출된 최적 병렬 실행 정보를 메타 정보에 기록한다(S508). 이후, 실험 워크플로우의 병렬 실행 정보를 조합함으로써, 최초 사용자 워크플로우의 최적 병렬 실행 정보를 메타 정보에 기록할 수 있다. 이때, 실험 워크플로우의 실행 로그는 실험 워크플로우가 실행되는데 소요 시간 또는 명령어별 소요 시간 등을 기준으로 분석될 수 있다.
도 6은 본 발명의 실시 예에 따른 클러스터 기반 워크플로우 시스템의 워크플로우 실행 장치의 동작을 나타낸 흐름도이다.
도 6을 참조하면, 워크플로우 실행 장치의 워크플로우 변환 모듈은, XML 파서(parser)를 사용하여 사용자가 입력한 사용자 워크플로우를 파싱한다(S601). 이후, 워크플로우 변환 모듈은, XML 파스 트리의 워크 목록을 순회하며 워크가 병렬 실행될 수 있는지 판단한다(S602). 워크가 병렬 실행될 수 있다면, 최적 병렬 실행 정보로부터 워크의 병렬 실행 정보를 획득하고(S603), 사용자가 입력한 실행 설정 정보를 최적 병렬 실행 정보로 수정한다(S604).
이후, 워크플로우 변환 모듈은 최적 병렬 실행 정보를 이용하여 사용자의 사용자 워크플로우를 JRMS의 작업 형태(JRMS 시스템의 작업 집합(job set))로 변환한다(S605).
워크플로우 작업 실행 모듈은, 변환된 워크플로우를 JRMS 시스템을 이용하여 실행한다(S606).
위와 같이 본 발명의 한 실시 예에 따른 클러스터 기반 워크플로우 시스템을 사용하면, 사용자는 대규모 컴퓨팅 클러스터를 이용하여 대규모 바이오 데이터 분석 워크플로우, 일기 예보 데이터 분석 워크플로우, 고객 관계 관리(customer relationship management, CRM) 데이터 분석 워크플로우 등의 제3자 응용을 이용한 워크 플로우를 빠르게 분석할 수 있다. 또한, 클러스터 환경에 최적화 되지 않은 제3자의 응용이 클러스터 환경에서도 적절하게 수행될 수 있도록 사전 분석에 의하여 자동으로 병렬 실행할 수 있다.
또한, 본 발명의 한 실시 예에 따른 클러스터 기반 워크플로우 시스템은, 단일 노드에서 사용하는 응용 프로그램 실행 스크립트(명령어)와 같은 개념으로 워크플로우를 모델링 함으로써, 사용자는 워크플로우를 단일 노드에서 실행하는 것과 같이 정의할 수 있다. 그리고, 워크의 병렬 실행 가능성 및 응용 프로그램의 멀티 쓰레드지원 여부를 설정할 수 있다. 또한, GPGPU, MIC와 같은 보조 연산 장치의 활용 여부를 설정하는 것이 가능하여, CPU와 보조 연산 장치가 혼용된 클러스터 환경에서도 자원을 할당할 수 있다.
또한, 클러스터 기반 워크플로우 시스템은 워크플로우 사이에서 데이터를 파일, 메모리, 또는 소켓 등 다양한 방법으로 전달할 수 있는 방법을 제공할 수 있다. 특히, 워크 사이의 데이터 전달을 위해서 임시로 생성되는 중간 결과 데이터를 파일로 전송하게 되면, 사용자가 파일명을 명시하지 않아도 클러스터 기반 워크플로우 시스템이 내부에서 중간 파일을 할당하고 중간 매체(파일, 메모리 등)를 활용하여 다음 단계의 워크로 중간 결과 데이터를 전달할 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (13)

  1. 클러스터의 자원을 이용하여 워크플로우를 실행하는 방법으로서,
    상기 워크플로우를 분석하여 상기 워크플로우로부터 실험 워크플로우 및 실험 시나리오를 생성하는 단계,
    상기 실험 시나리오에 따라 상기 실험 워크플로우를 실행하는 단계,
    상기 실험 워크플로우의 실행 로그를 분석하여 상기 워크플로우에 대한 최적 병렬 실행 정보를 추출하는 단계, 그리고
    상기 최적 병렬 실행 정보에 따라 상기 워크플로우를 실행하는 단계
    를 포함하는 워크플로우 실행 방법.
  2. 제1항에서,
    상기 실험 워크플로우 및 실험 시나리오를 생성하는 단계는,
    상기 워크플로우를 파싱하여 상기 워크플로우에 포함된 복수의 워크를 분리하는 단계,
    상기 분리된 복수의 워크가 서로 병렬 실행 가능한지 판단하는 단계,
    상기 판단 결과에 따라, 병렬 실행 가능한 워크에 대해서 상기 실험 워크플로우를 생성하는 단계, 그리고
    상기 워크의 병렬 실행 가능 조건을 바탕으로 상기 실험 시나리오를 생성하는 단계
    를 포함하는 워크플로우 실행 방법.
  3. 제2항에서,
    상기 실험 워크플로우 및 상기 실험 시나리오를 생성하는 단계는,
    상기 복수의 워크 중 하나의 워크마다 실험 워크플로우를 생성하는 단계
    를 포함하는 워크플로우 실행 방법.
  4. 제2항에서,
    상기 병렬 실행 가능 조건은 상기 클러스터의 자원 중 동시에 실행할 수 있는 프로세스(process)의 개수 또는 쓰레드(thread)의 개수이고,
    상기 실험 시나리오를 생성하는 단계는,
    상기 프로세스의 개수 및 상기 쓰레드의 개수가 각각 다른 복수의 실험 시나리오를 생성하는 단계
    를 포함하는 워크플로우 실행 방법.
  5. 제1항에서,
    상기 실험 시나리오는, 엑스엠엘(extensible markup language, XML) 형식을 따르는 워크플로우 실행 방법.
  6. 제1항에서,
    상기 워크플로우를 실행하는 단계는,
    상기 최적 병렬 실행 정보를 이용하여 상기 워크플로우를 작업 및 자원 관리 시스템(job and resource management system, JRMS)의 작업 형태로 변환하는 단계, 그리고
    상기 JRMS를 이용하여 상기 변환된 워크플로우를 실행하는 단계
    를 포함하는 워크플로우 실행 방법.
  7. 클러스터의 자원을 이용하여 워크플로우를 실행하는 워크플로우 시스템으로서,
    상기 워크플로우를 분석하여 상기 워크플로우로부터 실험 워크플로우와 실험 시나리오를 생성하고, 상기 실험 시나리오를 바탕으로 실행된 상기 실험 워크플로우의 실행 로그를 분석하여 상기 워크플로우에 대한 최적 병렬 실행 정보를 추출하는 워크플로우 분석 장치, 그리고
    상기 실험 시나리오에 따라 상기 실험 워크플로우를 실행하고, 상기 최적 병렬 실행 정보에 따라 상기 워크플로우를 실행하는 워크플로우 실행 장치
    를 포함하는 워크플로우 실행 시스템.
  8. 제7항에서,
    상기 워크플로우 분석 장치는,
    상기 워크플로우를 파싱하여 상기 워크플로우에 포함된 복수의 워크를 분리하고, 상기 분리된 복수의 워크가 서로 병렬 실행 가능한지 판단한 후, 병렬 실행 가능한 워크에 대해서 상기 실험 워크를 생성하는 워크플로우 실행 시스템.
  9. 제8항에서,
    상기 워크플로우 분석 장치는,
    상기 워크의 병렬 실행 가능 조건을 바탕으로 상기 실험 시나리오를 생성하는 워크플로우 실행 시스템.
  10. 제9항에서,
    상기 워크플로우 분석 장치는,
    상기 복수의 워크 중 병렬 실행 가능한 워크에 대해서 상기 실험 워크플로우를 생성하는 워크플로우 실행 시스템.
  11. 제9항에서,
    상기 병렬 실행 가능 조건은 상기 클러스터의 자원 중 동시에 실행할 수 있는 프로세스(process)의 개수 또는 쓰레드(thread)의 개수이고,
    상기 워크플로우 분석 장치는,
    상기 프로세스의 개수 또는 쓰레드의 개수가 각각 다른 복수의 실험 시나리오를 생성하는 워크플로우 실행 시스템.
  12. 제7항에서,
    상기 실험 시나리오는,
    엑스엠엘(extensible markup language, XML) 형식을 따르는 워크플로우 실행 시스템.
  13. 제7항에서,
    상기 워크플로우 실행 장치는,
    상기 최적 병렬 실행 정보를 이용하여 상기 워크플로우를 작업 및 자원 관리 시스템(job and resource management system, JRMS)의 작업 형태로 변환하고, 상기 JRMS를 이용하여 상기 변환된 워크플로우를 실행하는 워크플로우 실행 시스템.
KR1020130092738A 2013-08-05 2013-08-05 워크플로우의 실행 방법 및 시스템 KR20150017052A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130092738A KR20150017052A (ko) 2013-08-05 2013-08-05 워크플로우의 실행 방법 및 시스템
US14/098,725 US20150039382A1 (en) 2013-08-05 2013-12-06 Method and system for executing workflow

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130092738A KR20150017052A (ko) 2013-08-05 2013-08-05 워크플로우의 실행 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR20150017052A true KR20150017052A (ko) 2015-02-16

Family

ID=52428487

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130092738A KR20150017052A (ko) 2013-08-05 2013-08-05 워크플로우의 실행 방법 및 시스템

Country Status (2)

Country Link
US (1) US20150039382A1 (ko)
KR (1) KR20150017052A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170011912A (ko) * 2015-07-24 2017-02-02 주식회사 스마티랩 기계학습 기반의 자율 적응형 비즈니스 프로세스 실행 방법
KR20170103218A (ko) * 2016-03-03 2017-09-13 한국전자통신연구원 스트림 분석 장치 및 방법
KR102199668B1 (ko) * 2019-12-03 2021-01-07 아이씨티웨이주식회사 공간정보 처리용 워크플로우를 자동으로 생성하는 서비스를 제공하는 방법 및 이러한 방법을 실행시키기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018110138A1 (de) 2017-10-18 2019-04-18 Electronics And Telecommunications Research Institute Arbeitsablaufmaschinen-Framework
CN107885587B (zh) * 2017-11-17 2018-12-07 清华大学 一种大数据分析流程的执行计划生成方法
US10235105B1 (en) 2018-02-27 2019-03-19 Ricoh Company, Ltd. Microservice architecture workflow management mechanism
CN110908741A (zh) 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 应用性能管理的展示方法及装置
US11086696B2 (en) 2019-08-01 2021-08-10 Microsoft Technology Licensing, Llc Parallel cloned workflow execution

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8863137B2 (en) * 2005-09-23 2014-10-14 International Business Machines Corporation Systems and methods for automated provisioning of managed computing resources
US7962620B2 (en) * 2007-10-19 2011-06-14 Kubisys Inc. Processing requests in virtual computing environments
US8296765B2 (en) * 2010-07-27 2012-10-23 Kurdi Heba A Method of forming a personal mobile grid system and resource scheduling thereon
US8959526B2 (en) * 2011-06-09 2015-02-17 Microsoft Corporation Scheduling execution of complementary jobs based on resource usage

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170011912A (ko) * 2015-07-24 2017-02-02 주식회사 스마티랩 기계학습 기반의 자율 적응형 비즈니스 프로세스 실행 방법
KR20170103218A (ko) * 2016-03-03 2017-09-13 한국전자통신연구원 스트림 분석 장치 및 방법
KR102199668B1 (ko) * 2019-12-03 2021-01-07 아이씨티웨이주식회사 공간정보 처리용 워크플로우를 자동으로 생성하는 서비스를 제공하는 방법 및 이러한 방법을 실행시키기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체

Also Published As

Publication number Publication date
US20150039382A1 (en) 2015-02-05

Similar Documents

Publication Publication Date Title
KR20150017052A (ko) 워크플로우의 실행 방법 및 시스템
CN109739894B (zh) 补充元数据描述的方法、装置、设备及存储介质
US10389602B2 (en) Automated feature deployment for active analytics microservices
Alpdemir et al. Service-based distributed querying on the grid
JP6050272B2 (ja) Apache hadoop用の低レイテンシクエリエンジン
WO2016082468A1 (zh) 数据图形化方法、装置及数据库服务器
CN109656963B (zh) 元数据获取方法、装置、设备及计算机可读存储介质
US20100175049A1 (en) Scope: a structured computations optimized for parallel execution script language
US9471651B2 (en) Adjustment of map reduce execution
CN110908641B (zh) 基于可视化的流计算平台、方法、设备和存储介质
WO2020238597A1 (zh) 基于Hadoop的数据更新方法、装置、系统及介质
US20130318160A1 (en) Device and Method for Sharing Data and Applications in Peer-to-Peer Computing Environment
CN112286957B (zh) 基于结构化查询语言的bi系统的api应用方法及系统
US11848980B2 (en) Distributed pipeline configuration in a distributed computing system
US20130174048A1 (en) Techniques for guided access to an external distributed file system from a database management system
US11853314B2 (en) Systems and methods for generating, deploying, and managing data infrastructure stacks
Rogers et al. Bundle and pool architecture for multi-language, robust, scalable workflow executions
CN110955674A (zh) 基于java服务的异步导出方法及组件
US20130014082A1 (en) Method of configuring business logic supporting multi-tenancy
CN114036183A (zh) 一种数据etl处理方法、装置、设备及介质
WO2018045610A1 (zh) 用于执行分布式计算任务的方法和装置
Zou et al. From a stream of relational queries to distributed stream processing
CN113806429A (zh) 基于大数据流处理框架的画布式日志分析方法
CN113962597A (zh) 一种数据分析方法、装置、电子设备及存储介质
US20180032329A1 (en) Customized runtime environment

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