KR101924466B1 - 하둡 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법 - Google Patents

하둡 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법 Download PDF

Info

Publication number
KR101924466B1
KR101924466B1 KR1020170104270A KR20170104270A KR101924466B1 KR 101924466 B1 KR101924466 B1 KR 101924466B1 KR 1020170104270 A KR1020170104270 A KR 1020170104270A KR 20170104270 A KR20170104270 A KR 20170104270A KR 101924466 B1 KR101924466 B1 KR 101924466B1
Authority
KR
South Korea
Prior art keywords
data
cache
task
scheduling
cached
Prior art date
Application number
KR1020170104270A
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 KR1020170104270A priority Critical patent/KR101924466B1/ko
Application granted granted Critical
Publication of KR101924466B1 publication Critical patent/KR101924466B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 하둡(Hadoop) 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법에 관한 것으로서, 일실시예에 따른 스케쥴링 장치는 시스템 콜을 통해 각 노드에서 어떤 데이터를 캐시하고 있는지를 확인하여, 캐시를 탐사하는 캐시 탐사 처리부, 및 상기 탐사된 결과를 반영하여 태스크의 우선순위를 결정하고, 상기 결정된 우선순위에 기초하여 상기 태스크를 할당하는 태스크 할당부를 포함할 수 있다.

Description

하둡 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법{APPARATUS AND METHOD OF CACHE-AWARE TASK SCHEDULING FOR HADOOP-BASED SYSTEMS}
본 발명은 하둡(Hadoop) 기반 시스템을 위한 캐시 인지 작업 스케줄링하는 기술적 사상에 관한 것이다.
오늘날 대용량 데이터가 폭발적으로 증가함에 따라 데이터 수집형 클러스터 컴퓨팅 시스템은 새로운 데이터 처리 패러다임으로 발전했다. 가장 유명한 데이터 처리 프레임 워크 중 하나인 하둡(Hadoop)은 대규모 클러스터의 여러 노드에서 여러 작업을 병렬로 실행하여 높은 성능을 달성하므로, 작업 스케줄링은 전반적인 성능에 영향을 미치는 가장 중요한 요인 중 하나이다. 최신 운영 체제에서 캐싱은 로컬 디스크 액세스 시간을 향상시키고 디스크 액세스 없이 주 메모리에서 데이터를 제공하는데 사용된다. 그러나 이러한 옵션은 공유되지 않은 분산 환경에서 캐시된 데이터를 추적할 수 없기 때문에 하둡 기반 시스템의 기존 작업 스케줄링 방법에서 제대로 활용되지 않는다. 본 발명에서는 운영체제의 버퍼 캐시를 활용하고 캐시된 데이터를 고려하여 노드에 작업을 할당할 수 있는 하둡 기반 시스템을 위한 캐시 인지 태스크 스케줄링 방법인 CATS(cache-aware task scheduling)를 제안한다. 포괄적인 실험을 통해 제안된 캐시 인식 스케줄링이 다양한 워크로드 유형 및 데이터 크기에 대한 전반적인 작업 실행 시간을 향상시킴을 확인하였다.
빅 데이터 프로세싱은 지난 10년 동안 광범위하게 연구된 분야 중 하나이지만 데이터 처리 성능을 더욱 향상시키기 위한 노력이 여전히 필요하다.
높은 데이터 처리 속도에 대한 필요성 때문에 분산 컴퓨팅 시대가 열렸다. 고가의 하이엔드 서버가 클러스터 컴퓨팅이라고 하는 병렬로 작동하는 많은 저렴한 컴퓨터로 대체되었다. 클러스터는 보통 로컬 네트워크를 통해 연결된 여러 컴퓨터 노드로 구성될 수 있다. 클러스터 컴퓨팅이 제공하는 막대한 처리 능력 덕분에 이전보다 더 빠른 데이터 처리 속도를 달성할 수 있다.
비공유 아키텍처는 각 노드가 독립적이고 CPU나 메모리와 같은 리소스가 노드 간에 공유되지 않는 잘 알려진 분산 컴퓨팅 스타일 중 하나이다. 비공유 아키텍처의 이점은 다음과 같다. 우선 클러스터에 컴퓨터 노드를 추가하면 확장이 가능하다. 둘째, 데이터 복제는 데이터 손실을 방지하므로 단일 실패 지점(single point of failure)의 존재를 제거할 수 있다.
Apache Hadoop은 비공유 아키텍처에서 실행되는 분산 시스템의 사실상 표준이다. 하둡은 파일을 데이터 액세스의 기본 단위로 사용되는 작은 블록으로 분할할 수 있다. 블록은 여러 노드로 복제되어 사고 또는 고장으로 인해 손상되거나 액세스할 수 없는 상황으로부터 데이터를 보호할 수 있다. 블록 복제는 또한 유휴 노드에서 데이터를 제공할 수 있는 데이터 액세스에 유연성을 제공하여 사용량이 많은 노드에서 작업 부하가 집중되는 것을 방지할 수 있다.
하둡에서 파일을 처리하는 경우 새로운 문제가 발생할 수 있다. 예컨대, 작업 부하를 여러 노드로 동시에 실행하도록 예약된 작은 작업으로 분할해야 한다. 효율적인 작업 실행을 위해 작업 스케줄러는 클러스터의 리소스를 고려하여 작업을 배포해야 하다. 여기서 리소스는 프로세서, 메모리, 디스크 및 네트워크 대역폭으로 구성될 수 있다.
도 1은 5 회 연속 MapReduce 프로그램 및 Apache Tajo 쿼리의 캐시 적중률을 나타내는 도면이다.
비즈니스 인텔리전스 및 과학 탐구와 같은 많은 데이터 분석 응용 프로그램에서 여러 작업의 대상 데이터가 상당히 중복될 수 있다. 예컨대, 일정 기간 동안 수집된 트랜잭션 로그를 사용하여 주식 동향 분석을 수행하는 주식 분석가를 생각할 수 있다. 분석가는 "X 달러 이상 거래된 주식" 또는 "YYYY-MM-DD 에서 가장 높은 가격을 가진 주식"을 파라미터 'X' 또는 'YYYY-MM-DD'을 변환하여 처리 가능하다.
이 예에서 분석가는 동일한 데이터 세트에 액세스하는 여러 쿼리를 실행하고, 데이터 캐시는 액세스 속도에 상당한 성능 향상을 제공할 수 있다.
그러나 메모리가 노드를 통해 공유되지 않기 때문에 데이터 캐시는 하둡에서 완전히 활용되지 않으며, 이는 공유되지 않은 분산 시스템의 근본적인 한계이다.
하둡에서 비효율적인 캐시 활용을 강조하기 위해 클러스터의 모든 노드에서 캐시 적중률을 보여주는 간단한 테스트를 고려할 수 있다. 이 실험에서는 각 노드에 16GB의 주 메모리가 있는 사내 30 노드 클러스터를 사용했다.
사전 테스트는 MapReduce 프로그램과 Apache Tajo의 쿼리 실행(SQL-on-Hadoop 시스템) 모두에서 수행되었다. 이 시스템은 두 가지가 모두 약 74GB의 데이터에 액세스하는 많은 작업(약 600 개)으로 구성된다. 도 1은 5 회 연속 실행 중에 데이터에 반복적으로 액세스할 때 캐시가 얼마나 많은 피해를 입었는지 보여준다. 데이터는 첫 번째 실행 후에 메모리에 저장되기 때문에 캐시를 수행할 수 있는 기회는 후속 실행에서 발생하다.
그러나 전체 데이터(74GB)를 30 노드 클러스터 (480GB)의 메모리에 저장할 수 있는 경우에도 관찰된 캐시 적중률은 낮다. 캐시 적중률은 최대 값을 기록하는 대신 실행이 계속되면 증가하다. 이는 캐시가 하둡 기반 시스템에서 제대로 활용되지 않는다는 것을 의미하는 것으로서, 위의 실험을 통해 하둡 기반 시스템에서 캐시가 제대로 활용되지 않음을 확인할 수 있다.
한국특허출원 제2013-0147167호 "클라우드 컴퓨팅 환경에서의 하둡-기반의 분산 멀티미디어 스트리밍 서비스 제공 시스템 및 스트리밍 서비스의 제공 방법" 한국특허출원 제2011-0006180호 "하둡 맵리듀스에서 네트워크 패킷 분석을 위한 입력포맷 추출방법"
본 발명에서 CATS는 데이터 저장 영역의 또 다른 계층인 메모리 계층을 고려하고 캐싱된 데이터의 이점을 취하는 것을 목적으로 한다.
또한, 본 발명은 캐시 인지 스케줄링이 전통적인 디스크 기반 작업 스케줄링뿐만 아니라 다른 최첨단 캐시 인지 스케줄링 방법보다 훨씬 빠른 속도를 제공하는 것을 목적으로 한다.
또한, 본 발명은 캐시된 데이터를 효율적인 작업 스케줄링에 사용하는 반면 캐싱 자체는 독립적인 운영 체제에서 관리하는 것을 목적으로 한다.
일 실시 예에 따른 스케쥴링 장치는 시스템 콜을 통해 각 노드에서 어떤 데이터를 캐시하고 있는지를 확인하여, 캐시를 탐사하는 캐시 탐사 처리부, 및 상기 탐사된 결과를 반영하여 태스크의 우선순위를 결정하고, 상기 결정된 우선순위에 기초하여 상기 태스크를 할당하는 태스크 할당부를 포함할 수 있다.
일 실시 예에 따른 스케쥴링 방법은 시스템 콜을 통해 각 노드에서 어떤 데이터를 캐시하고 있는지를 확인하여, 캐시를 탐사하는 단계, 및 상기 탐사된 결과를 반영하여 태스크의 우선순위를 결정하고, 상기 결정된 우선순위에 기초하여 상기 태스크를 할당하는 단계를 포함할 수 있다.
본 발명에 따르면, CATS는 데이터 저장 영역의 또 다른 계층인 메모리 계층을 고려하고 캐싱된 데이터의 이점을 취할 수 있다.
또한, 캐시 인지 스케줄링이 전통적인 디스크 기반 작업 스케줄링뿐만 아니라 다른 최첨단 캐시 인지 스케줄링 방법보다 훨씬 빠른 속도를 제공할 수 있다.
또한, 캐시된 데이터를 효율적인 작업 스케줄링에 사용하는 반면 캐싱 자체는 독립적인 운영 체제에서 관리할 수 있다.
또한, 큰 메모리 공간없이 모든 목표 데이터를 저장할 수 있다.
도 1은 5 회 연속 MapReduce 프로그램 및 Apache Tajo 쿼리의 캐시 적중률을 나타내는 도면이다.
도 2는 디스크 기반 스케줄링 알고리즘을 사용하는 태스크 분산을 설명하기 위한 도면이다.
도 3은 디스크 기반 스케줄링을 설명하는 도면이다.
도 4는 일 실시 예에 따른 스케쥴링 장치를 설명하는 도면이다.
도 5는 제안된 스케줄링의 실행 흐름을 설명하는 도면이다.
도 6은 HDFS 블록을 조사하기 위해 두 개의 시스템 호출인 mmap과 mincore가 사용하는 실시 예를 나타내는 도면이다.
도 7은 노드에서 조사된 데이터의 크기를 변화하고, 이때 캐시를 조사하는데 걸리는 시간을 나타내는 도면이다.
도 8은 CATS 방법으로 데이터에 두 번 액세스하는 실시 예를 설명하는 도면이다.
도 9는 일 실시 예에 따른 스케쥴링 방법을 설명하는 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시 예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시 예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 2는 디스크 기반 스케줄링 알고리즘을 사용하는 태스크 분산을 설명하기 위한 도면이다.
하둡 기반 시스템의 작업 스케줄링 알고리즘은 각 노드의 캐싱된 데이터를 고려하지 않으므로 높은 메모리 속도의 엄청난 이점을 낭비할 수 있다.
본 발명에서는 하둡 기반 시스템에서 CATS(Cache-Aware Task Scheduling)를 제안하며, CATS는 데이터 저장 영역의 또 다른 계층인 메모리 계층을 고려하고 캐싱된 데이터의 이점을 취할 수 있다. 특히, 본 발명에서 제시한 접근 방법은 운영체제의 버퍼 캐시를 탐색하여 클러스터에 있는 각 노드의 캐시된 데이터에 대한 정보를 얻은 다음 이를 고려하여 작업을 스케줄링할 수 있다.
본 발명에 따르면, SQLon-Hadoop 시스템인 Apache Tajo (큰 데이터 분석에 사용될 수 있는 오픈 소스 데이터웨어 하우스)에서 다양한 매개 변수를 사용하여 제안된 알고리즘의 성능을 평가할 수 있다. 결과적으로, 캐시 인지 스케줄링이 전통적인 디스크 기반 작업 스케줄링뿐만 아니라 다른 최첨단 캐시 인지 스케줄링 방법보다 훨씬 빠른 속도를 제공함을 확인하였다.
또한, 본 발명에서는 운영 체제의 디스크 버퍼링과 하둡의 잘못된 사용법에 대한 간략한 설명을 간단한 예제 시나리오와 함께 현재 작업 스케줄링과 함께 제공할 수 있다.
자기 디스크는 현재 하나의 일반적인 디스크에 최대 2TB를 저장할 수 있는 가장 일반적인 유형의 데이터 저장 장치이다. 그러나 디스크의 읽기 및 쓰기 속도는 최신 컴퓨터 시스템의 다른 구성 요소보다 훨씬 느리기 때문에 중요한 단점이 있다. 속도 문제로 인해 수많은 연구 조사가 디스크로 인한 성능 저하 문제를 해결할 수 있다.
요청된 데이터에 더 빠른 장치에서 액세스할 수 있으므로 캐시를 사용하여 이 문제를 해결함으로써 느린 디스크에 대한 액세스를 피할 수 있다. 캐싱(디스크 버퍼링)은 현대 운영 체제의 주요 기능 중 하나인 페이징의 일부이다. 주 메모리 공간의 미사용 영역에 데이터를 저장하기 위한 임시 메모리 저장소를 제공할 수 있다. 데이터가 두 번 이상 액세스되면 운영 체제(OS)는 디스크에서 데이터에 액세스하는 대신 메모리에서 데이터를 제공할 수 있다. 버퍼링을 위해 사용되는 메모리를 버퍼 캐시라고 할 수 있다.
특히, 버퍼 캐시는 디스크의 속도보다 메모리의 속도가 훨씬 빠른데, 디스크 버퍼링을 사용하면 반복되는 여러 번의 판독이 필요할 때 데이터 액세스의 응답 시간을 크게 줄일 수 있다. 버퍼 캐시에서 데이터에 액세스하면 디스크 대역폭이 저장되고 다른 데이터를 제공하는데 사용할 수 있기 때문에 디스크 성능에 영향을 미칠 수 있다.
하둡 기반 시스템에서도 디스크 버퍼링을 사용할 수 있다. 노드에서 데이터를 읽을 때 노드는 자체 메모리에 데이터를 캐시할 수 있다. 그러나 하둡 기반 시스템에서 디스크 버퍼링의 이점은 비공유 아키텍처의 특성으로 인해 활용이 어렵다. 분산형 공유 시스템에서는 모든 노드가 함께 작동하지만 단일 시스템에 통합되지 않는다. 즉, 노드는 자신의 OS에 종속되어 있기 때문에 다른 노드의 메모리 공간에 액세스할 수 없다. 따라서 노드의 버퍼 캐시는 다른 노드와 관련이 적다.
하둡 기반 시스템은 대개 데이터 집약적인 작업을 처리하므로 데이터 액세스에 소요되는 시간을 줄이기 위해 스케줄링 알고리즘이 개발될 수 있다.
하둡 기반 시스템에서 작업을 예약하는 데 가장 많이 사용되는 구성표는 로컬 디스크의 데이터에 직접 액세스할 수 있도록 노드에 작업을 할당하는 것이다. 이 경우 네트워크 전송이 불필요하고 데이터를 로컬에서 읽을 수 있으므로 일부 작업에서 성능이 크게 향상될 수 있다.
도 2는 세 가지 태스크 T = {t1, t2, t3}가 디스크 지역성 기반 스케줄링 알고리즘을 사용하여 스케줄되는 예제 시나리오를 보여준다. 여기서는 클러스터의 동일한 랙에 속한 세 개의 작업자 노드 N = {n1, n2, n3}이 있다고 가정한다. 각각의 작업 t1, t2 및 t3이 블록이 2의 인자로 복제되는 데이터 블록 b1, b2 및 b3에 각각 액세스한다고 가정할 수 있다.
t1, t2, t3는 데이터 블록 b1, b2, b3를 읽기 위한 태스크들을 나타내고, 각 노드 n1, n2, n3에는 데이터 블록이 두 개씩 저장되어 있다. 또한, 디스크에 저장된 데이터를 고려하여 스케줄링할 경우 위와 같이 스케줄링 될 수 있다.
작업 일정은 반복되는 과정이며 모든 작업이 노드에 할당될 때까지 반복된다.
1. 처음에는 세 가지 작업, 즉 일정을 잡아야 하는 T = {t1, t2, t3}이 있다. 2a에서 보는 바와 같이, 노드 n1에는 두 개의 노드 로컬 태스크 T<node, n1> = {t1, t2}가 존재하므로 스케줄링 알고리즘은 T<node, n1>에서 임의로 t1을 선택하여 n1에 할당한다.
(b)에서 보는 바와 같이 t2는 n2로 할당될 수 있다. 또한, (c)에서 보는 바와 같이, t3을 n3에 할당한 후에는 T에 남아있는 작업이 없다. 따라서 작업 예약을 중지할 수 있다.
디스크 기반 시스템으로서 스케줄링 전략은 네트워크 전송을 피하기 위해 로컬 디스크의 대상 데이터가 있는 노드에 작업을 할당하는 것이 적절하다. 그러나 작업 스케줄링 중에 캐시된 데이터를 모르는 경우 데이터 액세스 속도를 가속화 할 수 있는 좋은 기회를 잃을 수 있다. 메모리가 저렴하기 때문에 시스템에 상당한 양의 메모리가 있을 수 있다. 이 경우, 많은 양의 데이터가 메모리, 즉 버퍼 캐시에 저장 될 수 있다. 데이터를 한 번 읽으면 데이터가 메모리에 캐시된 것으로 간주하고 느린 디스크에서 데이터를 가져 오는 대신 해당 데이터에 대한 후속 읽기 요청을 메모리에서 제공할 수 있다. 그러나 디스크 지역성 기반 알고리즘은 캐시된 데이터의 존재를 인식하지 못하기 때문에 캐시 된 데이터의 활용도가 크게 떨어진다.
도 3은 디스크 기반 스케줄링을 설명하는 도면이다.
도 3은 도 2와 같은 상황에서 메모리의 상태까지 나타낸 것으로서, (a)는 b1, b2, b3 데이터를 각각 n1, n2, n3에서 읽고 메모리에 캐시된 모습을 나타낸다. 또한, (b)는 새로이 태스크 t2가 노드 n1에 할당되는 것을 나타내는데(데이터 블록 b2가 n1에도 있기 때문), 이때 n1에는 b2가 메모리에 없으므로 디스크에서 읽게 된다. 이와 같은 상황에서는 메모리에 캐시된 데이터를 전혀 사용하지 못하는 문제가 발생할 수 있다.
디스크 기반 스케줄링 방법으로 데이터 블록에 두 번 액세스할 수 있다. 이때, 점선으로 표시된 사각형은 버퍼 캐시를 나타낸다.
첫 번째 실행 후 데이터 블록은 각 작업자 노드의 버퍼 캐시에 캐시되고 두 번째 실행 블록의 작업을 각 작업자 노드의 버퍼 캐시로 예약 할 때 b, c에서 캐시 미스가 발생한다.
두 번째 실행에서는 이전 실행과 동일하게 알고리즘이 먼저 T에서 노드 n1에 태스크를 할당할 수 있다. 그러나 첫 번째 실행과 달리
Figure 112017079459107-pat00001
은 스케줄링 알고리즘에 의해 무작위로 선택되고 n1 (도 3b)에 할당되어 캐시 미스가 발생할 수 있다.
따라서 이 경우 대상 데이터 블록 b2를 디스크에서 읽어야 한다. 도 3의 c에서 보는 바와 같이, 남은 작업을 n2와 n3에 할당할 때 동일한 문제가 발생할 수 있다.
이는 디스크 기반 작업 스케줄링 알고리즘의 문제점을 보여준다. 즉, 캐시 된 데이터를 추적할 수 없기 때문에 캐시의 이점을 충분히 활용할 수 없다. 본 발명에서는 이 문제에 초점을 맞추고 간단하지만 효과적인 해결책을 제시할 수 있다. 본 발명에서는 분산 환경에 대한 캐시 프로빙 스키마와 함께 캐시 인지 작업 스케줄링 알고리즘을 제공할 수 있다.
Apache Tajo는 하둡에서 실행되는 관계형 분산 데이터웨어 하우스 시스템으로서, 대용량 데이터에 대한 확장 가능한 쿼리 처리를 위해 설계되었다. Tajo는 자체 쿼리 엔진과 쿼리 플래너를 사용하여 빠른 쿼리 실행을 제공할 수 있다.
Tajo는 MapReduce의 Key-Value 쌍 또는 Spark의 RDD와 같은 다른 시스템에 필수적인 새로운 데이터 구조를 요구하지 않고 데이터를 직접 처리하므로 데이터에 액세스하기 위한 오버 헤드가 거의 없다. 본 발명에서는 알고리즘을 평가하기 위해 Apache Tajo를 사용할 수 있다.
분산 시스템에 대한 스케줄링을 향상시키기 위해 오랜 기간 동안 많은 연구가 수행되어왔다. 이러한 연구들을 기반으로 하는 본 발명은 왜곡된 작업이 전반적인 작업 응답 시간을 해칠 수 있으므로 로드 균형 조정에 중점을 둘 수 있다. 사용 가능한 리소스를 고려하여 작업 부하를 분산시킴으로써 분산 시스템이 효과적으로 처리할 수 있다.
더 높은 데이터 지역성을 달성하기 위해, 원격 데이터를 획득하는데 필요한 시간이 자체 디스크에 있는 데이터를 가지고 있는 노드를 기다리는 시간보다 훨씬 길다는 가정하에 지연 스케줄링 방법을 제안할 수 있다.
스케줄러가 자체 디스크에서 로컬로 액세스할 수 있는 데이터가 없는 노드를 발견하면 스케줄러는 자신의 디스크에 있는 데이터에 액세스할 수 있다.
기존의 연구들에서 구현된 스케줄링 알고리즘인 Quincy는 그래프 모델을 채택함으로써 문제를 해결할 수 있다. 그래프에서 지역과 공정성 모두를 고려한 태스크 분포는 그래프에서 최소 비용 흐름을 찾는 것으로 표현된다.
기존의 연구들에서는 마감 시간 제약 조건을 갖는 작업 스케줄링 방법을 개발할 수 있다. 이 스케줄링 알고리즘은 사용자가 지정한 최종 기한 전에 작업을 완료하려고 시도할 수 있다. 작업이 예약되기 전에 클러스터의 데이터 분포가 데이터 지역성을 향상시키는 것으로 간주된 다음 예상 처리 시간이 계산된다. 그런 다음 스케줄러는 클러스터 기능을 고려하여 처리해야 할 작업의 작업을 결정할 수 있다.
이러한 모든 스케줄링 방법은 디스크에서 데이터에 액세스한다고 가정할 수 있다.
사용자가 메인 메모리에 특정 데이터를 보유하도록 하는 캐시 관리 및/또는 인 메모리 시스템이 있다. 이러한 시스템은 사용자가 메모리 공간을 희생하여 데이터 액세스 속도를 가속화하려는 경우에 사용된다. 수동 캐시 관리 시스템의 전형적인 예는 Hadoop 버전 2와 함께 도입된 Hadoop 중앙 집중식 캐시로 알려져 있는 Hadoop에 의해 제공될 수 있다.
연구들에 따르면, 같은 일부 분산 데이터 처리 프레임 워크에도 이 메커니즘이 있을 수 있다. 또한, MapReduce 작업에 대한 입력 데이터를 캐시하는 동일한 메커니즘을 제공할 수도 있다. 이러한 수동 캐싱 메커니즘을 사용하려면 사용자가 캐시의 크기 및/또는 캐시할 데이터를 알고 지정해야만 한다.
MapReduce의 읽기 속도를 높이기 위해 추후 사용을 위해 메모리에 입력된 입력 데이터를 저장하는 여러 연구가 수행되었다. 그것들은 세부적으로 다르지만 같은 생각을 가지고 있다. 지도 기능이 처음 수행되면 생성된 키-값 쌍을 메모리에 저장한 다음 동일한 데이터가 요청될 때 다시 사용할 수 있다. 그러나 이러한 캐싱 전략은 입력 형식이 서로 다르면 적용할 수 없다. 응용 프로그램이 이미 캐시되었지만 형식이 다른 데이터를 요청하면 캐시된 데이터는 쓸모 없게 된다.
한편, 본 발명에 따른 접근 방식은 충분한 메모리를 가정하지 않다. 본 발명에서는 캐시된 데이터를 효율적인 작업 스케줄링에 사용하는 반면 캐싱 자체는 독립적인 운영 체제에서 관리할 수 있다. 더 큰 메모리가 더 나은 성능을 보여줄 수 있지만, 본 방법에서는 모든 목표 데이터를 저장할 수 있는 큰 메모리 공간을 필요로 하지 않는다.
한편, LARD의 기본 원칙은 데이터가 이전 요청이 처리된 노드의 버퍼 캐시에서 발견될 것으로 예상된다는 것이다. 대부분 작은 파일로 구성되며 작업 부하는 읽기 전용인 웹 서버와 같은 응용 프로그램에 매우 효과적이다. 그러나 알고리즘을 사용하면 캐시된 데이터가 메모리에서 자주 제거될 때 성능이 저하될 수 있다. 이는 데이터 크기가 메모리의 크기보다 클 때 발생할 수 있다. 알고리즘이 잘못된 캐시 예측을 하면 더 많은 디스크 액세스 비용이 들게 된다.
도 4는 일 실시 예에 따른 스케쥴링 장치를 설명하는 도면이다.
결국, 스케쥴링 장치(400)는 데이터 저장 영역의 또 다른 계층인 메모리 계층을 고려하고 캐싱된 데이터의 이점을 취할 수 있다. 또한, 캐시 인식 스케줄링이 전통적인 디스크 기반 작업 스케줄링뿐만 아니라 다른 최첨단 캐시 인지 스케줄링 방법보다 훨씬 빠른 속도를 제공할 수 있다. 뿐만 아니라, 본 발명에 따른 접근 방식은 충분한 메모리를 가정하지 않고, 캐시된 데이터를 효율적인 작업 스케줄링에 사용하는 반면 캐싱 자체는 독립적인 운영 체제에서 관리가 가능하다.
이를 위해, 스케쥴링 장치(400)는 캐시 탐사 처리부(410)와 태스크 할당부(420)를 포함할 수 있다.
캐시된 데이터를 고려하지 않고 디스크에서만 데이터를 읽는다고 가정할 수 있다. 또한, 사용자가 미리 모든 데이터를 메모리에 저장시켜 놓는 시스템을 고려할 수 있는데, 이때 메모리가 데이터보다 큰 상황을 가정하거나, 데이터 중 일부만을 저장하도록 하는 한계가 존재할 수 있다.
한편, 이전에 데이터를 요청했던 노드에 캐시가 되어있을 것을 예상하여 해당 노드에 같은 데이터를 다시 요청할 수 있는데, 데이터가 큰 경우 이전에 읽었던 데이터 캐시가 메모리 부족으로 없어질 수 있기 때문에 예상이 틀릴 수 있다.
먼저, 캐시 탐사 처리부(410)는 시스템 콜을 통해 각 노드에서 어떤 데이터를 캐시하고 있는지를 확인하여, 캐시를 탐사할 수 있다.
다음으로, 태스크 할당부(420)는 탐사된 결과를 반영하여 태스크의 우선순위를 결정하고, 결정된 우선순위에 기초하여 태스크를 할당할 수 있다.
캐시 탐사 처리부(410)는 스케줄링이 필요한 경우에서, 필요한 데이터에 대해서만 캐시 탐사를 수행할 수 있다.
각 노드에서 어떤 데이터를 캐시하고 있는지 확인하는 것이 중요한데, 버퍼 캐시는 운영체제가 관리하기 때문에 시스템 콜을 통해 어떤 데이터가 저장되어 있는지 확인할 수 있다.
캐시 탐사 처리부(410)는 스케줄링이 필요할 때, 필요한 데이터에 대해서만 캐시 탐사가 수행되도록 하고, 캐시 데이터는 사용자 개입 없이 바뀔 수 있으므로 항상 최신의 캐시 상태 확인이 필요하다.
한편, 캐시 탐사 처리부(410)는 스케줄링할 때의 최신 캐시만을 알면 충분하므로, 계속해서 모든 데이터에 대해 탐사를 할 필요는 없다.
또한, 캐시 탐사 처리부(410)는 데이터 블록을 가상 메모리 주소로 사상하여, 사상된 데이터에 해당하는 페이지가 메모리에 존재하는지를 확인할 수 있다. 예를 들면, Linux system calls과 같은 mincore, mmap 시스템콜을 활용할 수 있다. 이를 통해, 데이터 블록을 가상 메모리 주소로 사상하여 그 데이터에 해당하는 페이지가 메모리에 존재하는지 확인이 가능하다.
태스크 할당부(420)는 각 노드에 캐시된 데이터를 확인하고, 확인 결과, 가장 많이 캐시된 데이터를 읽는 태스크를 우선 할당할 수 있다.
태스크 할당부(420)는 각 노드에 캐시된 데이터를 확인하고, 확인 결과, 캐시된 데이터를 사용하는 태스크가 더 이상 존재하지 않는다면 기존의 디스크 지역성 알고리즘을 사용하여 태스크를 할당할 수도 있다.
구체적으로, 태스크 할당부(420)는 캐시 히트를 최대화 하도록 태스크의 우선순위를 정할 수 있다. 이때, 태스크 할당부(420)는 각 노드에 캐시된 데이터를 파악하고 가장 많이 캐시된 데이터를 읽는 태스크를 우선 할당할 수 있다. 또한, 태스크 할당부(420)는 캐시된 데이터를 사용하는 태스크가 더 이상 존재하지 않는다면 기존의 디스크 지역성 알고리즘을 사용할 수 있다.
도 5는 제안된 스케줄링의 실행 흐름을 설명하는 도면이다.
기존의 디스크 기반 알고리즘과는 달리 본 발명에서 제안된 스케줄링 알고리즘은 캐시 지역을 디스크 지역이 아닌 최우선 순위로 간주할 수 있다. 특히, 제안된 방법은 다음 두 부분으로 구성될 수 있다.
먼저 각 노드의 캐시된 데이터의 정보를 얻는다. 그런 다음 캐시 히트가 최대화되도록 작업이 예약된다.
이하에서는 제안된 스케쥴링 방법의 예시적인 실행 흐름을 설명한다.
1-a)에서, 작업 스케줄러는 캐시 조사 요청을 작업자 노드에 보낸다.
1-b)에서, 작업 스케줄러로부터 요청을 받으면 각 작업자 노드는 mmap 및 mincore 시스템 콜을 사용하여 어떤 데이터 블록 (도 5 중에서 제안된 스케줄링의 실행 흐름이 노드에 할당된 전체 데이터 블록을 메모리에 캐시하는지)을 확인한다.
1-c) 그런 다음 작업 노드는 캐시 상태를 작업 스케줄러에 보고할 수 있다.
2 단계에서는 작업을 예약할 수 있다.
2-a) 작업 스케줄러는 작업자 노드의 캐시 상태를 새로 고치고 대상 데이터가 대부분 메모리에 캐시된 작업을 찾을 수 있다.
2-b) 작업 스케줄러는 이전 단계에서 식별된 가장 많이 캐시 된 작업을 작업자 노드에 할당할 수 있다. 이 두 단계는 작업이 남아 있지 않을 때까지 반복될 수 있다.
이하에서는, 각 단계에 대해 보다 상세히 설명한다.
버퍼 캐시의 최신 상태를 탐지하는 것은 캐시 인지 작업 스케줄링의 최상의 성능을 위해 중요하다. 그러나 버퍼 캐시의 내용은 운영 체제에 의해 감독되기 때문에 동적으로 변경된다. OS는 통지나 사용자의 개입 없이 데이터를 제거할 수 있다. 따라서 작업을 예약할 때마다 버퍼 캐시를 확인해야 한다.
이를 위해 캐시 검사를 동기화하여 작업 스케줄링을 시작하다. 태스크 스케줄러는 노드가 태스크를 취할 준비가 되었을 때 노드의 캐시 상태를 요구한다.
작업자 노드는 조사할 데이터 블록의 목록을 수신하면 메모리를 검사하고 각 블록의 캐시된 양을 계산한 후 작업 스케줄러에 결과를 다시 보낼 수 있다.
버퍼 캐시의 내용을 검사하려면 버퍼 캐시가 있는 커널 공간을 조사해야만 한다. 그러나, 응용 프로그램 소프트웨어는 사용자 공간에서 실행되며 커널 공간에 대한 액세스 권한이 없다. 대신 사용자 공간은 시스템 호출을 통해 커널과 상호 작용할 수 있다.
도 6은 HDFS 블록을 조사하기 위해 두 개의 시스템 호출인 mmap과 mincore가 사용하는 실시 예를 나타내는 도면이다.
데이터 블록을 mmap을 통해 가상 메모리로 사상하고, 사상된 메모리 주소를 mincore를 통해 실제 메모리에 존재하는지 확인할 수 있다.
버퍼 캐시에 있는 데이터를 검색하거나 대답하기 위해 mmap과 mincore라는 두 시스템 호출을 결합해야 한다. 여기서 mmap은 파일을 가상 메모리 주소 집합으로 매핑하고 변환하며 mincore는 해당 가상 페이지가 물리적으로 상주하는지 확인할 수 있다. 도 6의 메모리를 참고하면, 페이지에 대해 mincore의 반환 값이 true이면 버퍼 캐시의 실제 메모리에 상주할 수 있다. HDFS 블록의 페이지 반환 값을 집계하여 HDFS 블록이 실제로 버퍼 캐시에 얼마나 저장되어 있는지 검사할 수도 있다.
캐시 검사의 비용을 최소화하기 위해, 본 발명에 따른 접근법은 현재 요청 된 데이터가 작업 요청받은 노드에 캐시되어 있는지 검사할 수 있다. 작업 스케줄러는 블록 ID와 함께 캐시 조사 요청을 작업자 노드로 보낼 수 있다. 태스크 스케줄러로부터 요청을 수신하면 캐시 프로빙이 시작되어 요청된 블록이 캐싱되는지 여부를 결정할 수 있다. 이 전략을 사용하면 쿼리가 전체 데이터 중 일부만을 필요로 하는 조사 시간의 오버 헤드를 크게 줄일 수 있다.
도 7은 노드에서 조사된 데이터의 크기를 변화하는데, 이때 캐시를 조사하는데 걸리는 시간을 나타내는 도면이다. 도 7에서 알 수 있듯이 노드에서 370GB의 데이터를 조사하는 데 약 1.6 초 밖에 걸리지 않는다.
알고리즘 1은 각 노드에서 캐시가 탐색되는 단계를 설명하다.
Figure 112017079459107-pat00002
알고리즘 1에서 입력 B는 작업 스케줄러에 의해 스케쥴링될 데이터 블록의 리스트이다. 출력 C는 각 블록 bi의 캐시된 양을 나타내는 값 세트이다. 이 절차는 작업 스케줄러가 블록의 캐시 상태를 요청할 때 트리거 된다. 그런 다음 각 작업자 노드는 먼저 블록이 해당 디스크에 저장되어 있는지 여부를 확인하다. 블록이 노드에 저장되어 있는지 확인한 후 매핑된 페이지로 변환된다. 그런 다음 mincore를 사용하여 실제 메모리를 조사하고 그 결과를 부울 목록으로 제공한다 (각 항목은 페이지가 실제 메모리에 있으면 true이고 그렇지 않은 경우 false). true 리턴을 1로 집계하고 false 리턴을 0으로 집계하고 맵핑 된 페이지 수로 나누면 노드의 메모리에 현재 얼마나 많은 데이터 블록 bi가 캐시되어 있는지 정보가 제공된다. 그런 다음 작업 스케줄러에 정보로 다시 보낸다.
본 발명은 쿼리 실행 중에 캐시 히트 가능성을 극대화 할 수 있는 캐시 인지 알고리즘을 제공할 수 있다.
일반적으로 전체 시스템의 주요 병목인 디스크와 달리 메모리는 빠른 읽기 속도를 특징으로 한다. 따라서, 전체 성능을 향상시키기 위해서는, 값 비싼 디스크 액세스를 최소화하면서, 메모리로부터의 데이터 액세스를 최대화 (즉, 캐시 적중률 증가) 할 필요가 있다.
또한, 캐시된 데이터를 메모리에서 제거하지 않고 그대로 유지하는 것이 중요하다. 이전 작업이 캐시에 도달하지 않으면 운영 체제는 캐시를 교체하여 제거된 위치가 다음 작업에 필요할 수 있는 현재 데이터를 저장할 수 있다. 따라서 캐시 히트를 최대화하는 것은 현재 작업을 향상시킬 뿐만 아니라 이후 작업을 위해 캐시 히트 가능성에 영향을 미칠 수 있다.
캐시 검색이 완료되면 스케줄러는 캐시된 데이터를 인식할 수 있다. 이 정보는 이제 작업을 예약하는데 사용될 수 있다. 캐시 히트를 최대화하기 위해 특정 알고리즘을 사용할 수 있다. 스케줄러는 대상 데이터가 대부분 노드에서 캐시된 태스크를 선택하고 해당 노드에 태스크를 지정할 수 있다. 알고리즘 2는 캐시 인지 태스크 스케줄링 알고리즘으로서, 캐시 스케줄링과 함께 작업 스케줄링이 어떻게 작동하는지 보여준다.
Figure 112017079459107-pat00003
알고리즘 2에서의 입력은 태스크의 집합 T와 클러스터의 작업자 노드의 집합 N이다. CATS 알고리즘은 먼저 캐시 탐색을 통해 대상 작업자 노드의 최신 캐시 상태를 가져올 수 있다. 그런 다음 스케줄러는 대상 노드의 현재 캐시 상태를 수신할 수 있다. 캐시 상태는 가장 캐시된 데이터에 해당하는 태스크를 찾는 데 사용된다. 캐시된 데이터가 남아 있지 않으면 알고리즘은 디스크 기반 스케줄링 정책을 따를 수 있다.
도 8은 CATS 방법으로 데이터에 두 번 액세스하는 실시 예를 설명하는 도면이다.
도 8은 CATS 작동 예시로서, (a)에서 데이터를 읽어 캐시된 데이터가 있을 때 그 다음 (b, c)에서는 각 노드의 메모리에 캐시된 데이터를 확인하고 그것에 맞는 태스크를 할당할 수 있다.
도 8은 도 7과 같은 예제에 관한 CATS 알고리즘을 사용하는 세 개의 작업자 노드가 있는 시나리오를 보여준다. 첫 번째 실행 후 데이터 블록은 각 작업자 노드의 버퍼 캐시에 캐시될 수 있다(a). 두 번째 실행에서는 디스크 기반 스케줄링 알고리즘이 사용된 이전 시나리오의 결과와 달리, 캐시 인지 스케줄링 알고리즘은 캐시된 노드에서 데이터 액세스를 발생시킬 수 있다 (b, c).
도 9는 일 실시 예에 따른 스케쥴링 방법을 설명하는 도면이다.
먼저, 일 실시 예에 따른 스케쥴링 방법은 캐시를 탐사할 수 있다(단계 901).
예를 들면, 시스템 콜을 통해 각 노드에서 어떤 데이터를 캐시하고 있는지를 확인하여, 캐시를 탐사할 수 있다.
일 예로, 캐시를 탐사하기 위해서는 스케줄링이 필요한 경우에서, 필요한 데이터에 대해서만 캐시 탐사를 수행할 수 있다.
또한, 캐시를 탐사하기 위해, 데이터 블록을 가상 메모리 주소로 사상하고, 사상된 데이터에 해당하는 페이지가 메모리에 존재하는지를 확인할 수 있다.
일 실시 예에 따른 스케쥴링 방법은 탐사된 결과를 반영하여 태스크의 우선순위 결정할 수 있다(단계 902). 또한, 결정된 우선순위에 기초하여 태스크를 할당할 수 있다(단계 903).
예를 들면, 태스크를 할당하기 위해, 각 노드에 캐시된 데이터를 확인하고, 확인 결과에 따라 가장 많이 캐시된 데이터를 읽는 태스크를 우선 할당할 수도 있다.
또 다른 예로, 스케쥴링 방법은 태스크를 할당하기 위해, 각 노드에 캐시된 데이터를 확인하고, 확인 결과, 캐시된 데이터를 사용하는 태스크가 더 이상 존재하지 않는다면 기존의 디스크 지역성 알고리즘을 사용하여 태스크를 할당할 수도 있다.
결국, 본 발명에 따르면, CATS는 데이터 저장 영역의 또 다른 계층인 메모리 계층을 고려하고 캐싱된 데이터의 이점을 취할 수 있다. 또한, 캐시 인지 스케줄링이 전통적인 디스크 기반 작업 스케줄링뿐만 아니라 다른 최첨단 캐시 인지 스케줄링 방법보다 훨씬 빠른 속도를 제공할 수 있다. 일 실시 예에 따르면, 캐시된 데이터를 효율적인 작업 스케줄링에 사용하는 반면 캐싱 자체는 독립적인 운영 체제에서 관리할 수 있고, 큰 메모리 공간없이 모든 목표 데이터를 저장할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시 예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시 예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시 예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (10)

  1. 복수의 컴퓨터 노드들을 포함하는 하둡(Hadoop) 기반 시스템을 위한 스케쥴링 장치에 있어서,
    상기 복수의 컴퓨터 노드들 각각으로 캐시 조사 요청을 송신하고 상기 복수의 컴퓨터 노드들 각각으로부터 수신되는 상기 캐시 조사 요청에 대한 응답에 기초하여 각 컴퓨터 노드에서 어떤 데이터를 캐시하고 있는지를 확인하여, 캐시를 탐사하는 캐시 탐사 처리부; 및
    상기 탐사된 결과를 반영하여 태스크의 우선순위를 결정하고, 상기 결정된 우선순위에 기초하여 상기 태스크를 할당하는 태스크 할당부를 포함하고,
    상기 캐시 조사 요청을 수신한 각 컴퓨터 노드는 시스템 콜을 사용하여 캐시 상태를 확인하고,
    상기 태스크 할당부는, 상기 각 컴퓨터 노드에 캐시된 데이터를 확인하고, 상기 확인 결과, 가장 많이 캐시된 데이터를 읽는 태스크를 우선 할당하는,
    스케쥴링 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 캐시 탐사 처리부는,
    데이터 블록을 가상 메모리 주소로 사상하여, 상기 사상된 데이터에 해당하는 페이지가 메모리에 존재하는지를 확인하는,
    스케쥴링 장치.
  4. 삭제
  5. 제1항에 있어서,
    상기 태스크 할당부는,
    상기 각 컴퓨터 노드에 캐시된 데이터를 확인하고, 상기 확인 결과, 캐시된 데이터를 사용하는 태스크가 더 이상 존재하지 않는다면 디스크 지역성 알고리즘을 사용하여 상기 태스크를 할당하는,
    스케쥴링 장치.
  6. 복수의 컴퓨터 노드들을 포함하는 하둡 기반 시스템을 위한 스케쥴링 장치에서 수행되는 스케쥴링 방법에 있어서,
    상기 스케쥴링 장치에 포함되는 캐시 탐사 처리부가, 상기 복수의 컴퓨터 노드들 각각으로 캐시 조사 요청을 송신하고 상기 복수의 컴퓨터 노드들 각각으로부터 수신되는 상기 캐시 조사 요청에 대한 응답에 기초하여 각 컴퓨터 노드에서 어떤 데이터를 캐시하고 있는지를 확인하여, 캐시를 탐사하는 단계; 및
    상기 스케쥴링 장치에 포함되는 태스크 할당부가, 상기 탐사된 결과를 반영하여 태스크의 우선순위를 결정하고, 상기 결정된 우선순위에 기초하여 상기 태스크를 할당하는 단계를 포함하고,
    상기 캐시 조사 요청을 수신한 각 컴퓨터 노드는 시스템 콜을 사용하여 캐시 상태를 확인하고,
    상기 태스크를 할당하는 단계는,
    상기 각 컴퓨터 노드에 캐시된 데이터를 확인하는 단계; 및
    상기 확인 결과, 가장 많이 캐시된 데이터를 읽는 태스크를 우선 할당하는 단계를 포함하는,
    스케쥴링 방법.
  7. 삭제
  8. 제6항에 있어서,
    상기 캐시를 탐사하는 단계는,
    데이터 블록을 가상 메모리 주소로 사상하는 단계; 및
    상기 사상된 데이터에 해당하는 페이지가 메모리에 존재하는지를 확인하는 단계를 포함하는,
    스케쥴링 방법.
  9. 삭제
  10. 제6항에 있어서,
    상기 태스크를 할당하는 단계는,
    상기 각 컴퓨터 노드에 캐시된 데이터를 확인하는 단계; 및
    상기 확인 결과, 캐시된 데이터를 사용하는 태스크가 더 이상 존재하지 않는다면 디스크 지역성 알고리즘을 사용하여 상기 태스크를 할당하는 단계를 포함하는,
    스케쥴링 방법.
