KR101886072B1 - 분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법 - Google Patents

분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법 Download PDF

Info

Publication number
KR101886072B1
KR101886072B1 KR1020160175725A KR20160175725A KR101886072B1 KR 101886072 B1 KR101886072 B1 KR 101886072B1 KR 1020160175725 A KR1020160175725 A KR 1020160175725A KR 20160175725 A KR20160175725 A KR 20160175725A KR 101886072 B1 KR101886072 B1 KR 101886072B1
Authority
KR
South Korea
Prior art keywords
node
load
memory
job
idle
Prior art date
Application number
KR1020160175725A
Other languages
English (en)
Other versions
KR20180072295A (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 KR1020160175725A priority Critical patent/KR101886072B1/ko
Publication of KR20180072295A publication Critical patent/KR20180072295A/ko
Application granted granted Critical
Publication of KR101886072B1 publication Critical patent/KR101886072B1/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
    • 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/505Allocation 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 load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

본 발명의 분산 인-메모리(In-Memory) 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템에서의 동적 잡 스케쥴링 방법에서, 스트림 데이터가 입력되면, CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 노드의 부하를 계산하는 단계, 계산된 각 노드의 부하에 따라 각 노드에 우선순위를 부여하여 작업을 분배하는 정적 잡 스케쥴링을 수행하는 단계, 분배 후 각 노드의 상태 정보 및 작업이 각 노드에서 소모하는 부하 정보를 부하 테이블에서 관리하는 단계 및 상기 부하 테이블의 정보를 주기적으로 확인하여, 부하의 발생 원인을 탐색하고, 부하의 발생 원인에 따라 각 노드의 CPU 사용량, 메모리 사용량, 네트워크 부하를 이용하여 동적 잡 스케쥴링을 통해 작업을 재분배하는 단계를 포함한다.
본 발명에 의하면, 노드의 부하로 인한 작업 지연 및 손실을 방지하고, 데이터 처리 성능을 향상시킬 수 있는 효과가 있다.

Description

분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법 {Dynamic job scheduling system and method for supporting real-time stream data processing in distributed in-memory environment}
본 발명은 분산 인 메모리 환경에 관한 것으로서, 더욱 상세하게는 분산 인 메모리 환경에서 실시간 스트림 데이터를 처리하기 위한 기술에 관한 것이다.
최근 IT기술의 발전으로 모바일 단말기, 소셜 미디어, 사물인터넷(IOT: Internet of Things)과 같은 다양한 매체로 인해 생성 및 유통되는 정보량이 기하급수적으로 증가하고 있다. 이와 함께 기존 정보 처리 기술을 통해 데이터 저장, 관리, 분석이 어려워짐에 따라 빅데이터의 중요성이 증가되고 있다.
빅데이터는 거대한 데이터 양(volume), 빠른 데이터 유통 및 이용 속도(velocity), 데이터 다양성(variety)의 특징을 가지고 있으며, 이와 관련하여 새로운 가치 창출을 위한 다양한 분석 및 처리 기법들에 대한 연구가 진행되고 있다.
소셜 미디어 및 사물인터넷과 같은 다양한 매체의 활용이 증가되며 다양한 형태의 스트림 데이터가 생성된다. 스트림 데이터는 각종 장비, 응용 서비스 등에서 지속적으로 데이터가 발생되기 때문에, 실시간 데이터 수집 및 처리 방법이 요구된다. 예를 들어, 사건, 사고, 장애 및 시설물 관리 등 다양한 분야에서 방대한 양의 데이터들이 생성되고 있으며, 이렇게 생성된 데이터는 모니터링과 같은 실시간 시스템에 이용되고 있다.
기존의 빅데이터 처리는 분산 처리 시스템인 하둡(Hadoop)을 사용한다. 하둡은 하둡파일시스템(HDFS)과 맵리듀스(Mapreduce)로 구성된다.
하둡파일시스템은 분산 파일 시스템 역할을 담당하며, 사용자가 제출한 파일을 분산 저장, 관리한다.
대용량의 데이터를 분산 처리하기 위한 맵리듀스는 데이터를 여러 조각으로 나누어서 처리하는 단계인 맵(Map) 단계와, 처리 결과를 모아서 결과를 출력하는 리듀스(Reduce)단계로 나누어져 처리된다.
기존 하둡은 데이터를 하둡파일시스템에 저장 후, 맵리듀스를 통해 분석하는 일괄처리(Batch) 방식을 사용하는데, 그로 인해 대용량의 데이터를 일괄 처리하는데 효과적이지만, 실시간 스트림 데이터를 처리하는데 문제점이 있다.
이러한 문제점을 해결하기 위해 디스크에 비해 입/출력 속도가 빠른 인-메모리(In-Memory) 처리기술이 부각되고 있으며, 이를 통한 스트림 데이터 처리기법들이 연구되고 있다.
인-메모리 처리기술은 데이터를 하드 디스크가 아닌 메모리에 적재하여 사용하기 때문에, 데이터를 빠르게 접근하고 처리할 수 있다. 이러한 분산 인-메모리 기술은 실시간으로 입력되는 스트림 데이터를 처리하는 다양한 시스템에서 많이 활용되고 있다.
대표적인 분산 인-메모리 스트림 데이터 처리 시스템으로 스톰이 있다. 스톰은 실시간 데이터처리를 목적으로 분산환경에서 스트림 데이터를 튜플 형태로 처리한다. 또한, 라운드 로빈 방식을 사용하여 작업을 분배한다. 하지만, 작업 계산 복잡도로 인한 노드의 처리 비용이 증가하는 문제와, 대량의 데이터 폭주 및 한 노드의 작업이 집중된 경우, 노드의 부하를 고려하지 못하여 실시간 처리에 지연이 발생하는 문제점이 있다.
이러한 문제점을 해결하기 위해, 분산 환경에서 실시간 처리를 위해서 노드의 성능과 부하에 따른 잡 스케쥴링(Job scheduling) 기법이 필요하다.
기존 연구는 노드의 부하를 고려한 정적 잡 스케쥴링 기법과 동적 잡 스케쥴링 기법을 제안하였다.
정적 잡 스케쥴링 기법은 초기의 노드의 부하를 고려하여 잡을 분배한다. 이를 통해 대량의 데이터 폭주 및 한 노드에 작업이 집중된 경우에 발생되는 노드의 부하를 분산하지만, 계산 복잡도로 인한 노드의 처리 비용을 고려하지 못하여 노드에 CPU 부하가 발생함으로 인해 처리 시간에 지연이 발생한다.
동적 잡 스케쥴링은 주기적으로 노드의 부하를 측정하여, 노드의 부하 발생 시 처리비용이 높은 작업을 재분배하여 노드의 부하를 분산한다. 하지만, 기존에 제안된 동적 잡 스케쥴링 기법은 CPU 사용량을 통해 노드의 부하를 결정하여, 대량의 데이터 폭주 및 한 노드에 작업이 집중된 경우에 발생되는 노드의 메모리 부하를 고려하지 않는 문제점을 가지고 있다. 이를 통해 메모리 부하로 인한 작업 손실의 문제점을 가지고 있다. 따라서 노드의 CPU 사용량과 메모리의 사용량, 네트워크 부하를 고려한 동적 스케쥴링 기법이 요구된다.
즉, 종래 기술에서는 분산 환경에 각기 다른 성능을 가진 노드와 작업의 계산 복잡도로 인한 노드의 처리비용 증가와 데이터의 폭주, 한 노드에 작업이 집중된 경우를 고려하지 않아 실시간 처리에 지연을 가지고 있는 문제점을 가지고 있다.
대한민국 등록특허 10-1289136
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 본 발명에서는 실시간 스트림 데이터 처리를 위해 노드의 부하를 평준화하는 동적 잡 스케쥴링 방법을 제공하는데 그 목적이 있다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
이와 같은 목적을 달성하기 위한 본 발명의 분산 인-메모리(In-Memory) 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템에서의 동적 잡 스케쥴링 방법에서, 스트림 데이터가 입력되면, CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 노드의 부하를 계산하는 단계, 계산된 각 노드의 부하에 따라 각 노드에 우선순위를 부여하여 작업을 분배하는 정적 잡 스케쥴링을 수행하는 단계, 분배 후 각 노드의 상태 정보 및 작업이 각 노드에서 소모하는 부하 정보를 부하 테이블에서 관리하는 단계 및 상기 부하 테이블의 정보를 주기적으로 확인하여, 부하의 발생 원인을 탐색하고, 부하의 발생 원인에 따라 각 노드의 CPU 사용량, 메모리 사용량, 네트워크 부하를 이용하여 동적 잡 스케쥴링을 통해 작업을 재분배하는 단계를 포함한다.
상기 부하의 발생 원인이 작업 계산 복잡도로 인한 CPU 사용량의 증가에 따른 부하인 경우, CPU의 사용량을 통해 노드의 부하를 구분하고, 상대적으로 부하가 적은 유휴 노드에 작업을 재분배할 수 있는지 확인하고, 재분배가 가능하면 해당 작업을 해당 유휴 노드에 재분배할 때 예상되는 처리량을 구하고, 그 결과 해당 유휴 노드에 부하가 발생하지 않는 것으로 판단되면 해당 작업을 해당 유휴 노드에 재분배할 수 있다.
상기 부하의 발생 원인이 데이터 폭주로 인해 발생한 부하인 경우, 가용 메모리가 있으면, 유휴 메모리의 양이 가장 큰 노드에 해당 작업을 재분배할 수 있다.
본 발명의 일 실시예에서 메모리 부하 노드의 작업 중 메모리 처리 비용이 가작 적은 작업을 선택하여, 메모리의 유휴량이 가장 큰 유휴 노드에 최악 적합(Worst-fit) 방식을 적용하여 작업을 재분배하며, 이때 최악 적합 방식을 만족하는 노드가 없으면, 최적 적합을 만족하는 노드를 선택하여 작업을 재분배할 수 있다.
가용 메모리가 없으면, 작업의 데드라인을 확인하여 상대적으로 처리가 급한 작업과 처리가 급하지 않은 작업으로 구분하고, 처리가 급한 작업을 노드의 처리량과 메모리의 크기가 상대적으로 큰 노드에 재분배하고, 처리가 급하지 않은 작업을 노드의 처리량과 메모리의 크기가 상대적으로 작은 노드에 재분배할 수 있다.
상기 부하의 발생 원인이 한 노드에 작업이 집중되어 CPU와 메모리 사용량이 증가하는 것인 경우, 우선적으로 가용 메모리를 갖고 있는 유휴 노드에 대해 메모리의 크기가 큰 순서대로 우선 순위를 결정하여 작업을 재분배하고, 이후 CPU의 사용량에 따라 사용량이 비교적 적은 노드를 선택하여 작업을 재분배할 수 있다.
본 발명의 분산 인-메모리(In-Memory) 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템에서, 작업을 수행하는 워커(Worker)와, 부하를 확인하기 위한 N모니터(NMonitor)를 포함하여 구성되는 하나 이상의 워커 노드, 상기 워커노드의 상태정보를 저장하는 쥬키퍼 노드 및 상기 쥬키퍼와 통신하며, 상기 워커 노드의 상태 정보와, 상기 워커 노드에서 수행 중인 작업 정보를 저장하기 위한 부하 테이블과, 상기 부하 테이블을 확인하여 스케쥴링(scheduling)을 진행하는 스케쥴러를 포함하여 이루어지는 님버스 노드를 포함하되, 상기 스케쥴러는 스트림 데이터가 입력되면, 상기 부하 테이블로부터 CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 워커 노드의 부하를 계산하고, 계산된 각 노드의 부하에 따라 각 워커 노드에 우선순위를 부여하여 작업을 분배하는 정적 잡 스케쥴링을 수행하고, 상기 부하 테이블의 정보를 주기적으로 확인하여, 부하의 발생 원인을 탐색하고, 부하의 발생 원인에 따라 각 워커 노드의 CPU 사용량, 메모리 사용량, 네트워크 부하를 이용하여 동적 잡 스케쥴링을 통해 작업을 재분배한다.
상기 부하의 발생 원인이 작업 계산 복잡도로 인한 CPU 사용량의 증가에 따른 부하인 경우, 상기 스케쥴러는 CPU의 사용량을 통해 워커 노드의 부하를 구분하고, 상대적으로 부하가 적은 유휴 워커 노드에 작업을 재분배할 수 있는지 확인하고, 재분배가 가능하면 해당 작업을 해당 유휴 워커 노드에 재분배할 때 예상되는 처리량을 구하고, 그 결과 해당 유휴 워커 노드에 부하가 발생하지 않는 것으로 판단되면 해당 작업을 해당 유휴 워커 노드에 재분배할 수 있다.
상기 부하의 발생 원인이 데이터 폭주로 인해 발생한 부하인 경우, 상기 스케쥴러는 가용 메모리가 있으면, 유휴 메모리의 양이 가장 큰 워커 노드에 해당 작업을 재분배할 수 있다.
상기 스케쥴러는 메모리 부하 노드의 작업 중 메모리 처리 비용이 가작 적은 작업을 선택하여, 메모리의 유휴량이 가장 큰 유휴 워커 노드에 최악 적합(Worst-fit) 방식을 적용하여 작업을 재분배하며, 이때 최악 적합 방식을 만족하는 워커 노드가 없으면, 최적 적합을 만족하는 워커 노드를 선택하여 작업을 재분배할 수 있다.
상기 스케쥴러는 가용 메모리가 없으면, 작업의 데드라인을 확인하여 상대적으로 처리가 급한 작업과 처리가 급하지 않은 작업으로 구분하고, 처리가 급한 작업을 처리량과 메모리의 크기가 상대적으로 큰 워커 노드에 재분배하고, 처리가 급하지 않은 작업을 처리량과 메모리의 크기가 상대적으로 작은 워커 노드에 재분배할 수 있다.
상기 부하의 발생 원인이 한 워커 노드에 작업이 집중되어 CPU와 메모리 사용량이 증가하는 것인 경우, 상기 스케쥴러는 우선적으로 가용 메모리를 갖고 있는 유휴 워커 노드에 대해 메모리의 크기가 큰 순서대로 우선 순위를 결정하여 작업을 재분배하고, 이후 CPU의 사용량에 따라 사용량이 비교적 적은 워커 노드를 선택하여 작업을 재분배할 수 있다.
본 발명에 의하면, 분산 인-메모리 환경에서 실시간 스트림 데이터를 처리하기 위한 동적 잡 스케쥴링 기법을 제안함으로써, 노드의 부하로 인한 작업 지연 및 손실을 방지하고, 데이터 처리 성능을 향상시킬 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 동적 잡 스케쥴링 시스템의 구조를 보여주는 블록도이다.
도 2는 본 발명의 일 실시예에 다른 동적 잡 스케쥴링 방법을 보여주는 흐름도이다.
도 3은 부하 테이블을 정의한 도표이다.
도 4는 본 발명에서 제안하는 부하 관리 기법의 저장 구조의 예를 나타낸 도표이다.
도 5는 작업 복잡도로 인한 처리비용 증가 시 잡 스케쥴링 알고리즘이다.
도 6은 본 발명의 일 실시예에 따른 동적 잡 스케쥴링 시스템에서 작업 복잡도로 인한 노드의 처리비용 증가 상황을 나타낸 도면이다.
도 7은 슬라이딩 윈도우 방식으로 데이터가 입력되는 것을 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른 동적 잡 스케쥴링 시스템에서 데이터 폭주 시 가용 노드가 존재하는 않는 상황을 나타낸 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 갖는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 발명에서 제안하는 기법은 CPU 사용량, 메모리 사용량, 네트워크 사용량을 통해 계산의 복잡도로 인한 노드의 처리량 증가, 데이터 폭증, 한 노드의 데이터가 집중된 경우 등 3가지 형태의 부하로 나뉘어 작업을 재분배한다. 작업의 계산 복잡도로 인한 부하의 경우 CPU 사용량을 우선 측정하여 CPU 사용량이 적은 노드에 작업을 재분배하고, 데이터 폭증의 경우 메모리 사용량을 우선 측정하여 유휴 메모리가 큰 노드에 작업을 재분배한다. 또한, 한 노드의 데이터가 집중된 경우 메모리 사용량과 CPU 사용량을 측정하여 메모리의 사용량과 CPU 사용량이 작은 노드에 작업을 재분배한다. 이와 같은 방법을 통해 본 발명에서 제안하는 기법은 실시간 데이터 처리에 있어서, 노드에 부하를 집중화 하지 않고, 노드의 부하를 평준화함으로써, 지연을 방지하여 작업을 처리한다.
본 발명에서는 각기 다른 성능을 가진 노드와, 노드에서 처리 중인 작업의 노드 처리비용, 노드의 상태를 통해 부하를 구분하고, 상황에 맞게 작업을 재분배하여 실시간 처리의 지연을 방지한다.
또한, 본 발명에서는 분산 인-메모리 환경의 스트림 데이터 처리 시스템 중 스톰 환경에서 주기적으로 노드의 부하를 고려한 동적 스케쥴링 기법을 제안한다.
본 발명에서 제안하는 기법은 CPU의 사용량과 처리량, 유휴 메모리의 크기, 네트워크의 부하를 통해 노드의 부하를 측정하고, 부하에 따라 잡(Job)을 재분배하여 노드의 부하를 평준화한다. 이를 통해 스트림 데이터를 실시간 처리하며 지연을 방지한다.
부하는 처리 중인 작업의 계산 복잡도로 인한 노드의 처리비용 증가, 데이터 폭주, 한 노드에 작업이 집중 된 경우와 같이 세가지 경우로 나누어진다.
우선 처리 중인 작업의 복잡도로 인한 노드의 처리비용 증가에 따른 부하의 경우, 노드의 CPU 사용량이 증가되어 실시간 처리에 지연이 발생한다. 이러한 경우 CPU 사용량이 비교적 작은 노드에 작업을 재분배하여 CPU 사용량을 평준화 하여 작업을 처리한다.
또한, 데이터 폭주에 의한 부하가 발생되는 경우, 스트림 데이터가 급증하여 인-메모리 환경에서 처리 시 메모리에 해당 작업이 다 할당되지 못하여 작업의 손실이 발생한다. 이러한 경우 유휴 메모리의 양이 가장 큰 노드에 해당 작업을 재분배하여 작업의 손실을 지연한다.
마지막으로 한 노드에 작업이 집중된 경우이다. 이러한 경우는 CPU 사용량과 메모리의 사용량을 모두 고려해야 한다. CPU 사용량에 의한 부하는 작업이 지연이 발생하지만, 메모리에 의한 부하는 작업이 손실되는 문제가 발생하여, 우선적으로 가용한 메모리를 가지고 있는 노드에 대한 우선순위를 결정 후, CPU의 사용량이 비교적 적은 노드를 선택하여 작업을 재분배한다. 또한, 성능이 다른 경우 각 CPU의 처리량과 메모리 크기를 비교하여, 작업이 소모할 부하를 계산하여, 부하의 임계치 이하 시 작업을 해당 노드에 재분배 한다.
본 발명의 분산 인-메모리(In-Memory) 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템에서의 동적 잡 스케쥴링 방법에서, 스트림 데이터가 입력되면, CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 노드의 부하를 계산하는 단계, 계산된 각 노드의 부하에 따라 각 노드에 우선순위를 부여하여 작업을 분배하는 정적 잡 스케쥴링을 수행하는 단계, 분배 후 각 노드의 상태 정보 및 작업이 각 노드에서 소모하는 부하 정보를 부하 테이블에서 관리하는 단계 및 상기 부하 테이블의 정보를 주기적으로 확인하여, 부하의 발생 원인을 탐색하고, 부하의 발생 원인에 따라 각 노드의 CPU 사용량, 메모리 사용량, 네트워크 부하를 이용하여 동적 잡 스케쥴링을 통해 작업을 재분배하는 단계를 포함한다.
상기 부하의 발생 원인이 작업 계산 복잡도로 인한 CPU 사용량의 증가에 따른 부하인 경우, CPU의 사용량을 통해 노드의 부하를 구분하고, 상대적으로 부하가 적은 유휴 노드에 작업을 재분배할 수 있는지 확인하고, 재분배가 가능하면 해당 작업을 해당 유휴 노드에 재분배할 때 예상되는 처리량을 구하고, 그 결과 해당 유휴 노드에 부하가 발생하지 않는 것으로 판단되면 해당 작업을 해당 유휴 노드에 재분배할 수 있다.
상기 부하의 발생 원인이 데이터 폭주로 인해 발생한 부하인 경우, 가용 메모리가 있으면, 유휴 메모리의 양이 가장 큰 노드에 해당 작업을 재분배할 수 있다.
본 발명의 일 실시예에서 메모리 부하 노드의 작업 중 메모리 처리 비용이 가작 적은 작업을 선택하여, 메모리의 유휴량이 가장 큰 유휴 노드에 최악 적합(Worst-fit) 방식을 적용하여 작업을 재분배하며, 이때 최악 적합 방식을 만족하는 노드가 없으면, 최적 적합을 만족하는 노드를 선택하여 작업을 재분배할 수 있다.
가용 메모리가 없으면, 작업의 데드라인을 확인하여 상대적으로 처리가 급한 작업과 처리가 급하지 않은 작업으로 구분하고, 처리가 급한 작업을 노드의 처리량과 메모리의 크기가 상대적으로 큰 노드에 재분배하고, 처리가 급하지 않은 작업을 노드의 처리량과 메모리의 크기가 상대적으로 작은 노드에 재분배할 수 있다.
상기 부하의 발생 원인이 한 노드에 작업이 집중되어 CPU와 메모리 사용량이 증가하는 것인 경우, 우선적으로 가용 메모리를 갖고 있는 유휴 노드에 대해 메모리의 크기가 큰 순서대로 우선 순위를 결정하여 작업을 재분배하고, 이후 CPU의 사용량에 따라 사용량이 비교적 적은 노드를 선택하여 작업을 재분배할 수 있다.
본 발명의 분산 인-메모리(In-Memory) 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템에서, 작업을 수행하는 워커(Worker)와, 부하를 확인하기 위한 N모니터(NMonitor)를 포함하여 구성되는 하나 이상의 워커 노드, 상기 워커노드의 상태정보를 저장하는 쥬키퍼 노드 및 상기 쥬키퍼와 통신하며, 상기 워커 노드의 상태 정보와, 상기 워커 노드에서 수행 중인 작업 정보를 저장하기 위한 부하 테이블과, 상기 부하 테이블을 확인하여 스케쥴링(scheduling)을 진행하는 스케쥴러를 포함하여 이루어지는 님버스 노드를 포함하되, 상기 스케쥴러는 스트림 데이터가 입력되면, 상기 부하 테이블로부터 CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 워커 노드의 부하를 계산하고, 계산된 각 노드의 부하에 따라 각 워커 노드에 우선순위를 부여하여 작업을 분배하는 정적 잡 스케쥴링을 수행하고, 상기 부하 테이블의 정보를 주기적으로 확인하여, 부하의 발생 원인을 탐색하고, 부하의 발생 원인에 따라 각 워커 노드의 CPU 사용량, 메모리 사용량, 네트워크 부하를 이용하여 동적 잡 스케쥴링을 통해 작업을 재분배한다.
상기 부하의 발생 원인이 작업 계산 복잡도로 인한 CPU 사용량의 증가에 따른 부하인 경우, 상기 스케쥴러는 CPU의 사용량을 통해 워커 노드의 부하를 구분하고, 상대적으로 부하가 적은 유휴 워커 노드에 작업을 재분배할 수 있는지 확인하고, 재분배가 가능하면 해당 작업을 해당 유휴 워커 노드에 재분배할 때 예상되는 처리량을 구하고, 그 결과 해당 유휴 워커 노드에 부하가 발생하지 않는 것으로 판단되면 해당 작업을 해당 유휴 워커 노드에 재분배할 수 있다.
상기 부하의 발생 원인이 데이터 폭주로 인해 발생한 부하인 경우, 상기 스케쥴러는 가용 메모리가 있으면, 유휴 메모리의 양이 가장 큰 워커 노드에 해당 작업을 재분배할 수 있다.
상기 스케쥴러는 메모리 부하 노드의 작업 중 메모리 처리 비용이 가작 적은 작업을 선택하여, 메모리의 유휴량이 가장 큰 유휴 워커 노드에 최악 적합(Worst-fit) 방식을 적용하여 작업을 재분배하며, 이때 최악 적합 방식을 만족하는 워커 노드가 없으면, 최적 적합을 만족하는 워커 노드를 선택하여 작업을 재분배할 수 있다.
상기 스케쥴러는 가용 메모리가 없으면, 작업의 데드라인을 확인하여 상대적으로 처리가 급한 작업과 처리가 급하지 않은 작업으로 구분하고, 처리가 급한 작업을 처리량과 메모리의 크기가 상대적으로 큰 워커 노드에 재분배하고, 처리가 급하지 않은 작업을 처리량과 메모리의 크기가 상대적으로 작은 워커 노드에 재분배할 수 있다.
상기 부하의 발생 원인이 한 워커 노드에 작업이 집중되어 CPU와 메모리 사용량이 증가하는 것인 경우, 상기 스케쥴러는 우선적으로 가용 메모리를 갖고 있는 유휴 워커 노드에 대해 메모리의 크기가 큰 순서대로 우선 순위를 결정하여 작업을 재분배하고, 이후 CPU의 사용량에 따라 사용량이 비교적 적은 워커 노드를 선택하여 작업을 재분배할 수 있다.
도 1은 본 발명의 일 실시예에 따른 동적 잡 스케쥴링 시스템의 구조를 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 동적 잡 스케쥴링 시스템은 스톰(Storm) 환경에서 하나의 마스터 역할을 하는 님버스(Nimbus) 노드(100), 워커(Worker) 노드(200), 워커 노드의 상태 정보를 저장하는 쥬키퍼(Zookeeper) 노드(300)로 구성된다.
님버스 노드(100)는 워커 노드(200)의 상태 정보와 워커 노드(200)에서 수행 중인 작업의 정보를 저장하는 부하테이블(120)과, 부하테이블을 확인하여 스케쥴링을 진행하는 스케쥴러(110)로 구성된다.
워커 노드(200)는 작업을 수행하는 워커(Worker)(210)와 워커 노드의 부하를 확인하는 N모니터(NMonitor)(220)로 구성된다. 워커(210)는 쓰레드 슬롯(Slot)안에서 실제 스파웃(Spout)과 볼트(Bolt)를 실행하는 역할을 한다.
도 1은 본 발명의 일 실시예에 따른 동적 잡 스케쥴링 시스템에서 작업의 계산 복잡도로 인한 노드의 처리비용 증가를 나타내고 있다. 이러한 경우 CPU 사용량을 통해 노드의 부하를 측정하여, 부하가 큰 부하 노드와 부하가 비교적 작은 유휴 노드로 구분한다. 이를 통해 구분된 부하 노드의 작업에서, 노드 내에서 소모하고 있는 CPU 사용량에 있어서 가장 큰 사용량을 갖는 노드의 작업을, 유휴 노드의 성능을 고려하여 유휴 노드에 재분배한다.
도 2는 본 발명의 일 실시예에 다른 동적 잡 스케쥴링 방법을 보여주는 흐름도이다.
도 2를 참조하면, 처음 스트림 데이터가 입력되면(S210), CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 노드의 부하를 계산하고, 계산을 통해 노드의 우선순위를 부여하여 해당 작업을 분배하는 정적 잡 스케쥴링을 수행한다(S220).
그리고, 분배 후 노드의 상태 정보와 작업이 노드에서 소모하는 부하를 부하 테이블에서 관리한다(S230).
그리고, 부하테이블의 정보를 주기적으로 확인하여, 노드의 CPU 사용량, 메모리 사용량, 네트워크 부하에 따라 적합한 동적 잡 스케쥴링을 통해 작업을 재분배한다(S240, S250). 이를 통해 실시간 스트림 데이터 처리에 있어서, 지연을 방지한다.
분산 환경에서 실시간 스트림 데이터를 처리하는 과정에 부하가 발생한 노드와 작업의 처리비용을 관리하는 것은 중요하다. 부하 발생 시 부하 노드의 판별과, 부하 노드에서 처리 중인 작업을 선택하여 재분배하는데 관리한 부하를 사용하여 판별한다. 부하 정보는 인-메모리(In-Memory) 데이터베이스에 테이블의 형식으로 관리한다.
스케쥴러(110)는 각 노드의 상태를 노드에 직접적으로 확인하지 않고, 부하테이블(120)을 통해 모든 노드의 부하를 확인한다. 이로써 스케쥴러(110)가 노드의 부하를 측정하는 비용을 줄인다.
또한, 노드의 부하를 판별하기 위해 노드의 CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 통해 노드의 부하를 판단하고, 각기 다른 성능을 가지고 있는 특성을 고려해 평균 처리량을 관리해야 한다.
또한, 노드의 상태 정보 뿐만 아니라 작업이 소요하는 CPU 사용량, 메모리 사용량을 통해 부하 발생 시, 해당 노드에서 가장 큰 처리 비용을 갖는 작업을 선택하여 재분배하기에, 노드의 상태정보와 노드에서 처리중인 작업의 처리비용을 관리하는 것이 필요하다.
도 3은 부하 테이블을 정의한 도표이다.
도 3을 참조하면, 부하 테이블은 각 노드의 정보와 노드에서 처리중인 작업의 처리비용을 나타낸다. 노드의 정보는 각 노드의 성능과 CPU 사용량, 처리량, 평균 처리량, 네트워크 부하를 관리한다. 작업의 처리 비용은 작업이 처리중인 노드와 CPU 사용량, 메모리 사용량을 관리한다. 부하테이블을 갱신함에 있어서, 노드의 작업의 상태가 변경될 시 다른 노드의 상태도 같이 확인하여 갱신한다.
도 3 (a)는 노드의 상태 정보를 나타낸다. 노드의 상태 정보는 CPU의 사용량, 평균 처리량, 메모리의 사용량, 네트워크 부하로 이루어져 있다. 이를 통해 노드의 상황에 따른 부하를 확인 할 수 있다. CPU의 사용량이 큰 경우 작업의 계산 복잡도로 인한 증가를 나타내고, 메모리의 사용량은 데이터가 폭주하는 상황으로 인해 증가하게 된다.
도 3 (b)는 작업별 소요되는 노드의 처리비용을 나타낸다. 처리비용에 대한 정보는 어느 워커에서 실행되고 있는지, 워커 노드에서 작업이 소모하는 노드의 CPU 사용량과 메모리 크기로 구성되어 있다. 이를 통해 부하 발생 시 상황에 따라 재분배하는 작업을 선택하는데 사용된다.
도 4는 본 발명에서 제안하는 부하 관리 기법의 저장 구조의 예를 나타낸 도표이다.
도 4를 참조하면, 부하 관리 기법의 저장 구조는 노드 상태 정보와 작업 정보로 나눌 수 있다.
도 4 (a)는 노드 상태 정보를 나타내며 노드의 성능, CPU의 사용량, 평균처리량, 메모리의 사용량으로 구성된다.
노드의 성능의 경우 노드에서 작업을 처리하는 과정에 계산의 복잡도로 인한 노드의 부하가 생겨 해당 작업을 재분배 시, 부하노드와 유휴노드의 구분과 각기 성능이 다른 노드의 처리량을 통해 작업을 재분배시 고려하는 과정에 사용된다.
Figure 112016125706259-pat00001
수학식 1은 노드의 CPU 평균 처리량을 구하는 식이다. 이때, CPUthroughput[i]/n는 i노드의 현재 처리량을 나타내고, n은 해당 노드에 저장된 처리량의 수를 나타낸다.
Figure 112016125706259-pat00002
수학식 2는 노드의 메모리 유휴 메모리 크기를 나타내는 식이다.
도 4 (b)는 작업의 정보를 나타낸다. 작업의 정보는 작업이 소모하는 노드의 CPU 사용량과 메모리크기로 구성되어있다. 작업의 정보를 통해 부하 노드에서 재분배의 대상이 되는 작업을 선택하는데 사용된다.
분산된 환경에서 발생되는 부하는 다음과 같다. 작업의 계산복잡도로 인한 처리비용 증가, 데이터 폭주로 인한 메모리 사용량 증가, 한 노드에 작업이 집중되어 지연이 발생하는 경우로 나눌 수 있다. 이러한 부하로 인해 작업의 지연 및 손실이 발생하는 문제점이 있다. 이러한 문제점을 해결하기 위해 부하를 관리하고 상태를 확인하여 상황에 따른 잡 스케쥴링 기법이 필요하다.
본 발명에서 제안하는 기법은 주기적으로 부하 테이블을 통해 노드의 상태 정보와 작업의 처리비용을 확인한다. 그리고, 부하를 확인하며 부하의 발생 원인을 찾는다. 부하의 발생원인은 작업 계산복잡도로 인한 CPU 사용량의 증가에 따른 부하, 데이터 폭주로 인한 메모리 부하, 한 노드에 작업이 집중된 CPU 사용량, 메모리 부하로 나누어 구분할 수 있다.
노드에서 처리 중인 작업의 계산이 복잡한 경우, CPU의 연산이 증가하여 CPU의 사용량이 증가하게 된다. 이러한 경우 CPU에 부하가 발생되어 작업처리에 지연이 발생하게 된다.
작업 계산 복잡도로 인한 CPU 사용량의 증가의 경우, CPU의 사용량을 통해 노드의 부하를 구분하고, 부하가 적은 유휴 노드에 작업을 재분배할 수 있는지 확인한다. 재분배가 가능한 경우, 해당 작업을 유휴 노드에 재분배하여 예상되는 처리량을 구하고, 유휴 노드에 부하가 발생하지 않을 것으로 예상되면, 작업을 재분배한다. 만약, 그렇지 않으면 유휴 노드를 재선정하여 처리한다.
CPU의 사용량은 각기 다른 성능의 노드를 고려하여 각 노드의 CPU 사용량의 평균을 통해 부하를 구분한다. CPU 사용량을 통해 부하 노드와 유휴 노드를 구하는 식은 수학식 3과 수학식4를 통해 구할 수 있다.
Figure 112016125706259-pat00003
수학식 3은 각 노드의 CPU 사용량 평균을 구하는 식이다. 이때, CPUexp는 평균 CPU 사용량, i는 노드, n은 총 노드의 수, CPUi -use는 노드 i의 CPU 사용량을 의미한다. 이를 통해 구해진 값을 통해 모든 노드의 CPU 사용량의 평균을 구한다. 수학식 3을 통해 구해진 값을 이용하여 전체 노드의 CPU 사용량의 평균을 구하고, CPUexp값과 각 노드의 CPU 사용량의 편차를 통해 부하 노드와 유휴 노드를 구분한다.
Figure 112016125706259-pat00004
수학식 4는 CPUexp값과 각 노드의 CPU 사용량의 편차를 구하는 식이다. 이때, CPUi.dev는 CPUexp값과 노드 i의 CPU 사용량의 편차를 의미한다.
편차의 값이 가장 작은 경우, 평균에 비해 큰 CPU 사용량을 가지고 있다는 것을 의미하게 된다. 이를 통해 편차가 가장 작은 값을 가지고 있는 노드를 부하 노드로 구분하고, 가장 큰 값을 가지는 노드를 유휴 노드로 구분한다. 이때, 유휴 노드로 구분된 노드의 유휴 메모리의 크기가 20% 미만 시에 작업의 손실이 발생하는 문제점이 발생한다. 이러한 경우, 유휴 노드로 구분된 노드를 제외하고 편차가 큰 노드를 유휴 노드로 구분한다.
수학식 4를 통해 구분된 부하 노드에서 처리 중인 작업 중 일부를 선택하여 유휴 노드에 재분배하여 부하 노드의 CPU 사용량을 평준화한다. 이때, 작업이 소모하는 노드의 처리 비용과 유휴 노드에서 재분배 후 예상되는 처리비용을 고려하여 작업을 선택한다. 이를 통해 부하노드에서 작업이 소모하는 처리비용을 감소시키고, 유휴 노드의 처리비용을 늘려 부하를 평준화한다. 처리 중인 작업의 CPU 소모량, 유휴 노드로 재분배시 예상처리 비용, 재분배시 발생하는 비용을 통해 부하 노드에서 작업을 선택할 수 있다.
Figure 112016125706259-pat00005
수학식 5는 작업 재분배시 부하 노드에서 작업을 선택하는 수식이다. 작업을 선택함에 있어서, 부하 노드에서 처리 중인 작업 중 CPU 소모량이 가장 큰 작업을 선택하게 된다. 이때, Taskselect는 선택된 작업을 의미하고,
Figure 112016125706259-pat00006
는 부하 노드에서 처리중인 작업의 CPU 소모량을 의미한다.
수학식 5로 선택된 작업이 유휴 노드에 재분배 되어 작업을 진행할 때, 유휴 노드에 부하가 발생하여 지연이 발생하는지 확인할 필요가 있다.
Figure 112016125706259-pat00007
수학식 6은 수학식 5에서 선택된 작업이 유휴 노드에 해당 작업을 재분배하는데 발생하는 비용을 구하는 식이다. 이때, tuplesize는 작업의 크기를 의미한다.
Figure 112016125706259-pat00008
수학식 7은 예상되는 처리비용을 구하는 수식이다. 이때, Taskcost는 예상되는 처리비용을 나타내고,
Figure 112016125706259-pat00009
는 유휴 노드의 평균 CPU 처리량을 나타내고,
Figure 112016125706259-pat00010
은 부하 노드의 평균 CPU 처리량을 나타낸다.
수학식 7의 결과를 통해 계산된 예상 값의 전송시간을 제외한 값을 유휴 노드의 CPU 사용량과 더하여, 다시 수학식 3을 계산하여 이전에 나온 CPUexp값보다 적을 시 작업을 재분배한다. 이때, 유휴 노드의 유휴 메모리가 작업의 크기보다 작은 경우 작업의 손실이 발생하는 문제점이 발생한다. 이러한 경우 선택된 작업을 제외하고 다시 작업을 선택한다.
도 5는 작업 복잡도로 인한 처리비용 증가 시 잡 스케쥴링 알고리즘이다.
도 5의 알고리즘을 참조하면, 라인 01~14에서 부하테이블을 통해 노드의 상태정보를 확인하고, CPU 사용량에 따라 부하 노드와 유휴 노드로 구분한다. 만약, 유휴 노드로 선정된 노드에서 유휴 메모리의 크기가 임계값인 20% 미만인 경우, 작업의 손실이 발생하는 문제점을 가지게 되므로 유휴 노드를 다시 선정한다.
라인 16~25에서는 부하 노드에서 작업을 선택하고 노드에 재분배하는 것을 나타낸다. 이때, 선택된 작업의 크기와 유휴 노드의 메모리의 합이 임계치인 80%이상 시, 작업의 손실이 발생하는 문제점이 발생하므로, 해당 작업을 제외한 작업을 선택하여 작업을 재분배한다. 이후 부하 테이블을 갱신한다.
도 6은 본 발명의 일 실시예에 따른 동적 잡 스케쥴링 시스템에서 작업 복잡도로 인한 노드의 처리비용 증가 상황을 나타낸 도면이다.
도 6은 워커노드 1에서 처리중인 작업의 복잡도로 인해 부하가 발생한 상황이다. 이와 같은 상황에서 수학식 3과 수학식 4에 따라, 부하 노드로 구분된 워커 노드1에서 처리 중인 작업 중 수학식 5의 결과로 선택된 Task4를 선택하여, 유휴 노드로 구분된 워커 노드3에 재분배하는 것을 나타낸다. 재분배 후, 유휴 노드의 CPU 사용량은 네트워크 비용을 제외한 60%가 되고, 부하 노드는 90%가 된다. 이를 통해 각 노드의 CPU 사용량의 평균을 계산하면 70%로 기존의 80%보다 12%감소한 것을 볼 수 있다.
데이터 폭주로 인한 부하가 발생한 경우, 노드의 메모리 사용량이 크게 증가하여 작업의 손실의 문제가 발생한다. 이러한 경우 가용한 메모리가 있는 경우와 없는 경우로 나누어서 작업을 재분배한다.
가용한 메모리가 있는 경우는 메모리 부하 노드와 유휴 노드로 구분한다. 메모리 부하 노드의 작업 중 메모리 처리 비용이 가장 적은 작업을 선택하여 메모리의 유휴량이 가장 큰 유휴노드에 최악 적합(Worst-fit)방식을 사용하여 작업을 재분배한다. 이때, 최악 적합 방식을 만족하는 노드가 존재하지 않을 시 최적 적합을 만족하는 노드를 선택하여 작업을 재분배한다. 또한, 메모리의 크기뿐만 아니라 CPU 사용량에 의한 부하 또한 고려해야 한다. 메모리가 만족하는 경우, CPU의 부하 발생 시, 작업의 지연이 발생하여 실시간 처리에 문제가 발생한다. 이러한 문제점을 해결하기 위해 재분배 대상이 된 작업에 대하여 수학식 6을 사용하여, 해당 작업이 유휴 노드에 재분배 되어 예상되는 CPU 사용량을 구하고, 수학식 3을 이용하여 CPU의 부하가 발생하는지 확인한다. 부하가 발생하면 기존에 선정한 유휴 노드가 아닌 CPU 사용량 기준으로 유휴 노드를 선정하여 재분배한다.
가용한 메모리가 없는 경우는 모든 노드에 메모리가 가득 찬 상태를 의미한다. 이러한 경우 노드에 작업을 분배하여 처리를 하여도 손실이 발생하여 작업의 결과를 사용하기 힘든 문제점을 가지고 있다. 이를 해결하기 위해 노드의 성능을 고려한 동적 잡 스케쥴링 기법이 필요하다. 노드의 성능을 고려한 잡 스케쥴링은 작업의 데드라인, 노드의 평균 처리량, 메모리의 크기를 기준으로 잡 스케쥴링을 진행한다. 부하가 발생한 경우, 작업의 데드라인을 확인하여 처리가 급한 작업과 급하지 않은 작업으로 나눈다. 이후 처리가 급한 작업을 노드의 처리량과 메모리 크기에 따라 작업을 재분배하고, 처리가 급하지 않은 작업은 처리량이 보다 낮은 노드에 작업을 재분배한다. 이러한 과정을 통해 처리가 급한 작업을 처리량이 좋은 노드에 우선적으로 분배하여 실시간 처리의 지연 및 손실을 방지한다. 이를 위해서는 작업의 데드라인을 정의해야 한다.
도 7은 슬라이딩 윈도우 방식으로 데이터가 입력되는 것을 나타낸 도면이다.
도 7에서 각 윈도우의 데드라인은 다음 윈도우가 채워지기 이전을 의미한다. 예를 들어, W1의 데드라인은 t3-t4를 의미한다. 이를 통해 작업의 데드라인을 비교하여 처리가 급한 작업에 우선순위를 부여하여 우선적으로 작업을 재분배하는 대상이 된다.
도 8은 본 발명의 일 실시예에 따른 동적 잡 스케쥴링 시스템에서 데이터 폭주 시 가용 노드가 존재하는 않는 상황을 나타낸 도면이다.
도 8은 데이터 폭주 시 가용 노드가 존재하지 않는 경우의 노드 구조의 예이다. 도 8에서 Task1, Task2는 우선적으로 입력된 작업으로 다른 작업에 비해 데드라인이 얼마 남지 않은 상황이다. 이러한 경우 CPU 처리량의 평균이 비교적 높은 워커 노드1이 우선적으로 성능이 좋은 노드로 선정된다. 이후 남은 워커 노드 2, 워커 노드3에 최적 적합이 될 수 있는 작업을 선택하여 해당 노드로 재분배한다.
도 8의 경우, Task3이 워커노드 3에 최적 적합인 것을 알 수 있다. 이를 통해 Task3을 워커 노드에 재분배하고, 우선순위가 큰 Task2를 성능이 좋은 워커노드 1에 재분배하여 부하테이블을 갱신 후 처리한다. 하지만, 워커노드1과 같이 처리성능은 좋으나 메모리가 작은 크기인 경우, 메모리에 수용할 수 있는 크기의 작업을 재분배하고, 나머지 작업은 두 번째로 처리성능이 좋은 노드인 워커노드2에 재분배하여 작업을 처리한다.
마지막으로 한 노드에 작업이 집중되어 CPU와 메모리 사용량이 증가하는 경우이다. 이러한 경우는 우선적으로 메모리의 크기를 고려하여 유휴 노드의 우선순위를 고려하고, 그 이후 CPU 사용량에 따라 작업을 분배한다. 작업 손실로 인하여, 실시간 스트림 데이터 처리를 함에 있어서 결과값을 신용 할 수 없는 문제가 발생하기 때문에, 메모리의 크기를 우선으로 고려하여 유휴 노드를 선정하고, 작업을 재분배한다.
작업 재분배 또한 앞서 데이터 폭주로 인한 노드의 부하 발생 시 다른 노드들의 가용 메모리가 있는 경우와 동일하다. 새로 입력되는 작업을 위해 부하가 집중된 노드의 작업의 일부를 최악 적합 방법을 사용하여 유휴 노드에 분배하고, CPU 사용량의 부하 발생 시, 도 5의 방식을 사용하여 처리하면 된다. 이를 통해 메모리를 고려한 작업의 재분배와 CPU 사용량에 따른 작업의 재분배로 인해 작업의 손실과 지연을 방지 시킬 수 있다.
본 발명에서는 노드의 부하를 고려한 동적 잡 스케쥴링 기법을 제안하였다. 기존의 기법은 작업의 처리과정에서 발생하는 노드의 부하로 인한 작업 지연 및 손실의 문제가 있었다. 본 발명에서 제안하는 기법은 CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 노드의 부하를 계산한 후, 노드의 우선순위를 부여하여 해당 작업을 분배한다. 또한, 주기적으로 새로운 작업이 발생 시, 노드의 부하가 발생하면 부하가 발생한 노드에서 처리 중인 작업이 소모하는 노드의 부하를 확인하여, 작업을 재분배하는 잡 스케쥴링 수행한다.
본 발명에서 제안하는 기법의 우수성을 입증하기 위해 기존 기법과 성능 평가를 수행한 결과, 본 발명에서 제안하는 기법이 기존 기법보다 우수한 성능을 보였다. 성능평가 결과, 본 발명에서 제안하는 기법이 기존 기법에 비해 데이터 처리 시간에서 약 15% 우수한 성능을 보이는 것으로 나타났다. 또한, 노드의 부하를 측정한 결과, 임계치에 가깝게 모든 노드가 비슷한 부하를 가지고 있는 것을 보였다.
이상 본 발명을 몇 가지 바람직한 실시예를 사용하여 설명하였으나, 이들 실시예는 예시적인 것이며 한정적인 것이 아니다. 본 발명이 속하는 기술분야에서 통상의 지식을 지닌 자라면 본 발명의 사상과 첨부된 특허청구범위에 제시된 권리범위에서 벗어나지 않으면서 다양한 변화와 수정을 가할 수 있음을 이해할 것이다.
100 님버스 200 워커 노드
300 쥬키퍼 110 스케쥴러
120 부하 테이블 210 워커
220 N모니터

Claims (12)

  1. 분산 인-메모리(In-Memory) 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템에서의 동적 잡 스케쥴링 방법에서,
    스트림 데이터가 입력되면, CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 노드의 부하를 계산하는 단계;
    계산된 각 노드의 부하에 따라 각 노드에 우선순위를 부여하여 작업을 분배하는 정적 잡 스케쥴링을 수행하는 단계;
    분배 후 각 노드의 상태 정보 및 작업이 각 노드에서 소모하는 부하 정보를 부하 테이블에서 관리하는 단계; 및
    상기 부하 테이블의 정보를 주기적으로 확인하여, 부하의 발생 원인을 탐색하고, 부하의 발생 원인에 따라 각 노드의 CPU 사용량, 메모리 사용량, 네트워크 부하를 이용하여 동적 잡 스케쥴링을 통해 작업을 재분배하는 단계를 포함하며,
    상기 부하의 발생 원인이 작업 계산 복잡도로 인한 CPU 사용량의 증가에 따른 부하인 경우,
    CPU의 사용량을 통해 노드의 부하를 구분하고, 상대적으로 부하가 적은 유휴 노드에 작업을 재분배할 수 있는지 확인하고, 재분배가 가능하면 해당 작업을 해당 유휴 노드에 재분배할 때 예상되는 처리량을 구하고, 그 결과 해당 유휴 노드에 부하가 발생하지 않는 것으로 판단되면 해당 작업을 해당 유휴 노드에 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 방법.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 부하의 발생 원인이 데이터 폭주로 인해 발생한 부하인 경우,
    가용 메모리가 있으면, 유휴 메모리의 양이 가장 큰 노드에 해당 작업을 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 방법.
  4. 청구항 3에 있어서,
    메모리 부하 노드의 작업 중 메모리 처리 비용이 가작 적은 작업을 선택하여, 메모리의 유휴량이 가장 큰 유휴 노드에 최악 적합(Worst-fit) 방식을 적용하여 작업을 재분배하며,
    이때, 최악 적합 방식을 만족하는 노드가 없으면, 최적 적합을 만족하는 노드를 선택하여 작업을 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 방법.
  5. 청구항 3에 있어서,
    가용 메모리가 없으면, 작업의 데드라인을 확인하여 상대적으로 처리가 급한 작업과 처리가 급하지 않은 작업으로 구분하고, 처리가 급한 작업을 노드의 처리량과 메모리의 크기가 상대적으로 큰 노드에 재분배하고, 처리가 급하지 않은 작업을 노드의 처리량과 메모리의 크기가 상대적으로 작은 노드에 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 방법.
  6. 청구항 1에 있어서,
    상기 부하의 발생 원인이 한 노드에 작업이 집중되어 CPU와 메모리 사용량이 증가하는 것인 경우,
    우선적으로 가용 메모리를 갖고 있는 유휴 노드에 대해 메모리의 크기가 큰 순서대로 우선 순위를 결정하여 작업을 재분배하고, 이후 CPU의 사용량에 따라 사용량이 비교적 적은 노드를 선택하여 작업을 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 방법.
  7. 분산 인-메모리(In-Memory) 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템에서,
    작업을 수행하는 워커(Worker)와, 부하를 확인하기 위한 N모니터(NMonitor)를 포함하여 구성되는 하나 이상의 워커 노드;
    상기 워커노드의 상태정보를 저장하는 쥬키퍼 노드; 및
    상기 쥬키퍼와 통신하며, 상기 워커 노드의 상태 정보와, 상기 워커 노드에서 수행 중인 작업 정보를 저장하기 위한 부하 테이블과, 상기 부하 테이블을 확인하여 스케쥴링(scheduling)을 진행하는 스케쥴러를 포함하여 이루어지는 님버스 노드를 포함하되,
    상기 스케쥴러는 스트림 데이터가 입력되면, 상기 부하 테이블로부터 CPU 사용량, 유휴 메모리의 크기, 네트워크 부하를 고려하여 각 워커 노드의 부하를 계산하고, 계산된 각 노드의 부하에 따라 각 워커 노드에 우선순위를 부여하여 작업을 분배하는 정적 잡 스케쥴링을 수행하고, 상기 부하 테이블의 정보를 주기적으로 확인하여, 부하의 발생 원인을 탐색하고, 부하의 발생 원인에 따라 각 워커 노드의 CPU 사용량, 메모리 사용량, 네트워크 부하를 이용하여 동적 잡 스케쥴링을 통해 작업을 재분배하며,
    상기 부하의 발생 원인이 작업 계산 복잡도로 인한 CPU 사용량의 증가에 따른 부하인 경우,
    상기 스케쥴러는 CPU의 사용량을 통해 워커 노드의 부하를 구분하고, 상대적으로 부하가 적은 유휴 워커 노드에 작업을 재분배할 수 있는지 확인하고, 재분배가 가능하면 해당 작업을 해당 유휴 워커 노드에 재분배할 때 예상되는 처리량을 구하고, 그 결과 해당 유휴 워커 노드에 부하가 발생하지 않는 것으로 판단되면 해당 작업을 해당 유휴 워커 노드에 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 시스템.
  8. 삭제
  9. 청구항 7에 있어서,
    상기 부하의 발생 원인이 데이터 폭주로 인해 발생한 부하인 경우,
    상기 스케쥴러는 가용 메모리가 있으면, 유휴 메모리의 양이 가장 큰 워커 노드에 해당 작업을 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 시스템.
  10. 청구항 9에 있어서,
    상기 스케쥴러는 메모리 부하 노드의 작업 중 메모리 처리 비용이 가작 적은 작업을 선택하여, 메모리의 유휴량이 가장 큰 유휴 워커 노드에 최악 적합(Worst-fit) 방식을 적용하여 작업을 재분배하며, 이때 최악 적합 방식을 만족하는 워커 노드가 없으면, 최적 적합을 만족하는 워커 노드를 선택하여 작업을 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 시스템.
  11. 청구항 9에 있어서,
    상기 스케쥴러는 가용 메모리가 없으면, 작업의 데드라인을 확인하여 상대적으로 처리가 급한 작업과 처리가 급하지 않은 작업으로 구분하고, 처리가 급한 작업을 처리량과 메모리의 크기가 상대적으로 큰 워커 노드에 재분배하고, 처리가 급하지 않은 작업을 처리량과 메모리의 크기가 상대적으로 작은 워커 노드에 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 시스템.
  12. 청구항 7에 있어서,
    상기 부하의 발생 원인이 한 워커 노드에 작업이 집중되어 CPU와 메모리 사용량이 증가하는 것인 경우,
    상기 스케쥴러는 우선적으로 가용 메모리를 갖고 있는 유휴 워커 노드에 대해 메모리의 크기가 큰 순서대로 우선 순위를 결정하여 작업을 재분배하고, 이후 CPU의 사용량에 따라 사용량이 비교적 적은 워커 노드를 선택하여 작업을 재분배하는 것을 특징으로 하는 동적 잡 스케쥴링 시스템.
KR1020160175725A 2016-12-21 2016-12-21 분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법 KR101886072B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160175725A KR101886072B1 (ko) 2016-12-21 2016-12-21 분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160175725A KR101886072B1 (ko) 2016-12-21 2016-12-21 분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20180072295A KR20180072295A (ko) 2018-06-29
KR101886072B1 true KR101886072B1 (ko) 2018-08-08

Family

ID=62781095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160175725A KR101886072B1 (ko) 2016-12-21 2016-12-21 분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101886072B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102073029B1 (ko) * 2018-07-31 2020-02-05 동국대학교 산학협력단 태스크 할당 장치 및 방법, 태스크 재할당 요청 장치 및 방법
CN109766363B (zh) * 2019-01-08 2021-06-11 北京江融信科技有限公司 流式数据处理方法、系统、电子设备及存储介质
KR102368840B1 (ko) 2019-01-25 2022-03-02 한국전자기술연구원 커넥티드카 빅데이터 수집장치, 시스템 및 방법
CN111556343A (zh) * 2020-03-30 2020-08-18 重庆厚齐科技有限公司 一种共享智能节点的视频传输系统
CN114640680B (zh) * 2020-11-30 2024-04-05 南宁富联富桂精密工业有限公司 负载均衡方法、装置及计算机可读存储介质
CN113934782A (zh) * 2021-09-22 2022-01-14 易联众智鼎(厦门)科技有限公司 一种基于dag模型的数据etl系统及使用方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0737929A2 (en) 1995-03-16 1996-10-16 Kabushiki Kaisha Toshiba Stream scheduling system for real time stream server
JP2014174597A (ja) 2013-03-06 2014-09-22 Kddi Corp インメモリ型分散データベース、データ分散方法及びプログラム
CN105824618A (zh) * 2016-03-10 2016-08-03 浪潮软件集团有限公司 一种关于Storm使用的实时消息处理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8532032B2 (en) 2008-03-18 2013-09-10 Blackberry Limited Dynamic scheduling overwriting of semi-persistent allocation in an uplink
KR20140060962A (ko) * 2012-11-13 2014-05-21 주식회사 유투앤 네트워크 분산 파일 시스템에서 유휴 리소스를 이용한 다중 서비스 제공 시스템 및 방법
KR101694287B1 (ko) * 2013-05-23 2017-01-23 한국전자통신연구원 스트림 처리 태스크 관리 장치 및 방법
KR101622810B1 (ko) * 2013-11-29 2016-05-31 주식회사 포스코아이씨티 빅데이터 분산 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0737929A2 (en) 1995-03-16 1996-10-16 Kabushiki Kaisha Toshiba Stream scheduling system for real time stream server
JP2014174597A (ja) 2013-03-06 2014-09-22 Kddi Corp インメモリ型分散データベース、データ分散方法及びプログラム
CN105824618A (zh) * 2016-03-10 2016-08-03 浪潮软件集团有限公司 一种关于Storm使用的实时消息处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
복경수 외 6명. '빅데이터 환경에서 스트림 질의 처리를 위한 인메모리 기반 점진적 처리 기법'. 한국콘텐츠학회논문지 제16권 제2호, 2016.2, pp.163-173.

Also Published As

Publication number Publication date
KR20180072295A (ko) 2018-06-29

Similar Documents

Publication Publication Date Title
KR101886072B1 (ko) 분산 인 메모리 환경에서 실시간 스트림 데이터 처리를 위한 동적 잡 스케쥴링 시스템 및 방법
US10558498B2 (en) Method for scheduling data flow task and apparatus
US10474504B2 (en) Distributed node intra-group task scheduling method and system
US20150295970A1 (en) Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system
EP3770774B1 (en) Control method for household appliance, and household appliance
US9495214B2 (en) Dynamic resource allocations method, systems, and program
US7752628B2 (en) Method and apparatus for reassigning objects to processing units
US9218213B2 (en) Dynamic placement of heterogeneous workloads
US8818989B2 (en) Memory usage query governor
US9286123B2 (en) Apparatus and method for managing stream processing tasks
WO2017166803A1 (zh) 一种资源调度方法及装置
US20100125847A1 (en) Job managing device, job managing method and job managing program
US8627330B2 (en) Workload manager managing a workload of an enterprise data warehouse
KR102585591B1 (ko) 이기종 프로세서 기반 엣지 시스템에서 slo 달성을 위한 인공지능 추론 스케쥴러
CN103294548B (zh) 一种基于分布式文件系统的io请求调度方法和系统
KR101471749B1 (ko) 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법
CN109861850B (zh) 一种基于sla的无状态云工作流负载均衡调度的方法
Kovalchuk et al. Deadline-driven resource management within urgent computing cyberinfrastructure
CN103248622B (zh) 一种自动伸缩的在线视频服务质量保障方法及系统
KR101630125B1 (ko) 클라우드 컴퓨팅 자원관리 시스템에서의 자원 요구량 예측 방법
US10733023B1 (en) Oversubscription scheduling
CN114866563A (zh) 扩容方法、装置、系统和存储介质
CN109150759B (zh) 一种渐进式非阻塞机会资源预留方法及系统
KR101595967B1 (ko) 데드라인 부여된 작업의 분산 처리 성능 향상을 위한 맵리듀스 스케쥴링 시스템 및 방법
Wang et al. Maintaining data temporal consistency in distributed real-time systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant