KR102193002B1 - 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치 - Google Patents

메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치 Download PDF

Info

Publication number
KR102193002B1
KR102193002B1 KR1020150000855A KR20150000855A KR102193002B1 KR 102193002 B1 KR102193002 B1 KR 102193002B1 KR 1020150000855 A KR1020150000855 A KR 1020150000855A KR 20150000855 A KR20150000855 A KR 20150000855A KR 102193002 B1 KR102193002 B1 KR 102193002B1
Authority
KR
South Korea
Prior art keywords
memory
data
node
distributed
cluster
Prior art date
Application number
KR1020150000855A
Other languages
English (en)
Other versions
KR20160084231A (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 KR1020150000855A priority Critical patent/KR102193002B1/ko
Publication of KR20160084231A publication Critical patent/KR20160084231A/ko
Application granted granted Critical
Publication of KR102193002B1 publication Critical patent/KR102193002B1/ko

Links

Images

Classifications

    • 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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing

Abstract

메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법을 개시한다.
메모리에 적재되는 데이터 사이즈에 따라 할당되는 메모리가 동적으로 조정되고, 데이터를 작은 블럭 단위로 분할하여 이를 분산시켜 저장함으로써 효율적인 메모리 사용이 가능한 분산 인-메모리 그리드(In-memory Grid)를 제공한다.

Description

메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치{Apparatus And Method For Dispersion In-memory Data Grid Using Dynamic Allocation}
본 실시예는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치에 관한 것이다.
이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.
데이터 저장수단으로서 사용되는 디스크 대신에, 속도가 빠른 반도체 메모리를 사용하는 시도는 종종 있어왔다. 예컨대 빠른 실행 속도의 Memory DBMS는 통신 등의 분야에서 널리 사용되고 있다. 또한 테이블과 같은 전통적인 데이터베이스 구조를 사용하지 않는 분산 인-메모리 그리드(In-memory Grid)라는 방식이 있다.
분산 인-메모리 그리드(In-memory Grid), 또는 분산 인-메모리 데이타 그리드(In-memory Data Grid)란, 다수의 서버(즉, 노드)에 장착된 메인 메모리를 사용하여 데이터를 저장하는 방식의 데이터 관리 방법 또는 장치를 의미한다.
이러한 인-메모리 그리드의 특징은 다음과 같다.
첫째, 데이터가 분산되어 활성화된 다수의 서버에 저장된다.
둘째, 주로 객체지향 모델을 사용하며 비관계형 데이터 모델을 사용한다.
그러나, 기존 방식의 인-메모리 그리드(In-memory Grid)는 처음 그리드의 실행 시 할당된 데이터 노드에서 데이터 노드 수의 변동이 불가능하다.
따라서 그리드에 많은 데이터 노드를 할당해 놓고 적은 양의 데이터만 적재할 경우에는 대다수의 공간이 비어 있는 데이터 노드들이 발생하므로 메모리의 낭비가 발생한다는 문제점이 있다.
또한, 처음 그리드의 실행 시 할당된 데이터 노드는 그리드 내에서만 사용하므로 같은 클러스터 내의 다른 애플리케이션에서는 그리드에 할당된 메모리에 여유 공간이 있더라도 사용할 수 없다는 문제점이 있다.
또한, 기존 인-메모리 그리드는 블럭 단위의 데이터 저장을 사용하지 않으므로 데이터 저장 및 이동이 용이하지 않고, 데이터 유실을 방지하기 위해 일반적으로 데이터를 복사하여 저장하므로 메모리의 낭비가 발생한다는 문제점이 있다.
본 실시예에서는, 위와 같은 문제점들을 해결하기 위하여 메모리에 적재되는 데이터 사이즈에 따라 할당되는 메모리가 동적으로 조정되고, 데이터를 작은 블럭 단위로 분할하여 이를 분산시켜 저장함으로써 효율적인 메모리 사용이 가능한 분산 인-메모리 그리드(In-memory Grid)를 제공하는 데 주된 목적이 있다.
또한 기존의 인-메모리 그리드는 데이터 유실을 방지하기 위하여 기본적으로 데이터 복제를 수행하는 데 반하여 본 실시예에서는 데이터를 저장할 때에 복제를 수행하지 않는 대신 원본 파일의 위치를 기록해 놓고 데이터가 유실되었을 때 원본 파일로부터 복구를 수행함으로써 더욱 효율적인 메모리 사용이 가능한 분산 인-메모리 그리드를 제공하는 데에도 그 목적이 있다.
본 실시예의 일 측면에 의하면, 분산 인-메모리 그리드 운용 방법에 있어서, 분산 인-메모리 그리드의 전체 클러스터가 사용할 수 있는 메모리 사용량의 범위를 초기 설정하는 설정 과정; 상기 메모리 사용량의 범위에 따라 다수의 데이터 노드를 할당하는 인-메모리 그리드 실행 과정; 전체 클러스터 메모리 용량의 증가가 필요하다고 판단하면 상기 전체 클러스터 메모리가 증가되도록 데이터 노드를 할당하는 데이터 노드 할당 과정; 전체 클러스터 메모리 용량의 감소가 필요하다고 판단하면 상기 전체 클러스터 메모리가 감소되도록 데이터 노드를 해제하는 데이터 노드 해제 과정; 및 상기 전체 클러스터가 보유하는 상기 데이터 노드들의 인-메모리에 애플리케이션 데이터를 저장시키는 데이터 저장 과정을 포함하는 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법을 제공한다.
이상에서 설명한 바와 같이 본 실시예에 의하면, 기존의 인-메모리 그리드(In-memory Grid)와 달리 데이터 노드(140)를 동적으로 할당하므로 메모리의 낭비 없이 효율적인 메모리의 사용을 가능하게 하는 효과가 있다.
또한, 작은 블럭 단위의 데이터 저장을 사용하므로 데이터 저장 및 이동이 용이하고 간편하여 메모리 용량 관리가 용이하며 결과적으로 메모리의 낭비를 더욱 줄일 수 있는 효과가 있다.
또한, 데이터 유실을 방지하기 위해 데이터를 복사하지 않고 메모리 상의 모든 데이터에 대한 원본 파일의 위치를 기록해 놓고, 데이터가 유실되면 블럭이 저장되었던 모든 데이터 노드가 동시에 원본 파일로부터 복구를 수행하므로(Fast Recovery) 이중화의 문제를 해결하여 메모리의 낭비를 더욱 줄이고 오류 발생 시 빠른 복구를 가능하게 하는 효과가 있다.
또한, 같은 클러스터 내의 다른 애플리케이션의 요청시 메모리를 할당하여 줌으로써 인-메모리 그리드가 다른 애플리케이션의 동작에 방해가 되지 않도록 하는 효과가 있다.
또한, 리소스 매니저가 아파치 하둡의 자원관리 표준인 YARN(Yet Another Resource Negotiator) 프레임워크와 통합되도록 구현함으로써 다른 분산 애플리케이션과 동적인 자원 공유 및 관리가 가능한 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 분산 인-메모리 그리드 운용 장치를 블럭도로 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 메모리 동적 할당 및 메모리 요청 시 리소스 매니저의 동작을 설명하기 위한 블럭도이다.
도 3은 본 발명의 일 실시예에 따라 애플리케이션 데이터를 블럭 단위로 저장하는 것을 예시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 분산 인-메모리 그리드 운용 방법을 나타낸 순서도이다.
이하, 본 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 분산 인-메모리 그리드 운용 장치를 블럭도로 도시한 도면이다.
본 실시예에 따른 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 장치는 애플리케이션 클라이언트(110), 리소스 매니저(120), 마스터 노드(130) 및 데이터 노드(140)를 포함한다.
본 실시예에 따른 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 장치의 전술한 구성 요소 각각은, 개인용 컴퓨터, 메인프레임 컴퓨터, 핸드헬드(handheld) 컴퓨터, 소비자용 전자기기(셀룰러 폰, 핸드헬드 게임기기, 셋탑 박스, 또는 이와 유사한 기기), 네트워크 장치, 자동차/항공기 전자 컨트롤러 또는 다른 유사 장치를 포함하는 임의 형태의 멀티프로세서 또는 멀티코어 시스템으로 구현될 수 있다.
인-메모리 그리드(In-memory Grid, In-memory Data Grid)란, 분산파일시스템(HDFS, Hadoop Distributed File System)과 유사하게 한 대의 서버가 아닌 다수의 서버에 방대한 데이터를 저장하고, 이를 빠르게 처리하기 위하여 처리속도가 느린 디스크 대신 주 메모리에 모든 데이터를 보유하도록 하는 서비스를 제공하는 기술이다. 인-메모리 그리드는 인-메모리 데이터베이스(In-memory DBMS)와는 달리 테이블과 같은 데이터베이스 특징을 사용하지 않고 주로 객체지향 데이터 모델을 사용한다.
애플리케이션 클라이언트(110)는 본 실시예에 따른 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 장치가 제공하는 메모리를 사용하여 데이터를 저장하거나 데이터 처리를 의뢰하는 클라이언트 머신 또는 소프트웨어이다.
리소스 매니저(120)는 본 실시예에 따른 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 장치가 속한 클러스터의 자원을 통합 모니터링하는 노드로서, 애플리케이션에 자원을 할당하고 관리하는 리소스 관리자이다. 여기서 자원이란 모든 서버의 주 메모리(Main Memory)를 말한다.
리소스 매니저(120)는 인-메모리 그리드의 최초 실행시 클러스터가 사용할 수 있는 메모리 사용량의 범위를 초기 설정한다. 즉, 리소스 매니저(120)는 인-메모리 그리드의 최초 실행시 전체 클러스터 메모리의 최소용량과 최대용량, 단일 데이터 노드당 용량을 설정하여 가지고 있으며, 후술하는 마스터 노드(130)는 이러한 설정 범위 안에서 데이터 노드(140)를 동적으로 할당하거나 해제한다. 또한 단일 데이터 노드당 용량도 그리드 사용 중 변경이 가능하다.
리소스 매니저(120)는 인-메모리 그리드를 사용하는 애플리케이션이 데이터를 저장할 수 있도록 후술하는 마스터 노드(130)가 메모리 사용 요청을 하거나 다른 클러스터 애플리케이션이 메모리 사용 요청을 했을 때, 할당을 위한 메모리를 확보하고 메모리 사용을 승인한다.
여기서 본 발명의 바람직한 실시예에서는, 리소스 매니저(120)를 아파치 하둡의 자원관리 표준인 YARN(Yet Another Resource Negotiator) 프레임워크와 호환이나 연동이 가능하도록 구현할 수 있다. 리소스 매니저(120)가 YARN과 연동이 되면 다른 분산 애플리케이션과 동적인 자원 공유 및 관리가 가능하다는 이점을 얻을 수 있다.
마스터 노드(130)는 데이터를 저장하는 데이터 노드를 관리하는 역할을 담당하는 서버로서, 마스터 노드(130) 하나는 다수의 데이터 노드(140)를 관리한다.
데이터 노드(140)는 애플리케이션 데이터가 저장되는 서버이다. 인-메모리 그리드에서는 디스크에 비해 작은 용량을 가졌지만 속도가 빠른 반도체 메모리를 이용한다. 따라서 데이터 노드(140)로서 동작하는 서버의 수는 수십대 내지 수백대가 될 수도 있다.
마스터 노드(130)는 최초에 리소스 매니저(120)에 설정된 설정값에 따라서 정해진 개수의 데이터 노드를 최초 할당하며, 후에 데이터 노드의 수를 동적으로 추가 할당하거나 해제한다. 여기서 데이터 노드를 해제한다는 것은 노드를 그리드에서 제외하여 다른 클러스터 애플리케이션 등이 해당 노드의 메모리를 사용할 수 있게 하는 것이다.
이와 같이 본 실시예에서는 기존의 분산 인-메모리 그리드와 달리 데이터 노드의 수를 동적으로 할당하거나 해제함으로써, 그리드를 사용하고 있는 애플리케이션 클라이언트나 혹은 같은 클러스터 내의 다른 애플리케이션에서 메모리 사용 요청 시 할당해줄 메모리를 동적으로 확보할 수 있게 되고, 따라서 효율적인 메모리 사용이 가능해진다.
도 2는 본 발명의 일 실시예에 따른 메모리 동적 할당 및 메모리 요청 시 리소스 매니저의 동작을 설명하기 위한 블럭도이다.
도 2를 참조하여 데이터 노드(140)를 동적으로 할당하고 해제하는 과정을 더욱 자세히 설명하면 다음과 같다.
본 실시예에 따른 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 장치에서, 그리드를 사용하고 있는 애플리케이션 클라이언트(110)가 데이터를 저장하려고 할 때에 모든 데이터 노드의 메모리가 이미 사용중이라면, 마스터 노드(130)는 리소스 매니저(120)에 메모리 사용 승인 요청 신호를 전송하고, 리소스 매니저(120)는 애플리케이션 데이터를 저장하기 위한 공간을 할당한 후 메모리 사용 승인 신호를 마스터 노드(130)로 전송한다. 마스터 노드(130)는 새로운 데이터 노드(140)를 가동하여 전체 클러스터 메모리를 증가시킨다. 즉, 새로운 데이터 노드(140) 서버의 주 메모리가 그리드에 포함되어 전체 클러스터 메모리는 새로운 데이터 노드(140) 하나의 용량만큼 증가한다.
그리드를 사용하지 않는 다른 클러스터 애플리케이션이 송신한 메모리 사용 승인 요청을 리소스 매니저(120)가 수신하면, 리소스 매니저(120)는 클러스터 메모리의 용량을 감소시키고 마스터 노드(130)에 명령을 송신하여 데이터 노드(140)를 해제하도록 하고, 확보된 메모리를 다른 클러스터 애플리케이션에게 할당해 준다.
리소스 매니저(120)는 전체 클러스터의 메모리 용량을 항시 모니터링하도록 구현될 수 있으며, 클러스터의 메모리 용량이 불필요하게 많이 할당되어 데이터가 저장되어 있지 않은 공간이 많은 경우 마스터 노드(130)는 불필요한 데이터 노드(140)를 해제하고, 결과적으로 전체 클러스터 메모리는 감소한다.
도 3은 본 발명의 일 실시예에 따라 애플리케이션 데이터를 블럭 단위로 저장하는 것을 예시한 도면이다.
애플리케이션 클라이언트(110)는 저장하고자 하는 애플리케이션 데이터를 기 설정된 크기의 작은 블럭 단위로 분할한다. 예컨대, 도 3에서는 Example.txt라는 이름의 데이터를 128 MB 크기의 블럭 3개, A, B 및 C로 분할하였다고 가정한다. 애플리케이션 클라이언트(110)는 데이터 노드(140)를 관리하는 마스터 노드(130)에게 어느 데이터 노드(140)에 각각의 블럭을 저장할 것인지를 질의하는 신호를 송신한다. 마스터 노드(130)는 데이터 노드들에 대한 정보와 후술하는 메타 데이터(132)를 참조하여 블럭을 저장할 수 있는 데이터 노드(140)들을 통보해 준다. 애플리케이션 클라이언트(110)는 분할된 데이터를 마스터 노드(130)로부터 통보한 데이터 노드(140)들에 분산하여 저장한다. 도 3에서는 마스타 노드(130)가 데이터 노드(140)에게 블럭 A를 데이터 노드 1에, 블럭 B를 데이터 노드 4에, 블럭 C를 데이터 노드 5에 저장할 것을 통보하고, 애플리케이션 클라이언트가 이와 같이 블럭 A, B, C를 각각 데이터 노드 1, 4, 5에 분산하여 각각 저장하고 있다.
애플리케이션 클라이언트(110)가 데이터를 분할하는 블럭의 크기는, 예컨대 64 MB, 128 MB, 256 MB 등으로 필요에 따라 설정을 통하여 변경될 수 있다.
이와 같이 데이터를 작은 블럭 단위로 다수의 데이터 노드(140)에 분산하여 저장하므로, 데이터를 저장하고 있는 데이터 노드(140) 중 어느 하나의 데이터 노드(140)는 적은 수의 블럭들을 저장하고 있으며 비어 있는 공간이 대부분이라고 상정할 수 있다. 이때 마스터 노드(130)는 해당 데이터 노드(140)의 모든 블럭을 다른 데이터 노드(140)로 이동하여 저장할 수 있으며, 해당 데이터 노드(140)는 마스터 노드(130)에 의하여 해제된다. 이때 해당 데이터 노드(140)의 자원을 다른 애플리케이션이 사용할 수 있으므로 메모리의 효과적인 활용이 가능하다. 리소스 매니저(120)는 데이터 노드(140)가 사용하고 있는 저장 공간이 일정 용량 이하로 내려갈 경우 해당 데이터 노드(140)를 해제할 것인지를 결정하는 기준 사용량을 설정할 수 있다.
도 4는 본 발명의 일 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 4를 참조하면, 마스터 노드(130)는 각각의 데이터 노드(140)들이 어떤 블럭을 저장하고 있는지에 대한 정보를 메타 데이터(132)로 저장하여 가지고 있는다.
애플리케이션 클라이언트(110)가 데이터 노드(140)들에 데이터가 분할된 블럭을 저장한 후 마스터 노드(130)는 이에 대한 정보를 메타 데이터(132)에 기록하며, 마스터 노드(130)는 다음번에 이 메타 데이터(132)를 참조하여 애플리케이션 클라이언트(110)에게 어느 데이터 노드(140)에 블럭을 저장할 것인지 알려준다.
또한, 기존의 인-메모리 그리드에서는 데이터 유실을 방지하기 위하여 동일한 데이터를 복사하는 방식을 사용하기 때문에 일반적으로 2회 이상의 중복 데이터가 발생한다.
그러나 본 실시예에서, 마스터 노드(130)는 애플리케이션 클라이언트(110)가 애플리케이션 데이터를 저장할 때 원본 파일의 위치를 메타 데이터(132)와 함께 저장하여 보유한다.
따라서 추후에 데이터 유실이 발생하였을 때, 해당 데이터가 분할된 블럭이 저장되어 있는 모든 데이터 노드(140)는 마스터 노드(130)에 기록된 원본 파일 위치로부터 동시에 복사를 수행하여 데이터를 복구한다.
이러한 방식은 두가지 이점을 가진다. 첫째, 데이터를 복사하지 않으므로 동일한 데이터가 중복되지 않아서 메모리 용량을 효율적으로 사용할 수 있다. 둘째, 해당 데이터가 분할된 블럭이 분산 저장되어 있는 모든 데이터 노드(140)가 원본 파일 위치로부터 동시에 복사를 수행하므로 데이터를 빠르게 복구할 수 있다.
도 5는 본 발명의 일 실시예에 따른 분산 인-메모리 그리드 운용 방법을 나타낸 순서도이다.
본 발명의 일 실시예에 따른 분산 인-메모리 그리드 운용 방법은, 설정 과정(S510), 분산 인-메모리 그리드 실행 과정(S520), 데이터 노드 할당 과정(S530), 데이터 노드 해제 과정(S540), 데이터 저장 과정(S550)을 포함한다.
설정 과정(S510)에서는 전체 클러스터를 총괄하는 리소스 매니저(120)가 전체 클러스터가 사용할 수 있는 메모리의 최소용량과 최대용량, 단일 데이터 노드(140) 당 용량을 설정한다.
분산 인-메모리 그리드 실행 과정(S520)에서는 메모리 사용량의 범위에 따라 다수의 데이터 노드가 가동된다. 즉, 마스터 노드(130)가 전술한 설정 과정(S510)에서 설정된 메모리 용량을 확보하는데 필요한 수만큼 다수의 데이터 노드(140)를 최초 할당한다. 그러므로 한개의 마스터 노드(130)는 도 1에서와 같이 다수의 데이터 노드(140)를 관리한다.
데이터 노드 할당 과정(S530) 및 데이터 노드 해제 과정(S540)에서는 리소스 매니저(120)가 전체 클러스터 메모리 용량의 증가가 필요할지 감소가 필요할지 판단한다.
리소스 매니저(120)가 전체 클러스터 메모리 용량의 증가가 필요하다고 판단하면 새로운 데이터 노드 할당 신호를 생성하여 전체 클러스터 메모리가 증가되도록 한다(데이터 노드 할당 과정, S530).
즉, 마스터 노드(130)가 데이터 노드 할당 신호를 수신하면 새로운 데이터 노드를 할당하여 전체 클러스터의 메모리를 증가시키고, 데이터 노드 해제 신호를 수신하면 데이터 노드들 중에서 불필요한 데이터 노드를 해제한다.
더 자세히 설명하자면, 리소스 매니저(120)는 애플리케이션 클라이언트(110)의 애플리케이션 데이터가 더이상 저장될 공간이 없을 경우에, 마스터 노드(130)로부터 메모리 사용 승인 요청 신호를 수신한다. 리소스 매니저(120)는 마스터 노드(130)로부터 수신한 신호와 다른 클러스터 애플리케이션의 메모리 사용 상황을 고려하여 전체 클러스터 메모리 용량의 증가가 필요한지 판단하며, 전체 클러스터 메모리 용량의 증가가 필요하다고 판단하면 데이터 노드 할당 신호를 생성한다. 마스터 노드(130)는 데이터 노드 할당 신호를 수신하면 새로운 데이터 노드(140)를 할당하여 전체 클러스터의 메모리를 증가시킨다.
리소스 매니저(120)가 전체 클러스터 메모리 용량의 감소가 필요하다고 판단하면 기존 데이터 노드 해제 신호를 생성하여 전체 클러스터 메모리가 감소되도록 한다(데이터 노드 해제 과정, S540).
리소스 매니저(120)는, 다른 클러스터 애플리케이션(150)으로부터 메모리 사용 승인 요청 신호를 수신하면 전체 클러스터의 메모리 용량의 감소가 필요하다고 판단하여 데이터 노드 해제 신호를 생성하고 다른 클러스터 애플리케이션(150)에게 메모리를 할당하여 준다.
리소스 매니저(120)는 또한, 전체 클러스터의 메모리 용량을 항시 모니터링하며, 클러스터의 메모리 용량이 불필요하게 많이 할당되어 데이터가 저장되어 있지 않은 공간이 많은 경우 마스터 노드(130)는 불필요한 데이터 노드(140)를 해제한다.
전술하였듯이, 본 실시예에 따른 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법에서 애플리케이션 데이터는 기 설정된 크기의 블럭 단위로 분할되어 저장된다.
그러므로 데이터 노드 해제 과정(S540)에서는, 전체 클러스터의 메모리 용량을 항시 모니터링하던 리소스 매니저(120)가 다수의 데이터 노드 중 어느 하나의 데이터 노드(140)에 저장된 데이터들의 용량이 기 설정된 크기보다 적은 경우 마스터 노드(130)에 신호를 보낸다. 마스터 노드(130)는 해당 데이터 노드(140)에 신호를 보내어 저장된 블럭들을 다른 데이터 노드(140)로 이동하여 저장시키도록 하고, 해당 데이터 노드(140)는 해제시킨다.
데이터 저장 과정(S550)에서는 애플리케이션 클라이언트(110)가 애플리케이션 데이터를 기 설정된 크기의 블럭 단위로 분할하고, 이를 다수의 데이터 노드(140)에 분산하여 저장한다.
예컨대, 애플리케이션 클라이언트(110)는 도 3에서와 같이 Example.txt라는 이름의 데이터를 128 MB 크기의 블럭 3개, A, B 및 C로 분할하였다고 가정할 수 있다. 애플리케이션 클라이언트(110)는 데이터 노드(140)를 관리하는 마스터 노드(130)에게 어느 데이터 노드(140)에 각각의 블럭을 저장할 것인지를 질의하는 신호를 송신한다. 마스터 노드(130)는 데이터 노드들에 대한 정보와 메타 데이터(132)를 참조하여 블럭을 저장할 수 있는 데이터 노드(140)들을 통보해 준다. 애플리케이션 클라이언트(110)는 분할된 데이터를 마스터 노드(130)로부터 통보한 데이터 노드(140)들에 분산하여 저장한다. 도 3에서는 마스타 노드(130)가 데이터 노드(140)에게 블럭 A를 데이터 노드 1에, 블럭 B를 데이터 노드 4에, 블럭 C를 데이터 노드 5에 저장할 것을 통보하고, 애플리케이션 클라이언트가 이와 같이 블럭 A, B, C를 각각 데이터 노드 1, 4, 5에 분산하여 각각 저장하고 있다.
애플리케이션 클라이언트(110)가 데이터를 분할하는 블럭의 크기는, 예컨대 64 MB, 128 MB, 256 MB 등으로 필요에 따라 설정을 통하여 변경될 수 있다.
데이터 저장 과정(S550)에서는 또한, 애플리케이션 클라이언트(110)가 데이터 노드(140)들에 데이터가 분할된 블럭을 저장한 후 이에 대한 정보를 마스터 노드(130)가 보유한 메타 데이터(132)에 기록한다. 그러므로 마스터 노드(130)는 다음번에 이 메타 데이터(132)를 참조하여 애플리케이션 클라이언트(110)에게 어느 데이터 노드(140)에 블럭을 저장할 것인지 알려준다.
기존의 인-메모리 그리드에서는 데이터 유실을 방지하기 위하여 동일한 데이터를 복사하는 방식을 사용하기 때문에 일반적으로 2회 이상의 중복 데이터가 발생한다.
그러나 본 실시예에서, 마스터 노드(130)는 애플리케이션 클라이언트(110)가 애플리케이션 데이터를 저장할 때 원본 파일의 위치를 메타 데이터(132)와 함께 저장하여 보유한다.
따라서 추후에 데이터 유실이 발생하였을 때, 해당 데이터가 분할된 블럭이 저장되어 있는 모든 데이터 노드(140)는 마스터 노드(130)에 기록된 원본 파일 위치로부터 동시에 복사를 수행하여 데이터를 복구한다.
도 5에서는 단계 S510 내지 단계 S550을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 발명의 일 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것이다. 다시 말해, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 도 5에 기재된 순서를 변경하여 실행하거나 단계 S510 내지 단계 S550 중 하나 이상의 단계를 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 도 5는 시계열적인 순서로 한정되는 것은 아니다.
본 실시예에 따른 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법은, 개인용 컴퓨터, 메인프레임 컴퓨터, 핸드헬드(handheld) 컴퓨터, 소비자용 전자기기(셀룰러 폰, 핸드헬드 게임기기, 셋탑 박스, 또는 이와 유사한 기기), 네트워크 장치, 자동차/항공기 전자 컨트롤러 또는 다른 유사 장치를 포함하는 임의 형태의 멀티프로세서 또는 멀티코어 시스템에 적용될 수 있다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다.
따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되여야 할 것이다.
110 : 애플리케이션 클라이언트 120 : 리소스 매니저
130 : 마스터 노드 132 : 메타 데이터
140 : 데이터 노드 142 : 블럭
150 : 다른 클러스터 애플리케이션

Claims (8)

  1. 분산 인-메모리 장치가 분산 인-메모리를 관리하는 방법에 있어서,
    분산 인-메모리 그리드의 전체 클러스터가 사용할 수 있는 메모리 사용량의 범위를 초기 설정하는 설정 과정;
    상기 메모리 사용량의 범위에 따라 다수의 데이터 노드를 할당하는 인-메모리 그리드 실행 과정;
    전체 클러스터 메모리 용량의 증가가 필요하다고 판단하면 상기 전체 클러스터 메모리가 증가되도록 데이터 노드를 할당하도록 제어하는 데이터 노드 할당 과정;
    전체 클러스터 메모리 용량의 감소가 필요하다고 판단하면 상기 전체 클러스터 메모리가 감소되도록 데이터 노드를 해제하도록 제어하는 데이터 노드 해제 과정; 및
    상기 전체 클러스터가 보유하는 상기 데이터 노드들의 인-메모리에 애플리케이션 데이터를 저장시키는 데이터 저장 과정을 포함하되,
    마스터 노드로부터 메모리 사용 승인 요청 신호를 수신하면 상기 전체 클러스터 메모리 용량의 증가가 필요한지 여부를 판단하는 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법.
  2. 제 1항에 있어서,
    상기 전체 클러스터가 사용할 수 있는 메모리 사용량의 범위는,
    상기 전체 클러스터 메모리의 최소용량과 최대용량, 상기 전체 클러스터의 단일 데이터 노드당 용량인 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법.
  3. 제 1항에 있어서,
    상기 데이터 노드 할당 과정에서는 상기 애플리케이션 데이터가 저장될 공간이 없을 경우에 상기 전체 클러스터 메모리 용량의 증가가 필요하다고 판단하고,
    상기 데이터 노드 해제 과정에서는 다른 클러스터 애플리케이션으로부터 메모리 사용 승인 요청 신호를 수신하면 상기 전체 클러스터의 메모리 용량의 감소가 필요하다고 판단하고 다른 클러스터 애플리케이션에 메모리를 할당하여 주는 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법.
  4. 제 1항에 있어서,
    상기 데이터 저장 과정은,
    저장하고자 하는 애플리케이션 데이터는 기 설정된 크기의 블럭 단위로 분할되고, 상기 블럭들이 다수의 데이터 노드에 분산하여 저장되는 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법.
  5. 제 4항에 있어서,
    상기 데이터 저장 과정은,
    상기 애플리케이션 데이터의 블럭들이 어느 데이터 노드들에 저장되어 있는지를 기록한 메타 데이터가 생성되어 마스터 노드에 저장되는 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법.
  6. 제 1항에 있어서,
    상기 데이터 노드 해제 과정에서는,
    상기 다수의 데이터 노드 중 어느 하나의 데이터 노드에 저장된 데이터들의 용량이 기 설정된 크기보다 적은 경우 전체 클러스터 메모리 용량의 감소가 필요하다고 판단하고,
    해당 데이터 노드에 저장된 블럭들을 다른 데이터 노드로 이동하여 저장하고, 해당 데이터 노드는 해제하는 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법.
  7. 제 4항에 있어서,
    상기 데이터 저장 과정은,
    상기 애플리케이션 데이터가 저장될 때 원본 파일의 위치가 상기 마스터 노드에 기록되는 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법.
  8. 제 7항에 있어서,
    상기 애플리케이션 데이터가 유실된 경우에,
    상기 유실된 애플리케이션 데이터가 분할된 블럭이 저장되어 있던 모든 데이터 노드는, 상기 마스터 노드에 기록된 원본 파일의 위치로부터 동시에 복사를 수행하여 상기 데이터를 복구하는 것을 특징으로 하는 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법.
KR1020150000855A 2015-01-05 2015-01-05 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치 KR102193002B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150000855A KR102193002B1 (ko) 2015-01-05 2015-01-05 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150000855A KR102193002B1 (ko) 2015-01-05 2015-01-05 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20160084231A KR20160084231A (ko) 2016-07-13
KR102193002B1 true KR102193002B1 (ko) 2020-12-18

Family

ID=56505613

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150000855A KR102193002B1 (ko) 2015-01-05 2015-01-05 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102193002B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240004562A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Dynamic memory reconfiguration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003005986A (ja) * 2001-06-21 2003-01-10 Nec System Technologies Ltd メモリ使用量の制御装置、メモリ使用量の制御方法、ソフトウエアプログラム、計算機システム
JP2007034556A (ja) * 2005-07-26 2007-02-08 Fujifilm Corp 動的メモリ管理方法及び装置、並びにこれを用いた電子機器
KR100963009B1 (ko) 2007-10-25 2010-06-10 한양대학교 산학협력단 파일 관리 시스템 및 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100369799B1 (ko) * 2000-12-30 2003-01-30 삼성전자 주식회사 엠베드 시스템의 동적 메모리 관리방법 및 장치
CN102016748A (zh) * 2008-04-21 2011-04-13 自适应计算企业股份有限公司 用于管理计算环境中的能量消耗的系统和方法
KR20120063946A (ko) * 2010-12-08 2012-06-18 한국전자통신연구원 대용량 통합 메모리를 위한 메모리 장치 및 이의 메타데이터 관리 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003005986A (ja) * 2001-06-21 2003-01-10 Nec System Technologies Ltd メモリ使用量の制御装置、メモリ使用量の制御方法、ソフトウエアプログラム、計算機システム
JP2007034556A (ja) * 2005-07-26 2007-02-08 Fujifilm Corp 動的メモリ管理方法及び装置、並びにこれを用いた電子機器
KR100963009B1 (ko) 2007-10-25 2010-06-10 한양대학교 산학협력단 파일 관리 시스템 및 방법

Also Published As

Publication number Publication date
KR20160084231A (ko) 2016-07-13

Similar Documents

Publication Publication Date Title
CN107066319B (zh) 一种面向异构资源的多维调度系统
CN106233253B (zh) 资源供应系统及方法
US9052962B2 (en) Distributed storage of data in a cloud storage system
WO2019090523A1 (zh) 一种无服务器架构下业务部署的方法和函数管理平台
US8996469B2 (en) Methods and apparatus for job state tracking in cluster computing
US20120278344A1 (en) Proximity grids for an in-memory data grid
US10356150B1 (en) Automated repartitioning of streaming data
CN108132775B (zh) 一种租户管理系统及方法
CN106326239B (zh) 分布式文件系统及其文件元信息管理方法
US8938599B2 (en) Distributed graph storage system
CN102981929A (zh) 磁盘镜像的管理方法和系统
Chen et al. Federation in cloud data management: Challenges and opportunities
CN107832159A (zh) 管理分布式锁的方法和计算机可读存储介质
CN112596762A (zh) 一种滚动升级方法及装置
CN111857977B (zh) 弹性伸缩方法、装置、服务器和存储介质
US20140351550A1 (en) Memory management apparatus and method for threads of data distribution service middleware
CN105760391B (zh) 数据动态重分布的方法、数据节点、名字节点及系统
CN107528871B (zh) 存储系统中的数据分析
Salehian et al. Comparison of spark resource managers and distributed file systems
CN105302817B (zh) 分布式文件系统管理方法和装置
KR102193002B1 (ko) 메모리 동적 할당이 가능한 분산 인-메모리 그리드 운용 방법 및 장치
KR20130038517A (ko) 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법
CN110659303A (zh) 一种数据库节点的读写控制方法及装置
US20150169236A1 (en) System and method for supporting memory allocation control with push-back in a distributed data grid
CN102123171B (zh) 一种面向海量存储管理的存储虚拟化方法

Legal Events

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