KR1020170104270A 2017-08-17 2017-08-17 하둡 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법 KR101924466B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170104270A KR101924466B1 (ko) 2017-08-17 2017-08-17 하둡 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170104270A KR101924466B1 (ko) 2017-08-17 2017-08-17 하둡 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101924466B1 true KR101924466B1 (ko) 2018-12-04

Family

ID=64669076

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170104270A KR101924466B1 (ko) 2017-08-17 2017-08-17 하둡 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101924466B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008508584A (ja) * 2004-07-30 2008-03-21 コミッサリア タ レネルジー アトミーク タスク処理のスケジューリング方法及びこの方法を適用するための装置
JP2014146366A (ja) * 2014-04-03 2014-08-14 Fujitsu Ltd マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008508584A (ja) * 2004-07-30 2008-03-21 コミッサリア タ レネルジー アトミーク タスク処理のスケジューリング方法及びこの方法を適用するための装置
JP2014146366A (ja) * 2014-04-03 2014-08-14 Fujitsu Ltd マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム

Similar Documents

Publication Publication Date Title
US8352517B2 (en) Infrastructure for spilling pages to a persistent store
US9665404B2 (en) Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning
US10785322B2 (en) Server side data cache system
US10108654B2 (en) Workload balancing in a distributed database
US10248346B2 (en) Modular architecture for extreme-scale distributed processing applications
US10698829B2 (en) Direct host-to-host transfer for local cache in virtualized systems wherein hosting history stores previous hosts that serve as currently-designated host for said data object prior to migration of said data object, and said hosting history is checked during said migration
US20140379722A1 (en) System and method to maximize server resource utilization and performance of metadata operations
JP4801761B2 (ja) データベース管理方法およびシステム並びにその処理プログラム
US11146654B2 (en) Multitier cache framework
US10223270B1 (en) Predicting future access requests by inverting historic access requests in an object storage system
US8347293B2 (en) Mutual exclusion domains to perform file system processes on stripes
Arfat et al. Big data for smart infrastructure design: Opportunities and challenges
US9934147B1 (en) Content-aware storage tiering techniques within a job scheduling system
US10579419B2 (en) Data analysis in storage system
Elshater et al. A study of data locality in YARN
Lee et al. APS: adaptable prefetching scheme to different running environments for concurrent read streams in distributed file systems
Lim et al. CATS: cache-aware task scheduling for Hadoop-based systems
CN112947851A (zh) Numa系统和系统中的页面迁移方法
KR101924466B1 (ko) 하둡 기반 시스템을 위한 캐시 인지 작업 스케줄링 장치 및 방법
US8838902B2 (en) Cache layer optimizations for virtualized environments
Wu et al. Hydrafs: an efficient numa-aware in-memory file system
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
Wasi-ur-Rahman et al. NVMD: non-volatile memory assisted design for accelerating MapReduce and DAG execution frameworks on HPC systems
Dao et al. Semem: Deployment of mpi-based in-memory storage for hadoop on supercomputers
US11797447B2 (en) Efficient caching and data access to a remote data lake in a large scale data processing environment

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant