KR101771178B1 - Method for managing in-memory cache - Google Patents
Method for managing in-memory cache Download PDFInfo
- Publication number
- KR101771178B1 KR101771178B1 KR1020160055860A KR20160055860A KR101771178B1 KR 101771178 B1 KR101771178 B1 KR 101771178B1 KR 1020160055860 A KR1020160055860 A KR 1020160055860A KR 20160055860 A KR20160055860 A KR 20160055860A KR 101771178 B1 KR101771178 B1 KR 101771178B1
- Authority
- KR
- South Korea
- Prior art keywords
- data block
- memory cache
- application
- store
- cache
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G06F17/30194—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
본 발명은 인메모리(in-memory) 캐시를 효율적으로 활용하고 관리하는 방법에 관한 것이다. 보다 자세하게는 인메모리 캐시를 지원하는 분산 파일 시스템(Distributed File System)에서 이러한 인메모리 캐시에 데이터 블록이 저장된 것을 활용하여 맵리듀스 잡(job)의 태스크(task)를 스케쥴링하는 방법, 그리고 인메모리 캐시에 데이터 블록을 추가적으로 저장할 공간이 없을 때 맵리듀스 응용의 인메모리 캐시에 대한 친밀도(affinity)를 기초로 인메모리 캐시에 기 저장된 데이터 블록을, 추가하고자 하는 데이터 블록으로 교체하여 저장하는 방법에 관한 것이다.
The present invention relates to a method for efficiently utilizing and managing an in-memory cache. More particularly, the present invention relates to a method of scheduling a task of a MapReduce job by utilizing a data block stored in the in-memory cache in a distributed file system supporting an in-memory cache, Stored in an in-memory cache, based on the affinity of the in-memory cache of the MapReduce application when there is no space to store the data block in addition to the data block to be added .
잘 알려진 바와 같이, 하둡(hadoop) 2.0의 Yarn 시스템에서 맵리듀스 잡(job)은 적어도 하나의 태스크(task)로 구성된다. 그리고, Yarn의 스케쥴러는 이러한 태스크를 노드 매니저(node manager)가 실행되는 계산 노드에서 스케쥴링한다. 태스크가 계산 노드에서 스케쥴링 되면 이러한 계산 노드에는 컨테이너(container)가 생성된다. 그리고, 태스크는 이와 같이 생성된 컨테이너에서 실행된다. 이 때, 태스크가 실행되는 계산 노드가 이러한 태스크가 처리해야 하는 데이터 블록을 저장하는 데이터 노드와 동일한 경우, 이러한 태스크는 데이터 로컬 태스크라고 지칭된다. As is well known, in the Yarn system of Hadoop 2.0, a MapReduce job consists of at least one task. Then, the scheduler of the Yarn schedules such a task at the calculation node where the node manager is executed. When a task is scheduled at a compute node, a container is created at this compute node. The task is then executed in the container thus created. At this time, if the compute node on which the task is executed is the same as the data node storing the data block that this task has to process, this task is called a data local task.
최근 들어, 하둡 분산 파일 시스템(Haddop Distribution File System, HDFS)에 인메모리 캐시 기능이 추가 되었다. 태스크를 실행함에 있어서 전술한 데이터 로컬 태스크의 경우 말고도, HDFS 인메모리 캐시 시스템의 인메모리 캐시로부터 그에 저장된 데이터 블록을 읽어들여서 태스크를 실행할 수도 있는데, 이러한 태스크는 캐시 로컬 태스크라고 지칭된다. 이 때, 인메모리 캐시에 이와 같이 데이터 블록이 저장되어 있음을 최대한 활용하면서 HDFS 인메모리 캐시 시스템의 효용성을 기존보다 향상시키는 방안이 요구된다.Recently, the in-memory cache function has been added to the Hadoop Distribution File System (HDFS). In executing the task, in addition to the data local task described above, the task may be executed by reading the data block stored therein from the in-memory cache of the memory cache system, which is HDFS, which task is called a cache local task. In this case, it is necessary to improve the utility of the HDFS in-memory cache system while maximizing utilization of the data block stored in the in-memory cache.
한편, 기존의 HDFS 인메모리 캐시 시스템에서 사용자는 인메모리 캐시에 저장할 파일과 저장하지 않을 파일을 직접 명령어를 사용하여 지정해야 한다. 보다 구체적으로 살펴보면, 사용자는 파일을 인메모리 캐시에 추가한다는 명령어를 직접 사용하여 파일을 인메모리 캐시에 저장(caching)하여야 하며, 또한 이미 저장되어 있는 파일을 인메모리 캐시에서 제외시킨다는(uncaching) 명령어를 직접 사용하여 파일을 인메모리 캐시에서 삭제해야 힌다.On the other hand, in the existing HDFS in-memory cache system, the user must designate the file to be stored in the in-memory cache and the file not to be stored using the direct instruction. More specifically, the user must directly cache the file in the in-memory cache by directly using the command to add the file to the in-memory cache, and also uncache the already stored file from the in-memory cache To delete the file from the in-memory cache.
사용자로 하여금 직접 명령어를 사용하게 만드는 이러한 특징은 HDFS 인메모리 캐시 시스템의 성능 저하를 유발할 수 있다. 뿐만 아니라, 많은 개수의 맵리듀스 응용들을 동시에 처리하는 경우, 이러한 응용들의 처리에 필요한 공간의 크기(이 응용들의 입력 데이터의 총 크기)가 인메모리 캐시의 크기를 초과할 수 있는데, 전술한 특징에 따르면 이러한 경우에도 사용자는 직접 명령어를 사용하여 파일을 제외시키고 추가해야 한다. 이는 인메모리 캐시를 사용함으로써 얻는 HDFS 인메모리 캐시 시스템의 효용성을 반감시킬 수 있다.
This feature, which allows the user to use direct commands, can cause performance degradation of the HDFS in-memory cache system. In addition, when processing a large number of MapReduce applications simultaneously, the size of the space required for processing these applications (the total size of the input data of these applications) may exceed the size of the in-memory cache. In this case, you must also exclude and add the file using direct commands. This can reduce the utility of the HDFS in-memory cache system by using an in-memory cache.
본 발명이 해결하고자 하는 과제는 태스크들을 캐시 로컬 태스크로 최대한 스케줄링하여 인메모리 캐시에 저장된 데이터의 활용도를 향상시킴과 동시에 태스크가 인메모리 캐시에서 스케쥴링되기까지 대기하는 시간의 한계인 최대 대기 시간을 동적으로 결정하는 기술을 제공하는 것이다. The present invention aims at improving the utilization of data stored in the in-memory cache by maximally scheduling tasks as a cache local task, and at the same time, changing the maximum wait time, which is the limit of waiting time for a task to be scheduled in the in- As shown in FIG.
또한, 인메모리 캐시에 데이터 블록을 추가적으로 저장할 공간이 없을 때, 맵리듀스 응용(application)의 인메모리 캐시에 대한 친밀도(affinity)를 기초로 인메모리 캐시에 기 저장된 데이터 블록을, 추가하고자 하는 데이터 블록으로 교체하여 저장하는 기술을 제공하는 것이다.In addition, when there is no room for further storing data blocks in the in-memory cache, the data blocks pre-stored in the in-memory cache based on the affinity for the in-memory cache of the MapReduce application, And stores the replacement information.
또한, 인메모리 캐시에 데이터 블록을 추가하여 저장할 때 인메모리 캐시의 크기 제한으로 인하여 데이터 블록이 교체되는 상황을 최대한 감소시킬 수 있는 기술을 제공하는 것이다The present invention also provides a technique capable of minimizing a situation in which data blocks are replaced due to size limitation of the in-memory cache when adding and storing data blocks in the in-memory cache
다만, 본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
It is to be understood that both the foregoing general description and the following detailed description of the present invention are exemplary and explanatory and are intended to provide further explanation of the invention as claimed. will be.
일 실시예에 따른 인메모리 캐시를 관리하는 방법은 인메모리 캐시에 제1 응용에 속하는 제1 데이터 블록을 저장하라는 요청이 있으면, 상기 제1 응용이 상기 인메모리 캐시에 저장될 확률을 기초로 상기 제1 데이터 블록을 저장할지 여부를 결정하는 단계와, 상기 제1 데이터 블록을 저장하기로 결정한 경우, 상기 인메모리 캐시에 상기 제1 데이터 블록을 저장할 공간이 있는지를 확인하는 단계와, 상기 제1 데이터 블록을 저장할 공간이 없으면, 상기 제1 응용이 상기 인메모리 캐시를 활용할 때의 성능 향상을 기초로 산정되는 친밀도보다 낮은 친밀도를 갖는 제2 응용에 속하는 데이터 블록을 삭제하여 상기 공간을 확보한 뒤, 상기 확보된 공간에 상기 제1 데이터 블록을 저장하는 단계를 포함한다.
A method for managing an in-memory cache, according to an embodiment, includes the steps of: if there is a request to store a first data block belonging to a first application in an in-memory cache, Comprising the steps of: determining whether to store a first data block; if it is determined to store the first data block, checking whether there is space in the in-memory cache for storing the first data block; If there is no space for storing the data block, the data block belonging to the second application having an affinity lower than the familiarity estimated based on the performance improvement when the first application utilizes the in-memory cache is deleted to secure the space And storing the first data block in the reserved space.
일 실시예에 따르면, 맵리듀스 잡의 태스크를 캐시 로컬 태스크로 스케쥴링함에 있어서 태스크가 인메모리 캐시에 데이터 블록을 저장하는 노드에서 스케쥴링되기까지 대기하는 시간의 한계인 최대 대기 시간을 동적으로 결정할 수 있다. 따라서, 인메모리 캐시에 저장된 데이터의 효율성이 향상될 수 있으며, 대기 시간에 의한 오버헤드 또한 저감될 수 있다.According to one embodiment, in scheduling a task of a MapReduce job to a cache local task, it can dynamically determine a maximum wait time, which is the limit of time that a task waits to be scheduled at a node storing a data block in an in-memory cache . Thus, the efficiency of data stored in the in-memory cache can be improved, and the overhead due to latency can also be reduced.
또한, 인메모리 캐시에 데이터 블록을 추가적으로 저장할 공간이 없을 때 맵리듀스 응용(application)의 인메모리 캐시에 대한 친밀도(affinity)를 기초로 인메모리 캐시에 기 저장된 데이터 블록을, 추가하고자 하는 데이터 블록으로 교체하여 저장할 수 있다. In addition, when there is no space to store data blocks in the in-memory cache, the data blocks pre-stored in the in-memory cache based on the affinity of the in-memory cache of the MapReduce application are added to the data blocks to be added Can be replaced and saved.
또한, 인메모리 캐시에 데이터 블록을 추가하여 저장할 때, 인메모리 캐시의 크기 제한으로 인하여 데이터 블록이 교체되는 상황을 최대한 감소시킬 수 있다.
Also, when adding and storing data blocks in the in-memory cache, it is possible to minimize the situation in which data blocks are replaced due to the size limitation of the in-memory cache.
도 1은 인메모리 캐시 기반 하둡 시스템 중에서 일 실시예에 따른 특징을 설명하기 위하여 일부의 구성을 도시한 도면이다.
도 2는 일 실시예에 따른 인메모리 캐시를 관리하는 방법의 각 단계를 도시한 도면이다.
도 3은 일 실시예에 따른 인메모리 캐시를 관리하는 방법의 각 단계를 도시한 도면이다FIG. 1 is a diagram showing a part of a configuration of an HAMOCHO system based on an in-memory cache to explain features according to an embodiment.
2 is a diagram illustrating each step of a method for managing an in-memory cache according to one embodiment.
3 is a diagram illustrating each step of a method for managing an in-memory cache according to one embodiment
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. To fully disclose the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.In the following description of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. The following terms are defined in consideration of the functions in the embodiments of the present invention, which may vary depending on the intention of the user, the intention or the custom of the operator. Therefore, the definition should be based on the contents throughout this specification.
도 1은 인메모리 캐시 기반 하둡 시스템 중에서 일 실시예에 따른 특징을 설명하기 위하여 일부의 구성을 도시한 도면이다.FIG. 1 is a diagram showing a part of a configuration of an HAMOCHO system based on an in-memory cache to explain features according to an embodiment.
도 1을 참조하면, 인메모리 캐시 기반 하둡 시스템(10)의 일부의 구성에는, 네임 노드(300)와 데이터 노드(400)가 포함되어 있으며, 맵리듀스 응용(application)이 실행되는 컨테이너(container)(500) 또한 포함되어 있다. 아울러, 계산 노드(도면에는 도시되지 않음)의 컨테이너(500)에 맵리듀스 응용을 스케쥴링하는 스케쥴링 장치(100) 또한 이에 포함되어 있다. 여기서, 전술한 계산 노드, 데이터 노드(400) 및 인메모리 캐시(420)는 복수의 서버(컴퓨터)로 구성된 클러스터에서 실행 가능하며, 이러한 서버는 이하에서 ‘노드’로 지칭될 수 있다. 경우에 따라서 노드는 계산 노드 및 데이터 노드(400) 중 어느 하나의 기능만을 수행할 수도 있다. 아울러, 컨테이너(500)와 스케쥴링 장치(100)는 클러스터 리소스 매니지먼트의 기능을 수행하는, 예컨데 yarn과 같은 구성에 포함 가능하다.Referring to FIG. 1, a configuration of a part of the Hadoop
데이터 노드(400)는 복수 개 있을 수 있으며, 파일이 블록 단위로 나뉜 결과물인 데이터 블록을 스토리지의 일종인 로컬 디스크(410)에 저장한다. There may be a plurality of
인메모리 캐시(420)는 인메모리 캐시 기반 하둡 시스템(10)을 구성하는 전술한 복수의 서버의 RAM 메모리의 일정 부분에 형성된다. The in-
데이터 노드(400)는 자신의 인메모리 캐시(420)에 어떤 데이터 블록이 저장되어 있는지를 주기적으로 네임 노드(300)에 보고(reporting)한다.The
네임 노드(300)는 파일이나 데이터 블록의 기본 정보 그리고 데이터 블록이 복수의 데이터 노드(400) 중 어떤 데이터 노드(400)에 저장되어 있는지에 대한 메타 데이터 등을 저장하고 관리한다. 아울러, 네임 노드(300)는 맵리듀스 응용과 관련된 복수의 데이터 블록 중에서 로컬 디스크(410)와 인메모리 캐시(420)에 저장된 데이터 블록, 특히 하둡 분산 파일 시스템에 저장된 정보에 관한 정보를 관리한다. 여기서, 복수의 데이터 블록 중에서 인메모리 캐시(420)에 저장된 데이터 블록에 관한 정보는, 복수의 데이터 블록의 개수 대비 인메모리 캐시(420)가 저장하는 데이터 블록의 개수 비율을 포함할 수 있으나 이에 한정되는 것은 아니다. 또한, 네임 노드(300)는 각 맵리듀스 잡에 대해 인메모리 캐시(420)에 저장된 입력 데이터의 비율을 스케쥴링 장치(100)에 주기적으로 전달한다. 한편, 네임 노드(300)에 포함된 캐시 관리 장치(200)에 대해서는 후술하기로 한다.The
컨테이너(500)는 태스크를 실행하는 구성이다. 컨테이너(500)가 태스크를 실행하는 경우, 컨테이너(500)는 해당 태스크가 처리해야 하는 데이터 블록을 인메모리 캐시(420)에 저장(caching)하라는 요청을 네임 노드(300)에 전달한다. 이 때, 이러한 요청은 해당 데이터 블록이 이미 인메모리 캐시(420)에 저장되어 있는 경우에도 네임 노드(30)에게 전달된다.The
스케쥴링 장치(100)는 네임 노드(300)로부터 맵리듀스 잡과 관련된 전체 데이터 블록의 개수 중에서 인메모리 캐시(420)에 저장된 데이터 블록의 개수의 비율을 수신한다. The
다음으로, 스케쥴링 장치(100)는 캐시 로컬 태스크로 스케쥴링 되기 까지 대기하는 최대 대기 시간인 제1 대기 시간, 데이터 로컬 태스크로 스케쥴링 되기 까지 대기하는 최대 대기 시간인 제 2 대기 시간이 경과하였는지 여부를 기초로 태스크를 스케쥴링한다. 여기서, 제1 대기 시간은 제2 대기 시간보다 짧을 수 있다. 스케쥴링 장치(100)가 태스크를 스케쥴링하는 보다 자세한 과정은 도 2에서 보다 자세하게 설명하기로 하되, 이러한 스케쥴링 장치(100)는 이러한 과정을 수행하도록 프로그램된 명령어를 저장하는 메모리, 그리고 이러한 명령어를 수행하는 마이크로프로세서에 의하여 구현 가능하다.Next, the
캐시 관리 장치(200)는 인메모리 캐시(420)에 데이터 블록을 추가적으로 저장할 공간이 없을 때 맵리듀스 응용(application)의 인메모리 캐시(420)에 대한 친밀도(affinity)를 기초로 인메모리 캐시(420)에 기 저장된 데이터 블록을, 추가하고자 하는 데이터 블록으로 교체하여 저장한다. The
또한, 캐시 관리 장치(200)는 인메모리 캐시(420)에 데이터 블록을 추가할 때 데이터 블록이 인메모리 캐시(420)에 저장될 확률을 고려하여 추가한다. 이 저장될 확률은 맵리듀스 응용의 캐시 친밀도에 의해 결정된다. 캐시 관리 장치(200)의 이와 같은 동작에 대해서는 도 3에서 보다 자세하게 설명하기로 하되, 이러한 캐시 관리 장치(200)는 이러한 과정을 수행하도록 프로그램된 명령어를 저장하는 메모리, 그리고 이러한 명령어를 수행하는 마이크로프로세서에 의하여 구현 가능하다.In addition, the
도 2는 일 실시예에 따른 인메모리 캐시를 관리하는 방법의 각 단계를 도시한 도면으로, 도 2에 도시된 방법의 각 단계는 도 1에 도시된 스케쥴링 장치(100)에 의하여 수행 가능하다. 아울러, 실시예에 따라서 적어도 하나 이상의 단계가 수행되지 않거나 또는 도시되지 않은 단계가 추가로 수행될 수 있으며, 도 2에 도시된 것과는 다른 순서로 각 단계가 수행될 수도 있다.FIG. 2 illustrates each step of a method for managing an in-memory cache according to an embodiment. Each step of the method shown in FIG. 2 can be performed by the
도 2를 참조하면, 먼저 스케쥴링 장치(100)는 네임 노드(300)로부터 노드의 인메모리 캐시(420)가 저장하는 데이터 블록에 관한 정보를 수신한다(S100). 여기서, 인메모리 캐시(420)가 저장하는 데이터 블록에 관한 정보란, 예컨데 맵리듀스 잡과 관련된 전체 데이터 블록의 개수 중에서 인메모리 캐시(420)가 저장하는 데이터 블록의 개수의 비율일 수 있다.Referring to FIG. 2, the
다음으로, 스케쥴링 장치(100)는 캐시 로컬 태스크로 스케쥴링되기까지 대기하는 시간의 한계인 제1 대기 시간을 산정한다. 제1 대기 시간은 기 지정된 최대 대기 시간 C 에 네임 노드(300)로부터 수신한 비율을 곱한 값으로 산정될 수 있다. 여기서, 최대 대기 시간 C는 인메모리 캐시(420)에 대한 맵리듀스 응용의 친밀도(affinity)를 기초로 지정될 수 있다. 친밀도란 맵리듀스 응용이 인메모리 캐시(420)를 이용할 때와 이용하지 않을 때의 성능 차이를 반영하는 값으로, 이러한 친밀도를 산출하는 구체적인 방법의 예시에 대해서는 후술하기로 한다.Next, the
다음으로, 스케쥴링 장치(100)는 태스크를 캐시 로컬 태스크 또는 데이터 로컬 태스크로 스케쥴링한다(S120). 보다 구체적으로 살펴보면, 스케쥴링 장치(100)는 잡(job)의 데이터 블록이 인메모리 캐시에 저장되어 있으면 태스크를 캐시 로컬 태스크로 스케쥴링한다. 잡의 데이터 블록이 인메모리 캐시에 저장되어 있지 않은 경우에는 스케쥴링 장치(100)는 제1 대기 시간까지 대기하며, 제1 대기 시간이 경과하면 스케쥴링 장치(100)는 태스크를 데이터 로컬 태스크로 스케쥴링한다. 그러나, 제1 대기 시간이 경과한 뒤 제1 대기 시간보다 긴 제2 대기 시간이 경과할 때까지 스케쥴링되지 않으면 랙 로컬(rack local) 또는 오프 로컬(off local)로 스케쥴링하는데, 랙 로컬이나 오프 로컬의 경우 기존의 하둡에서의 스케쥴링 방식과 동일하므로 이에 관한 자세한 설명은 생략하기로 한다.Next, the
이러한 방법에 따르면, 잡과 관련된 전체 데이터 블록 중에서 인메모리 캐시(420)에 저장된 데이터 블록의 비율을 기초로 제1 대기 시간을 동적으로 결정할 수 있다. 따라서, 인메모리 캐시(420)에 데이터가 저장되어 있음을 최대한 활용함과 동시에 대기 시간에 의한 오버헤드 발생을 저감시킬 수 있다.According to this method, the first wait time can be dynamically determined based on the percentage of data blocks stored in the in-
도 3은 일 실시예에 따른 인메모리 캐시를 관리하는 방법의 각 단계를 도시한 도면으로, 도 3에 도시된 방법의 각 단계는 도 1에 도시된 캐시 관리 장치(200)에 의하여 수행 가능하다. 아울러, 실시예에 따라서 적어도 하나 이상의 단계가 수행되지 않거나 또는 도시되지 않은 단계가 추가로 수행될 수 있으며, 도 4에 도시된 것과는 다른 순서로 각 단계가 수행될 수도 있다.3 shows each step of a method for managing an in-memory cache according to an embodiment, and each step of the method shown in FIG. 3 can be performed by the
네임 노드(300)가 컨테이너(500)로부터 다음과 같은 요청, 즉 맵 태스크와 관련된 제1 데이터 블록을 인메모리 캐시(420)에 올려달라는 요청을 전달받을 수 있다. 여기서, 제1 데이터 블록이 올려달라고 요청받는 인메모리 캐시(420)는 복수의 인메모리 캐시 중에서 다양한 방법으로 선택될 수 있는데, 예컨데 일 실시예에 따르면 최근에 제1 데이터 블록을 읽어들인 인메모리 캐시(420)로 선택될 수 있으나 이에 한정되는 것은 아니다. 이 때 도 3을 참조하면, 캐시 관리 장치(200)는 제1 데이터 블록을 인메모리 캐시(420)에 저장할지 여부를 결정한다(S200). 여기서, 실시예에 따라서 단계 S200에서는, 해당 제1 데이터 블록이 이미 인메모리 캐시에 저장되어 있으면 캐시 관리 장치(200)는 해당 제1 데이터 블록이 읽힌 시간 및 해당 제1 데이터 블록이 상기 다른 데이터 노드의 인메모리 캐시에서 갖는 만료 시간(Time-To-Live, TTL) 중 적어도 하나 이상을 갱신하며, 그에 따라 제1 데이터 블록을 인메모리 캐시(420)에 저장하는 아래의 각 단계들은수행되지 않을 수 있다.The naming
다음으로, 캐시 관리 장치(200)는 맵리듀스 응용의 인메모리 캐시(420)에 대한 친밀도를 기초로 확률을 산출하고, 이러한 확률을 기초로 제1 입력 데이터를 인메모리 캐시(420)에 저장할지 여부를 결정한다(S210). 이 때, 캐시 관리 장치(200)는 확률이 기 정의된 임계치 이하이면 저장하지 않는 것으로 결정하고 하기의 단계 S220을 실행하지 않으며, 기 정의된 임계치를 초과하면 저장하는 것으로 결정하여 다음 단계가 실행되도록 한다.Next, the
여기서, 친밀도란 맵리듀스 응용이 인메모리 캐시(420)를 이용할 때와 이용하지 않을 때의 성능 차이를 기초로 산정되는 값으로, 산정하는 방식에는 다양한 방법이 있을 수 있다.Here, the intimacy may be a value calculated based on the difference in performance when the MapReduce application uses the in-
아울러, 확률은 이러한 친밀도를 기초로 산출된다. 예컨데, 친밀도가 상대적으로 높으면 확률 또한 상대적으로 높게 산출되며, 친밀도가 상대적으로 낮으면 확률 또한 상대적으로 낮게 산출되며, 친밀도롤 기초로 확률을 산출하는 방법에는 다양한 방법이 있을 수 있다.In addition, the probability is calculated on the basis of this familiarity. For example, if the intimacy is relatively high, the probability is also relatively high, and if the intimacy is relatively low, the probability is also relatively low, and there are various methods for calculating the probability based on the intimacy roll.
다음으로, 캐시 관리 장치(200)는 제1 데이터 블록을 저장할 공간이 인메모리 캐시(420)에 있는지를 확인하여, 공간이 있으면 저장한다(S220). 여기서, 단계 S220에서 언급된 인메모리 캐시(420)는 전술한 바와 같이 제1 데이터 블록이 올려달라고 요청받는 것으로 선택된, 즉 가장 최근에 제1 데이터 블록을 읽은 인메모리 캐시(420)일 수 있다.Next, the
그러나, 저장할 공간이 없는 경우, 다음과 같은 단계를 거쳐서 공간을 확보하여 제1 데이터 블록을 저장한다.However, if there is no space to store, a space is secured through the following steps to store the first data block.
(1) 만료 시간이 만료된 데이터 블록이 있다면, 이 중에서 가장 읽힌지 오래된 데이터 블록을 제거하여 공간을 확보한 뒤, 제1 데이터 블록을 저장한다.(1) If there is a data block whose expiration time has expired, the data block which is the oldest is removed to secure a space, and then the first data block is stored.
(2) 만료 시간이 만료된 데이터 블록이 없다면, 제1 데이터 블록이 속하는 응용의 친밀도 값보다 낮은 응용에 속하는 데이터 블록을 선별하고, 이와 같이 선별된 데이터 블록 중에서 가장 읽힌지 오래된 데이터 블록을 제거하여 공간을 확보한 뒤 제1 데이터 블록을 저장한다.(2) If there is no data block whose expiration time has expired, the data block belonging to the application lower than the affinity value of the application to which the first data block belongs is selected, and the most read data block among the selected data blocks is removed After the space is secured, the first data block is stored.
이에 따르면, 확률이 상대적으로 낮은 응용에 속한 처음부터 인메모리 캐시(420)에 저장되지 않게 된다. 따라서, 데이터 블록이 자주 교체되는 것을 차단시킴으로써, 데이터 블록의 잦은 교체에 따른 오버헤드를 저감시킬 수 있다.According to this, the probability is not stored in the in-
또한, 인메모리 캐시에 데이터 블록을 추가적으로 저장할 공간이 없을 때 맵리듀스 응용(application)의 인메모리 캐시에 대한 친밀도(affinity)를 기초로 인메모리 캐시에 기 저장된 데이터 블록을 추가하고자 하는 데이터 블록으로 교체하여 저장할 수 있다. In addition, when there is no room for storing data blocks in the in-memory cache, the data blocks previously stored in the in-memory cache are replaced with data blocks to be added based on the affinity of the in-memory cache of the mapping application. .
일 실시예에 따른 인메모리 캐시를 관리하는 방법은 이러한 방법에 포함된 각 단계를 수행하도록 프로그램된 컴퓨터 프로그램을 저장하는 판독가능한 기록매체에서 구현되거나, 또는 이러한 방법에 포함된 각 단계를 수행하도록 프로그램된 컴퓨터 판독가능한 기록매체에서 구현될 수 있다.A method for managing an in-memory cache according to one embodiment may be implemented in a readable recording medium storing a computer program programmed to perform each step included in the method, Readable recording medium.
본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.Combinations of each step of the flowchart and each block of the block diagrams appended to the present invention may be performed by computer program instructions. These computer program instructions may be loaded into a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus so that the instructions, which may be executed by a processor of a computer or other programmable data processing apparatus, And means for performing the functions described in each step are created. These computer program instructions may also be stored in a computer usable or computer readable memory capable of directing a computer or other programmable data processing apparatus to implement the functionality in a particular manner so that the computer usable or computer readable memory It is also possible for the instructions stored in the block diagram to produce a manufacturing item containing instruction means for performing the functions described in each block or flowchart of the block diagram. Computer program instructions may also be stored on a computer or other programmable data processing equipment so that a series of operating steps may be performed on a computer or other programmable data processing equipment to create a computer- It is also possible that the instructions that perform the processing equipment provide the steps for executing the functions described in each block of the block diagram and at each step of the flowchart.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.Also, each block or each step may represent a module, segment, or portion of code that includes one or more executable instructions for executing the specified logical function (s). It should also be noted that in some alternative embodiments, the functions mentioned in the blocks or steps may occur out of order. For example, two blocks or steps shown in succession may in fact be performed substantially concurrently, or the blocks or steps may sometimes be performed in reverse order according to the corresponding function.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
The foregoing description is merely illustrative of the technical idea of the present invention, and various changes and modifications may be made by those skilled in the art without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are intended to illustrate rather than limit the scope of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments. The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents should be construed as falling within the scope of the present invention.
100: 캐시 관리 장치
200: 스케쥴링 장치
300: 네임 노드
400: 데이터 노드100: cache management device
200: Scheduling device
300: Namenode
400: data node
Claims (6)
상기 제1 데이터 블록을 저장하기로 결정한 경우, 상기 인메모리 캐시에 상기 제1 데이터 블록을 저장할 공간이 있는지를 확인하는 단계와,
상기 제1 데이터 블록을 저장할 공간이 없으면, 상기 제1 응용이 상기 인메모리 캐시를 활용할 때의 성능 향상을 기초로 산정되는 친밀도보다 낮은 친밀도를 갖는 제2 응용에 속하는 데이터 블록을 삭제하여 상기 공간을 확보한 뒤, 상기 확보된 공간에 상기 제1 데이터 블록을 저장하는 단계를 포함하는
캐시 관리 장치의 인메모리 캐시를 관리하는 방법.
Determining whether to store the first data block based on a probability that the first application will be stored in the in-memory cache if there is a request to store a first data block belonging to the first application in an in-memory cache; ,
Determining if there is room in the in-memory cache for storing the first data block if it is determined to store the first data block;
If there is no space to store the first data block, the first application deletes the data block belonging to the second application having an affinity lower than the familiarity estimated based on the performance improvement when the in-memory cache is utilized, And storing the first data block in the reserved space
A method for managing an in-memory cache of a cache management device.
상기 제1 응용이 상기 인메모리 캐시에 저장될 확률은,
상기 제1 응용의 친밀도에 비례하는
캐시 관리 장치의 인메모리 캐시를 관리하는 방법.
The method according to claim 1,
The probability that the first application is stored in the in-
Wherein the first application is proportional to the intimacy of the first application
A method for managing an in-memory cache of a cache management device.
상기 제1 데이터 블록을 저장하는 단계는,
상기 제1 데이터 블록을 저장할 공간이 없으면, 상기 인메모리 캐시에 저장된 데이터 블록 중에서 상기 인메모리 캐시에서 삭제되어야 하는 시간인 만료 시간이 경과된 데이터 블록을 삭제하여 상기 공간을 확보한 뒤 상기 확보된 공간에 상기 제1 데이터 블록을 저장하는
캐시 관리 장치의 인메모리 캐시를 관리하는 방법.
The method according to claim 1,
Wherein storing the first data block comprises:
If there is no space to store the first data block, a data block whose expiration time has elapsed, which is the time to be deleted from the in-memory cache, among the data blocks stored in the in-memory cache, is deleted to secure the space, Storing the first data block
A method for managing an in-memory cache of a cache management device.
상기 제1 데이터 블록을 저장하는 단계는,
상기 제2 응용에 속하는 데이터 블록들 중에서 액세스가 된지 가장 오래된 데이터 블록을 삭제하여 상기 공간을 확보한 뒤, 상기 확보된 공간에 상기 제1 데이터 블록을 저장하는
캐시 관리 장치의 인메모리 캐시를 관리하는 방법.
The method of claim 3,
Wherein storing the first data block comprises:
The first data block is deleted from the oldest data block among the data blocks belonging to the second application to secure the space and then the first data block is stored in the reserved space
A method for managing an in-memory cache of a cache management device.
상기 제1 데이터 블록을 저장하기로 결정한 경우, 상기 인메모리 캐시에 상기 제1 데이터 블록을 저장할 공간이 있는지를 확인하는 단계와,
상기 제1 데이터 블록을 저장할 공간이 없으면, 상기 제1 응용이 상기 인메모리 캐시를 활용할 때의 성능 향상을 기초로 산정되는 친밀도보다 낮은 친밀도를 갖는 제2 응용에 속하는 데이터 블록을 삭제하여 상기 공간을 확보한 뒤, 상기 확보된 공간에 상기 제1 데이터 블록을 저장하는 단계를 수행하도록 프로그램된
컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램.
Determining whether to store the first data block based on a probability that the first application will be stored in the in-memory cache if there is a request to store a first data block belonging to the first application in an in-memory cache; ,
Determining if there is room in the in-memory cache for storing the first data block if it is determined to store the first data block;
If there is no space to store the first data block, the first application deletes the data block belonging to the second application having an affinity lower than the familiarity estimated based on the performance improvement when the in-memory cache is utilized, And storing the first data block in the reserved space,
A computer program stored on a computer readable recording medium.
상기 제1 데이터 블록을 저장하기로 결정한 경우, 상기 인메모리 캐시에 상기 제1 데이터 블록을 저장할 공간이 있는지를 확인하는 단계와,
상기 제1 데이터 블록을 저장할 공간이 없으면, 상기 제1 응용이 상기 인메모리 캐시를 활용할 때의 성능 향상을 기초로 산정되는 친밀도보다 낮은 친밀도를 갖는 제2 응용에 속하는 데이터 블록을 삭제하여 상기 공간을 확보한 뒤, 상기 확보된 공간에 상기 제1 데이터 블록을 저장하는 단계를 수행하도록 프로그램된
컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체.Determining whether to store the first data block based on a probability that the first application will be stored in the in-memory cache if there is a request to store a first data block belonging to the first application in an in-memory cache; ,
Determining if there is room in the in-memory cache for storing the first data block if it is determined to store the first data block;
If there is no space to store the first data block, the first application deletes the data block belonging to the second application having an affinity lower than the familiarity estimated based on the performance improvement when the in-memory cache is utilized, And storing the first data block in the reserved space,
A computer readable recording medium storing a computer program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160055860A KR101771178B1 (en) | 2016-05-05 | 2016-05-05 | Method for managing in-memory cache |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160055860A KR101771178B1 (en) | 2016-05-05 | 2016-05-05 | Method for managing in-memory cache |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101771178B1 true KR101771178B1 (en) | 2017-08-24 |
Family
ID=59758137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160055860A KR101771178B1 (en) | 2016-05-05 | 2016-05-05 | Method for managing in-memory cache |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101771178B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102168464B1 (en) * | 2019-05-24 | 2020-10-21 | 울산과학기술원 | Method for managing in-memory cache |
CN112579652A (en) * | 2020-12-28 | 2021-03-30 | 咪咕文化科技有限公司 | Method and device for deleting cache data, electronic equipment and storage medium |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008527558A (en) | 2005-01-13 | 2008-07-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Data processing system and method for task scheduling |
-
2016
- 2016-05-05 KR KR1020160055860A patent/KR101771178B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008527558A (en) | 2005-01-13 | 2008-07-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Data processing system and method for task scheduling |
Non-Patent Citations (1)
Title |
---|
김정욱 외 2명. ‘대규모 스토리지 시스템을 위한 압축을 활용한 인메모리 파일 캐싱 시스템’. 한국정보과학회 2015년 동계학술발표회 논문집, 2015.12, pp.1671-1673. |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102168464B1 (en) * | 2019-05-24 | 2020-10-21 | 울산과학기술원 | Method for managing in-memory cache |
CN112579652A (en) * | 2020-12-28 | 2021-03-30 | 咪咕文化科技有限公司 | Method and device for deleting cache data, electronic equipment and storage medium |
CN112579652B (en) * | 2020-12-28 | 2024-04-09 | 咪咕文化科技有限公司 | Method and device for deleting cache data, electronic equipment and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9389995B2 (en) | Optimization of Map-Reduce shuffle performance through snuffler I/O pipeline actions and planning | |
US9430388B2 (en) | Scheduler, multi-core processor system, and scheduling method | |
US20160275123A1 (en) | Pipeline execution of multiple map-reduce jobs | |
US11150949B2 (en) | Resource release method, resource allocation method, devices, and computer program products | |
CN112256433B (en) | Partition migration method and device based on Kafka cluster | |
US8954969B2 (en) | File system object node management | |
Liu et al. | Optimizing shuffle in wide-area data analytics | |
US20150026694A1 (en) | Method of processing information, storage medium, and information processing apparatus | |
CN113934530A (en) | Multi-core multi-queue task cross processing method, device, system and storage medium | |
KR101771178B1 (en) | Method for managing in-memory cache | |
CN110362426B (en) | Selective copy realization method and system for bursty load | |
US9436406B2 (en) | Migration decision window selection based on hotspot characteristics | |
KR101771183B1 (en) | Method for managing in-memory cache | |
US10942772B2 (en) | Dispatching jobs for execution in parallel by multiple processors | |
CN111177032A (en) | Cache space application method, system, device and computer readable storage medium | |
CN113934529A (en) | Task scheduling method, device and system of multi-level core and storage medium | |
US9395930B2 (en) | Information processing system, control method of information processing system, and recording medium | |
JP5818824B2 (en) | Dual mode reader / writer lock | |
US8341368B2 (en) | Automatic reallocation of structured external storage structures | |
US20090320036A1 (en) | File System Object Node Management | |
US20230393782A1 (en) | Io request pipeline processing device, method and system, and storage medium | |
CN117093335A (en) | Task scheduling method and device for distributed storage system | |
WO2013035719A1 (en) | Data placement system, distributed access node, data placement method and program | |
JP2014146366A (en) | Multi-core processor system, and control method and control program of multi-core processor system | |
US20110214130A1 (en) | Data processing system, data processing method, and data processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |