KR20180028461A - 코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법 - Google Patents
코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법 Download PDFInfo
- Publication number
- KR20180028461A KR20180028461A KR1020187003102A KR20187003102A KR20180028461A KR 20180028461 A KR20180028461 A KR 20180028461A KR 1020187003102 A KR1020187003102 A KR 1020187003102A KR 20187003102 A KR20187003102 A KR 20187003102A KR 20180028461 A KR20180028461 A KR 20180028461A
- Authority
- KR
- South Korea
- Prior art keywords
- server
- data
- hash key
- hash
- file
- Prior art date
Links
Images
Classifications
-
- G06F17/30587—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G06F17/3033—
-
- G06F17/30477—
-
- G06F17/30864—
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G06N7/005—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명에 따르면, 코드 분산 해쉬테이블 기반의 맵리듀스 시스템에서, 코드 분산 해시테이블 기반의 파일 시스템 계층과 인메모리 캐시 계층의 이중계층의 링구조로 데이터를 관리하고 사용자의 데이터 접근 요청 빈도에 따라 데이터 접근 요청의 확률분포를 예측한 후, 예측된 확률분포를 기반으로 인메모리 캐시 계층의 코드 분산해시테이블의 해시키 범위를 조정하고 테스크를 스케줄링함으로써 로드 밸런싱이 가능하며, 캐시 히트율을 높일 수 있다.
Description
본 발명은 분산 파일 시스템에 관한 것으로, 특히 코드 분산 해시테이블 기반의 파일 시스템 계층과 인메모리 캐시 계층의 이중계층 링구조(double-layered ring structure)로 데이터를 관리하고 사용자의 데이터 접근 요청 빈도에 따라 데이터 접근 요청의 확률분포를 예측한 후, 예측된 확률분포를 기반으로 인메모리 캐시 계층의 코드 분산해시테이블(chord distributed hash table)의 해시키 범위(hash key range)를 조정하고 테스크(task)를 스케줄링함으로써 로드 밸런싱(load balancing)이 가능하며, 캐시 히트율을 높일 수 있는 코드 분산 해시테이블 기반의 맵리듀스 시스템 및 방법에 관한 것이다.
클라우드 컴퓨팅(cloud computing)이란 다수의 컴퓨터를 하나의 집합체로 묶어 가상의 연산집단인 클라우드를 구성하는 것으로, 데이터의 저장이나 연산을 개개의 컴퓨터에게 맡기는 것이 아니라 컴퓨터들의 집합체인 클라우드에게 위임하는 개념을 뜻한다. 클라우드 컴퓨팅은 여러 분야에서 활용되고 있으며 최근 가장 큰 쓰임새로 주목 받고 있는 분야는 '빅데이터' 분야이다.
이러한, 빅데이터는 대량의 테라바이트(Tera Byte)를 넘어 페타바이트(Peta Byte)나 그 이상의 크기를 가지는 데이터를 의미하는 것으로, 단일 컴퓨터로 처리하는 것이 불가능하기 때문에 클라우드 컴퓨팅은 빅데이터 처리의 기본 플랫폼으로 여겨지고 있다.
한편, 빅데이터를 위한 클라우드 컴퓨팅 환경 중 대표적으로 Java 언어를 기반으로 한 다중 컴퓨터 클라우드 환경인 아파치(Apache)의 하둡(Hadoop) 시스템 등이 있다.
이러한 하둡은 입력되는 데이터를 나누어 처리할 수 있도록 하는 하둡 분산 파일 시스템(Hadoop Distributed File System : HDFS)을 포함하며, 분산 저장된 데이터들은 대용량 데이터를 클러스터 환경에서 고속 병렬 처리하기 위해 개발된 맵리듀스(mapreduce)과정에 의해 처리된다.
그러나, 하둡에서 적용되고 있는 하둡 분산 파일 시스템은 중앙 파일 시스템으로써 중앙에 디렉토리를 관리하는 매니저가 있으며, 디렉토리를 관리하는 매니저가 각 서버에서 어떠한 데이터를 가지고 있는지에 대한 모든 관리를 수행하도록 하고 있어 너무 많은 데이터를 관리함에 따라 성능이 떨어지는 문제점이 있다.
또한, 하둡 분산 파일 시스템에서는 파일안에 어떠한 내용이 있는지는 전혀 고려하지 않고 파일을 적당히 분할하여 여러 개의 서버에 분산 저장하도록 하고 있어 특정 서버에만 필요한 데이터가 몰려서 저장되어 있을 수 있고, 어떤 서버는 저장된 데이터가 아예 없을 수도 있다.
따라서, 하둡에서 맵리듀스 작업 요청이 수신되는 경우 맵리듀스 작업 요청 처리에 필요한 특정 데이터가 많이 몰려 있는 서버에서만 맵이라는 함수가 여러개 돌아가게 되어 로드 밸런스가 맞지 않게 됨으로써 성능이 저하되는 문제점이 있다.
따라서, 본 발명에서는 코드 분산 해시테이블 기반의 파일 시스템 계층과 인메모리 캐시 계층의 이중계층의 링구조로 데이터를 관리하고 사용자의 데이터 접근 요청 빈도에 따라 데이터 접근 요청의 확률분포를 예측한 후, 예측된 확률분포를 기반으로 인메모리 캐시 계층의 코드 분산해시테이블의 해시키 범위를 조정하고 테스크를 스케줄링함으로써 로드 밸런싱이 가능하며, 캐시 히트율을 높일 수 있는 코드 분산 해시테이블 기반의 맵리듀스 시스템 및 방법을 제공하고자 한다.
상술한 본 발명은 코드 분산 해시테이블 기반의 맵리듀스 시스템으로서, 코드 분산 해시테이블을 기반으로 데이터를 저장하는 파일 시스템과 인메모리 캐시를 구비하는 다수의 서버와, 상기 파일 시스템과 인메모리 캐시에 저장된 데이터를 이중계층의 링구조로 관리하며, 외부로부터 특정 파일에 대한 데이터 접근 요청 수신 시 상기 다수의 서버 중 상기 데이터 접근 요청된 파일을 저장하고 있는 서버들로 맵리듀스 테스크를 할당하여 상기 맵리듀스 테스크 수행된 결과값을 상기 데이터 접근 요청에 대한 응답으로 출력하는 작업 스케줄러를 포함한다.
또한, 상기 작업 스케줄러는, 상기 데이터 접근 요청 수신 시, 상기 파일의 이름을 통해 해시키를 추출하고 각 서버의 인메모리 캐시에 할당된 해시키 범위를 확인하여 상기 파일을 저장하고 있는 서버를 검색하며, 상기 검색된 서버로부터 상기 파일에 대한 메타데이터를 수신하여 상기 파일이 저장된 서버들로 상기 맵리듀스 테스크를 할당하는 것을 특징으로 한다.
또한, 상기 작업 스케줄러는, 상기 파일에 대한 데이터 블록 구조와 각 데이터 블록이 분산 저장된 서버의 정보를 상기 메타데이터로 수신하며, 상기 각 데이터 블록이 저장된 서버들로 상기 맵리듀스 테스크를 할당하는 것을 특징으로 한다.
또한, 상기 인메모리 캐시는, 상기 코드 분산 해시테이블을 이용하여 데이터에 대응되는 해시키를 저장하고 있으며, 상기 해시키의 저장에 있어서 상기 인메모리 캐시에 할당된 해시키 범위에 해당하는 해시키와 상기 해당 해시키에 대응하는 데이터를 저장하고 있는 것을 특징으로 한다.
또한, 상기 작업 스케줄러는, 각 서버의 상기 인메모리 캐시의 해시키 범위를 각 서버에 대한 데이터 접근 요청 빈도에 따라 서버별로 동적으로 변경 설정하는 것을 특징으로 한다.
또한, 상기 작업 스케줄러는, 상기 파일의 각 데이터 블록에 대한 상기 맵리듀스 테스크 처리 과정에서 발생하는 중간계산결과를 상기 파일 시스템에 저장하는 것을 특징으로 한다.
또한, 상기 중간계산결과는, 상기 각 데이터 블록에 따라 서로 다른 해시키를 가지도록 생성되며, 각각 다른 서버로 분산되는 것을 특징으로 한다.
또한, 상기 중간계산결과는, 상기 인메모리 캐시의 중간 결과물 재사용 캐시 영역에 저장되는 것을 특징으로 한다.
또한, 상기 시스템은, 상기 작업 스케줄러와 연동되며, 새로운 서버의 추가, 제거, 복구를 관리하거나 파일의 업로드를 관리하는 리소스 매니저를 더 포함하는 것을 특징으로 한다.
또한, 본 발명은 파일 시스템과 인메모리 캐시를 구비하는 다수의 서버와 상기 서버로 맵리듀스 테스크를 할당하는 작업 스케줄러를 포함하는 코드 분산 해시테이블 기반의 맵리듀스 시스템에서 맵리듀스 테스크 수행방법에 있어서, 상기 작업 스케줄러에서 상기 파일 시스템과 인메모리 캐시에 저장된 데이터를 이중계층의 링구조로 관리하는 단계와, 외부로부터 특정 파일에 대한 데이터 접근 요청을 수신하는 단계와, 상기 파일에 대한 해시키를 추출하여 상기 파일을 저장하고 있는 파일 시스템의 서버를 검색하는 단계와, 상기 검색된 서버로부터 상기 파일에 대한 데이터 블록 구조와 각 데이터 블록의 분산 저장된 서버의 정보를 메타데이터로 수신하는 단계와, 상기 각 데이터 블록이 저장된 서버들로 맵리듀스 테스크를 할당하는 단계와, 상기 맵리듀스 테스크 수행된 결과값을 상기 작업 요청에 대한 응답으로 출력하는 단계를 포함한다.
또한, 상기 파일 시스템과 인메모리 캐시는, 코드 분산 해시테이블을 기반으로 상기 데이터를 저장하는 것을 특징으로 한다.
또한, 상기 인메모리 캐시는, 상기 코드 분산 해시테이블을 이용하여 데이터에 대응되는 해시키를 저장하고 있으며, 기설정된 해시키 범위를 할당받아, 상기 해시키 범위에 해당하는 해시키와 상기 해당 해시키에 대응하는 데이터를 저장하고 있는 것을 특징으로 한다.
또한, 상기 해시키 범위는, 각 서버에 대한 데이터 접근 요청 빈도에 따라 서버별로 동적으로 변경 설정되는 것을 특징으로 한다.
또한, 상기 맵리듀스 테스크는, 상기 각 데이터 블록이 저장된 서버들에서 처리되며, 상기 맵리듀스 테스크의 처리 과정에서 발생하는 중간계산결과가 상기 파일 시스템에 저장되는 것을 특징으로 한다.
또한, 상기 중간계산결과는, 상기 각 데이터 블록에 따라 서로 다른 해시키를 가지도록 생성되며, 각각 다른 서버로 분산되는 것을 특징으로 한다.
또한, 상기 중간계산결과는, 상기 인메모리 캐시의 중간 결과물 재사용 캐시 영역에 저장되는 것을 특징으로 한다.
본 발명에 따르면, 코드 분산 해시테이블 기반의 파일 시스템 계층과 인메모리 계층의 이중계층의 링구조로 데이터를 관리하고 사용자의 데이터 접근 요청 빈도에 따라 데이터 접근 요청의 확률분포를 예측한 후, 예측된 확률분포를 기반으로 인메모리 계층의 코드 분산해시테이블의 해시키 범위를 조정하고 테스크를 스케줄링함으로써 로드 밸런싱이 가능하며, 캐시 히트율을 높일 수 있는 이점이 있다.
또한, 본 발명에 따르면, 중앙제어식 분산파일시스템 대신에 코드 분산파일시스템(Chord distributed file system)을 사용하고, 코드 분산파일시스템에서 각 서버는 코드 라우팅 테이블을 관리하면서 중앙에서 관리되는 메타데이터(metadata)를 통하지 않고 바로 원격(remote)의 파일에 접근할 수 있기 때문에 확장성이 보장되는 이점이 있다.
또한, 분산메모리 환경을 적극적으로 활용하는 인메모리 캐시를 사용하고, 코드 분산해시테이블을 이용하여 키밸류 데이터를 인덱싱하며, 입력 데이터뿐만 아니라 맵테스크의 결과로써 생성된 중간계산결과도 인메모리 캐시에 저장함으로써 캐시 히트율을 높일 수 있다.
또한, 인메모리 캐시의 인덱싱은 파일 시스템을 관리하는 코드 분산해시테이블과 독립적으로 관리되어, 해시키 범위를 데이터 요청의 빈도에 따라 유동적으로 조절함으로써 서버마다 고른 데이터 접근이 이루어질 수 있도록 할 수 있는 이점이 있다.
또한, 지역성인식 페어 스케줄링 알고리즘을 적용하여 작업 스케줄러가 분산 해시키 범위를 토대로 어떤 서버의 인메모리 캐시에 필요한 데이터가 저장되어 있을지를 확인하여 데이터들을 재사용할 수 있도록 스케줄링하고, 만약 데이터 요청이 특정 데이터에 편향되어 있는 경우, 해시키 범위를 조절함으로써 모든 서버에 데이터 접근이 고루 이루어질 수 있도록 하는 이점이 있다.
도 1은 본 발명의 실시예에 따른 코드 분산 파일 시스템의 동작 개념도,
도 2는 본 발명의 실시예에 따른 코드 분산 해시테이블 기반의 파일 시스템과 인메모리의 이중계층 링구조로 데이터를 관리하는 개념도,
도 3 내지 도 5는 본 발명의 실시예에 따른 데이터 접근 확률 분포 그래프 예시도,
도 6은 본 발명의 실시예에 따른 누적 확률분포 그래프 예시도,
도 7은 본 발명의 실시예에 따른 코드 분산 해시테이블 기반의 맵리듀스 시스템에서 맵리듀스 테스크 수행 동작 개념도.
도 2는 본 발명의 실시예에 따른 코드 분산 해시테이블 기반의 파일 시스템과 인메모리의 이중계층 링구조로 데이터를 관리하는 개념도,
도 3 내지 도 5는 본 발명의 실시예에 따른 데이터 접근 확률 분포 그래프 예시도,
도 6은 본 발명의 실시예에 따른 누적 확률분포 그래프 예시도,
도 7은 본 발명의 실시예에 따른 코드 분산 해시테이블 기반의 맵리듀스 시스템에서 맵리듀스 테스크 수행 동작 개념도.
이하, 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
먼저, 본 발명에서는 하둡 등과 같은 종래 중앙제어식 분산 파일 시스템 대신에 코드 분산 파일 시스템(chord distributed file system)을 사용하였다. 이러한 코드 분산 파일 시스템에서 각 서버는 코드 라우팅 테이블을 관리하면서 중앙에서 관리되는 메타데이터(metadata)를 통하지 않고 바로 원격의 파일에 접근할 수 있기 때문에 확장성이 보장될 수 있다.
도 1은 본 발명의 실시예에 따른 코드 분산 해시테이블(chord distributed hash table : DHT) 기반의 맵리듀스(mapreduce) 시스템에 적용된 파일 시스템의 개념을 도시한 것이다.
이하, 위 도 1을 참조하여 본 발명의 코드 분산 파일 시스템에서의 동작을 보다 상세히 설명하기로 한다.
종래 중앙 제어식 분산파일 시스템에서는 중앙 디렉토리에 각각의 노드에서 가지고 있는 데이터에 대한 정보를 모두 저장하고 있는 반면에 본 발명의 코드 분산 파일 시스템에서는 각각의 노드에서 이웃 노드에 대한 정보를 가지도록 구현된다.
즉, 각각의 노드는 도 1에 도시된 바와 같이 화살표로 표시된 바로 옆의 인접 노드와 인접 노드로부터 다시 2씩 곱한 이웃 노드들에 대한 정보를 가지도록 구현될 수 있다. 예를 들어 해시키가 0번(100)인 노드 바로 옆의 이웃 노드인 해시키가 1인 노드(102)와 해시키가 2인 노드(104), 해시키가 4인 노드(106), 해시키가 8인 노드(114)에 대한 정보를 알 수 있다.
이때, 위와 같이 구현되는 본 발명의 코드 분산 파일 시스템에서 해시키가 0인 노드(100)로 예를 들어 해시키 7에 대응되는 데이터에 대한 사용자 요청 메시지가 수신되는 경우, 해시키가 0인 노드(100)에서는 해시키 7를 가지고 있는 노드(112)에 대한 정보를 알지 못하므로, 자신이 알고 있는 도 1에서 도시된 바와 같은 화살표로 연결되어 있는 해시키가 1인 노드(102), 해시키가 2인 노드(104), 해시키가 4인 노드(106), 해시키가 8인 노드(114) 중, 해시키가 4인 노드(106)로 사용자 요구 메시지를 전송한다. 이때, 해시키가 0인 노드(100)는 자신이 알고 있는 해시키 중 해시키 8은 7을 넘어버리므로 7보다 작은 해시키 중 가장 큰 해시키 4를 가지고 있는 노드(106)로 사용자 요구 메시지를 전송하게 되는 것이다.
그러면, 해시키가 4인 노드(106)에서는 다시 자신이 알고 있는 화살표로 연결되어 있는 해시키가 5인 노드(108), 해시키가 6인 노드(110), 해시키가 8인 노드(114), 해시키가 12인 노드(116) 중 해시키가 6인 노드(110)로 사용자 요구 메시지를 전송한다. 이때, 해시키가 4인 노드(106)는 자신이 알고 있는 해시키중 해시키 12는 7을 넘어버리므로 7보다 작은 해시키 중 가장 큰 해시키 6을 저장하고 있는 노드(110)로 사용자 요구 메시지를 전송하게 되는 것이다.
이어, 다시 사용자 요구 메시지를 수신한 해시키가 6인 노드(110)에서도 자신이 알고 있는 노드 중 사용자 요구 메시지를 전송할 노드를 검색하게 되는데, 이때, 해시키가 6인 노드(110)에서는 사용자 요구 메시지에 대응되는 해시키 7을 저장하고 있는 노드(112)를 알고 있으므로, 해시키 7을 저장하고 있는 노드(112)로 사용자 요구 메시지를 전송하게 된다.
위와 같은 방식을 통해 해시키 7에 대응되는 데이터를 요구하는 사용자 요구 메시지를 최초로 수신한 해시키 0을 저장하고 있는 노드(100)에서 데이터를 읽어올 수 있게 되는 것이다.
도 2는 본 발명의 실시예에 따른 코드 분산 해시테이블 기반의 파일 시스템과 인메모리 캐시의 이중계층 링구조로 데이터를 관리하는 개념을 도시한 것이다.
위 도 2를 참조하면, 본 발명에서는 하둡 등에서와 같은 중앙 디렉토리가 존재하지 않으며, 각각의 서버에서 자신의 피어(peer)들에 대한 정보만 가지고서 파일 관리를 하게 되며, 이러한 파일 관리 기법을 파일 시스템에만 적용한 것이 아니라 파일 시스템과 연동되는 캐시메모리인 인메모리 캐시에도 적용하여 이중계층의 링구조로 파일을 관리하게 된다.
이하, 도 2를 참조하여 코드 분산 해시테이블 기반의 코드 분산 파일 시스템에서의 동작을 보다 상세히 설명하기로 한다.
먼저, 각각의 서버에서 관리하는 분산 파일 시스템은 도 2에서 보여지는 바와 같이 파일 시스템(202, 206, 210, 214, 218, 222)과 인메모리 캐시(in memory)(200, 204, 208, 212, 216, 220)로 구성될 수 있으며, 본 발명에서는 이러한 다수의 서버의 파일 시스템과 인메모리 캐시를 이중계층의 링구조로 연결하여 사용자로부터의 데이터 접근(access) 요청을 처리할 수 있다. 이때, 이러한 파일 시스템은 하드 디스크(hard disk)의 등의 대용량 저장장치를 말할 수 있으며, 인메모리 캐시는 캐시 메모리(cache memory) 등을 말할 수 있으나, 이에 한정되는 것은 아니다.
또한, 본 발명에서는 각 서버의 파일 시스템과 인메모리 캐시상에 해시키 범위(hash key range)를 할당하고, 이러한 해시키에 대한 정보를 후술하는 작업 스케줄러(job scheduler)에서 관리하도록 하여 사용자로부터의 특정 파일에 대한 데이터 접근 요청 메시지를 처리하도록 할 수 있다.
각각의 서버는 자신이 저장하는 관리하는 해시키의 범위가 설정될 수 있으며, 이러한 해시키의 범위는 파일 시스템과 인메모리 캐시에 모두 설정될 수 있다.
예를 들어 A 서버의 파일 시스템(202)은 56∼5의 해시키 범위에 해당하는 해시키를 저장하도록 해시키 범위가 설정될 수 있으며, 인메모리 캐시(200)는 57∼5의 해시키 범위를 가지도록 설정될 수 있다. 또한, B 서버의 파일 시스템(206)은 5∼15의 해시키 범위를 가지며, 인메모리 캐시(204)는 5∼11의 해시키 범위를 가지도록 설정될 수 있다. 또한, C 서버의 파일 시스템(210)은 15∼26의 해시키 범위를 가지며, 인메모리 캐시(208)는 11∼18의 해시키 범위를 가지도록 설정될 수 있다. 또한, D 서버의 파일 시스템(214)은 26∼39의 해시키 범위를 가지며, 인메모리 캐시(212)는 18∼39의 해시키 범위를 가지도록 설정될 수 있다. 또한, E 서버의 파일 시스템(218)은 39∼47의 해시키 범위를 가지며, 인메모리 캐시(216)는 39∼48의 해시키 범위를 가지도록 설정될 수 있다. 또한, F 서버의 파일 시스템(222)은 47∼56의 해시키 범위를 가지며, 인메모리 캐시(220)는 48∼57의 해시키 범위를 가지도록 설정될 수 있다.
이때, 본 발명에서는 파일 시스템과 달리 인메모리 캐시의 해시키 범위 설정에 있어서 사용자로부터의 각 서버에 대한 데이터 접근(data access) 요청의 회수를 기반으로 해시키 범위를 변경시킬 수 있도록 한다. 예를 들어 B 서버의 경우 파일 시스템(206)의 해시키 범위는 5∼15인 반면에 인메모리 캐시(204)의 해시키 범위는 5∼11로 변경하여 설정할 수 있다.
이와 같이 인메모리 캐시의 해시키 범위를 변경 설정하는 이유는 파일 시스템에 존재하는 해시키는 다른 서버의 파일 시스템으로 이동하는 경우 오버헤드(over head)가 크게 되지만, 인메모리 캐시에 존재하는 해시키는 다른 서버의 인메모리 캐시로 이동하는 경우 상대적으로 오버헤드가 크지 않기 때문이며, 인메모리 캐시에서 데이터를 못 찾는 경우 파일 시스템에서 해당 데이터를 찾으면 되므로 크게 문제가 되지 않기 때문이다.
따라서, 본 발명에서는 인메모리 캐시에 할당되는 해시키 범위를 사용자로부터의 데이터 접근 요청 회수를 기반으로 변경 설정시킴으로 데이터 검색 효율을 높일 수 있도록 한다.
이때, 위와 같이 인메모리 캐시에 할당되는 해시키 범위를 변경 설정에 대해 좀더 자세히 설명하기로 한다.
먼저, 각각의 서버에서 관리되고 있는 데이터에 대해 최근에 n개의 맵리듀스 테스크(mareduce task)들이 해시키에 접근한 분포가 도 3에서 보여지는 히스토그램(histogram)과 같다면, 도 3에서와 같은 히스토그램을 올드 히스토리(old history)로 관리하고, 그 다음 n개의 맵리듀스 테스크들이 들어왔을 때 해시키에 접근한 분포에 대해 도 4에서와 같은 히스토그램을 산출한 후, 무빙 에버리지(moving average) 공식을 이용하여 합친다.
도 5는 해시키에 접근한 분포에 따른 도 3의 기존 히스토그램과 도 4의 가장 최근의 히스토그램을 무빙 에버리지 공식을 이용하여 합친 그래프를 도시한 것이며, 이러한 도 5에 도시된 그래프는 해시키 범위에서 데이터 접근이 발생하는 확률분포를 나타낼 수 있다.
이어, 다시 위 도 5에서와 같은 확률분포를 이용하여 도 6에서와 같은 누적 확률분포에 대한 그래프를 산출할 수 있다.
이때, 위 도 6에서와 같이 누적 확률 분포상에서 각 서버의 구간들이 같은 확률분포를 갖도록 표시할 수 있고, 이렇게 표시하는 경우 상대적으로 많은 접근(access)이 발생하는 데이터를 가지고 있는 서버(server 2, server4)의 해시키 범위는 줄어들고, 상대적으로 적게 접근되는 데이터를 가지고 있는 서버(server 1, server 3, server 5)의 해시키 범위는 넓어질 수 있다. 이에 따라 위와 같은 해시키 범위를 기반으로 각 서버의 인메모리 캐시상 할당되는 해시키 범위를 각 서버의 데이터 접근에 따른 해시키 범위로 변경 설정할 수 있는 것이다.
위와 같이 해시키 범위를 변경하는 경우 원래 파일 시스템에 할당된 해시키 범위와 다르게 서버별로 데이터 접근이 발생하는 확률 분포에 따라서 인메모리 캐시의 해시키 범위를 동적으로 변화시킬 수 있고, 이렇게 함으로써 서버별 로드 밸런스(load balance)를 맞출 수 있어 파일 시스템의 성능을 높일 수 있다.
다시 도 2를 참조하면, 예를 들어 D 서버의 경우 D 서버의 인메모리 캐시(212)는 상대적으로 많이 데이터 접근이 이루어지지 않으므로 D 서버의 인메모리 캐시(212)에는 해시키 범위를 넓게 설정하여 많은 해시키를 관리하도록 할 수 있고, B 서버의 경우 B 서버의 인메모리 캐시(204)는 상대적으로 많이 데이터 접근이 이루어지고 있으므로 B 서버의 인메모리 캐시(204)에는 해시키 범위를 좁게 설정하여 파일 시스템의 해시키 범위보다 적은 해시키를 관리하도록 할 수 있다.
즉, 종래의 하둡 등과 같은 파일 시스템에서는 예를 들어 해시키 5에서 15 사이에 들어오는 데이터 접근 요청에 대해 모두 다 B 서버에서 수행하도록 되어 있어서 5부터 15까지 데이터 접근 요청이 굉장히 많이 발생하는 경우 B 서버만 바쁘게 되고 나머지 서버는 여유 자원이 있음에도 불구하고 활용되지 않게 되어 성능이 나빠지게 된다.
반면에 본 발명에서는 도 2에서 보여지는 바와 같이 상대적으로 데이터 접근 요청이 많은 B 서버에 대해서는 B 서버의 인메모리 캐시(204)에 할당되는 해시키 범위를 줄여줌으로써 B 서버가 담당하는 로드를 일정 부분 줄여주고, 나머지 부분은 C 서버에서 동작이 이루어지도록 함으로써 서버간 로드 밸런스가 맞춰져서 성능을 높일 수 있게 되는 것이다.
도 7은 본 발명의 실시예에 따른 코드 분산 해시테이블 기반의 맵리듀스 시스템에서 맵리듀스 테스크 수행 동작 개념을 도시한 것이다.
위 도 7을 참조하면, 코드 분산 해시테이블 기반의 맵리듀스 시스템은 작업 스케줄러(job scheduler)(702)와 리소스 매니저(resource manager)(704)와 이중계층의 링구조로 연결되는 다수의 서버의 파일 시스템(202, 206, 210, 214, 218, 222)과 인메모리 캐시(in memory cache)(200, 204, 208, 212, 216, 220) 등을 포함할 수 있다.
먼저, 작업 스케줄러(702)는 코드 분산해시테이블 기반의 파일 시스템 계층과 인메모리 캐시 계층의 이중계층의 링구조로 데이터를 관리하며, 맵리듀스 테스크들을 각 서버에 할당하는 역할을 수행한다. 리소스 매니저(704)는 새로운 서버의 추가, 제거, 복구 등을 관리하며, 파일의 업로드도 관리한다.
작업 스케줄러(702)에서 맵리듀스 테스크를 각 서버에 할당하면, 각 서버는 분산된 방법으로 분산 해시테이블 파일 시스템의 데이터 블록에 접근한다. 이때, 중앙에서 동작하는 작업 스케줄러(702)와 리소스 매니저(704)는 시스템의 확장성을 위하여 최소한의 기능만 하도록 구현될 수 있다.
또한, 작업 스케줄러(702)에서는 해시함수에 의해 각 데이터 블록들의 해시키를 결정하며, 이 해시키를 통해 각 데이터 블록을 어느 서버에 저장할지 결정한다.
또한, 각 서버는 최대 m 개의 서버를 분산해시테이블에 저장하여 관리할 수 있으며, m 의 값은 시스템의 관리자가 선택할 수 있고, 이때 m 의 값은 S 를 전체 서버의 개수라고 했을 때, 2m - 1 > S 를 충족해야한다.
이때, 클러스터의 전체 서버 개수가 천 개 이상이 되지 않는다면, m 을 서버의 개수와 같게 하여 한 번 만에 데이터에 접근할 수 있게 한다. 또한, 서버의 추가, 제거가 많은 동적인 종래 peer-to-peer 시스템과 달리 본 발명의 클러스터 구성은 상대적으로 정적이기 때문에 많은 개수의 서버를 해시테이블에 저장하는 것이 확장성에 크게 지장을 주지 않으며, 데이터 접근 성능을 높이는 효과가 있다.
이러한 모든 서버의 정보를 가지고 있는 분산해시테이블을 통해 각 파일의 키 범위를 고려하여 파일에 바로 접근할 수 있으며 중앙제어식인 하둡 등의 종래 시스템과 비교하여 확장성이 우수하다. 특히 각 서버에 저장되는 해시테이블은 모든 파일들의 메타데이터를 저장하는 것이 아니라 서버들이 담당하는 해시키 범위만을 저장하도록 함으로써 해시테이블이 차지하는 용량은 매우 작고 오버헤드가 거의 없도록 할 수 있다.
예를 들어 한 서버가 데이터 접근 요청을 받으면 데이터의 해시키가 해당 서버의 해시키 범위 안에 있는지 체크한 후, 범위 안에 있으면 해당 서버의 파일 디렉토리에서 데이터 접근을 제공하며, 다른 서버의 범위 안에 있으면 요청을 해당 서버로 전달하도록 하는 것이다.
또한, 분산해시테이블은 다른 서버들의 정보를 서버의 추가, 제거 등이 일어날 때만 업데이트하며, 하트비트(heartbeat) 메시지를 주기적으로 주고 받으면서 서버의 오작동(failure)을 감지한다. 만약 한 서버가 오작동하게 되면 리소스 매니저(704)가 상실된 파일 블록들을 다른 서버의 복제된 블록들로부터 복구하도록 할 수 있다. 한편 이러한 파일 블록들의 복제는 서로 다른 k 개의 해시 함수를 통해 k 개만큼 복제되어 서로 다른 서버에 저장되며, k 값은 시스템 관리자에 의해 조절될 수 있다.
또한, 인메모리 캐시(200, 204, 208, 212, 216, 220)의 캐시 계층은 dCache 와 iCache 의 두 개 파티션으로 나뉘어 관리될 수 있으며, dCache 는 입력 데이터 블록이 저장되는 파티션이고, iCache 는 중간 결과물을 재사용하는 캐시 영역으로 구분되는 파티션으로, 맵테스크의 결과인 중간계산결과의 데이터가 저장될 수 있다. 즉, 본 발명의 코드 분산해시테이블 인메모리 캐시에서는 작업의 중간계산결과까지 저장하여 재사용할 수 있도록 하며, 또한 memcached 와 같이 다른 서버의 캐시에 저장되어 있는 데이터도 읽어올 수 있게 하여 재사용도를 더욱 높일 수 있다. 이때, 특히 코드 분산해시테이블의 해시키를 이용하여 다른 서버에 저장되어 있는 데이터를 찾기 때문에 효율적일 수 있다. 또한 입력 데이터 블록들이 고루 분산되지 않은 상황에서도 다른 서버의 캐시에 접근할 수 있도록 함으로써 로드 밸런싱의 불균형 문제도 해결될 수 있다.
일반적으로 계산중심의 작업들은 같은 어플리케이션(application)이 같은 입력 데이터를 요청하는 경우가 많다. 데이터베이스의 질의(query)들이 같은 테이블을 여러 번 참조하는 것이 그 예에 해당한다. 몇몇 연구에서 맵리듀스 작업의 30% 이상이 반복적으로 수행되고 있음이 알려짐에 따라 중간계산결과를 캐시에 저장하는 본 발명의 인메모리 캐시를 통해 불필요한 중복 계산 과정을 대폭 줄여줄 수 있다.
이때, iCache에서 중간계산결과를 검색하기 위하여, 본 발명에서는 어플리케이션 ID, 입력 데이터 블록, 어플리케이션 매개변수 등의 해당 중간계산결과를 구분할 수 있도록 메타데이터를 구성하여 관리할 수 있다. 따라서, 새로운 작업이 들어오면 이러한 메타데이터를 탐색하여 중간계산결과를 재사용할 수 있는지 여부를 판단하고, 재사용할 수 있는 메타데이터가 발견되면 맵 과정을 거치지 않고 저장된 중간계산결과를 리듀스 과정에서 바로 처리할 수 있도록 한다. 또한, iCache에서 중간계산결과를 재사용할 수 없는 경우, dCache에서 입력 데이터 블록의 사용 가능여부를 판단하여 사용 가능하면 바로 캐시에서 입력 데이터에 접근한다. dCache 에서도 입력 데이터 블록을 사용할 수 없는 경우, 분산해시테이블 파일시스템 계층을 통해 입력 데이터에 접근하도록 할 수 있다.
또한, 전술한 바와 같이 파일시스템 계층과 다르게, 인메모리 캐시의 해시키 범위에 대해서는 중앙의 작업 스케줄러(702)가 관리하면서 해시키 영역을 각 서버마다 분할 후 할당한다. 이때 각 서버마다 할당하는 해시키 범위는 동적으로 조절되기 때문에 접근 요청이 많은 입력 데이터의 경우 다수의 서버에 저장되게 된다. 예를 들어 많은 작업들이 하나의 입력 데이터에 접근 요청을 하는 경우, 본 발명에서는 작업 스케줄러가 지역성 인식 페어(fair) 스케줄링을 통해서 해당 입력 데이터가 여러 서버로 복제되도록 함으로서 다수의 서버에서 입력 데이터를 처리할 수 있도록 한다. 따라서 연속된 작업들의 캐시 사용률을 극대화하면서 로드 밸런싱을 보장할 수 있게 된다.
이하에서는 다시 위 도 7을 참조하여 코드 분산 해시테이블 기반의 맵리듀스 시스템에서 맵리듀스 테스크를 수행하는 동작에 대해 보다 상세히 설명하기로 한다.
도 7을 참조하면, 먼저 작업 스케줄러(702)는 도 2에 도시된 바와 같이 각 서버의 인메모리 캐시(200, 204, 208, 212, 216, 220)의 해시키 범위를 할당하고, 서버별 파일 시스템(202, 206, 210, 214, 218, 222)의 해시키 범위의 정보를 관리하고 있다.
이러한 상태에서 특정 데이터 접근 어플리케이션(application)(700)을 통해 특정 파일에 대한 사용자로부터의 데이터 접근 요청이 수신될 수 있다.
이와 같이 데이터 접근 요청이 수신되는 경우 작업 스케줄러(702)는 다수의 서버 중 사용자에 의해 데이터 접근 요청된 파일을 저장하고 있는 서버들로 맵리듀스 테스크를 할당하여 맵리듀스 테스크 수행된 결과값을 데이터 접근 요청에 대한 응답으로 출력할 수 있다.
즉, 작업 스케줄러(702)는 먼저 사용자로부터 데이터 접근 요청된 파일의 이름을 가지고 해시 함수를 돌려서 요청된 데이터에 해당하는 해시키를 얻을 수 있다.
이때 만일, 요청된 데이터의 해시키가 38번이라고 가정하는 경우 작업 스케줄러(702)는 파일 시스템에 대해 할당된 해시키 범위 정보를 참조하여 해시키 38번이 해시키 26번과 39번 사이를 저장하고 있는 D 서버에 저장되어 있는 것을 알게 되고, 해시키 38번에 해당하는 파일에 대한 정보를 얻기 위해 D 서버의 파일 시스템(214)에 접근한다(S1).
여기서, 해시키 38번에 해당하는 파일은 하나의 파일이나 이 파일은 여러개로 쪼개져서 여러개의 서버에 분산되어 있을 수 있다. 그러나 해시키 38번에 해당하는 파일이 여러개로 쪼개져서 분산되어 있는 경우라 하더라도 D 서버는 해시키 38번에 해당하는 파일에 대한 모든 정보를 가지고 있게 된다.
이때, 이러한 해시키 38번에 해당하는 파일이 예를 들어 두 개의 데이터 블록으로 나누어져 분산되어 있고 각 데이터 블록의 해시키가 5번과 56번인 경우 D 서버는 이러한 파일의 메타데이터 정보를 작업 스케줄러(702)에게 제공한다(S2).
그러면, 작업 스케줄러(702)는 메타데이터 정보를 이용하여 해시키 38번에 해당하는 파일이 두 개의 데이터 블록으로 분리되어 다른 서버에 분산되어 있음을 알게 되고, 각각의 데이터 블록에 대한 해시키 5번과 해시키 56번에 해당되는 해시키 범위를 가지는 인메모리 캐시에 해당하는 서버를 확인한다.
이때, 디스크 파일 시스템에 할당된 해시키 범위와 인메모리 캐시에 할당된 해시키 범위가 서로 다를 수 있으므로 작업 스케줄러(702)는 서버별 인메모리 캐시에 할당된 해시키 범위 정보 테이블(703)를 이용하여 해시키 5번과 해시키 56번에 해당하는 인메모리 캐시를 확인하게 된다.
여기서, 다시 도 7을 참조하면, B 서버의 인메모리 캐시(204)가 해시키 5번을 가지고 있고, F 서버의 인메모리 캐시(220)가 해시키 56번을 가지고 있음을 알 수 있다.
따라서, 작업 스케줄러(702)는 데이터 접근 요청된 파일이 두 개의 데이터 블록으로 쪼개져 서로 다른 서버에 분산 저장되어 알 수 있고, 두 개의 맵퍼가 각각 B 서버와 F 서버에서 실행되어야 하는 등과 같은 맵테스크 스케줄링(map task schedule)을 수행하게 된다(S3).
이에 따라 맵리듀스를 수행하는 해당 서버는 작업 스케줄러(702)로부터 맵테스크 스케줄 정보를 수신하여 액세스 요청된 파일의 데이터 블록이 분산 저장되어 있는 B 서버와 F 서버에서 각각 맵함수를 실행시켜 키, 값 데이터를 생성하게 된다.
한편, 작업 스케줄러(702)는 해시키 5번과 해시키 56번의 데이터가 B 서버의 인메모리 캐시(204)와 F 서버의 인메모리 캐시(220)에 존재하는 경우 해당 인메모리 캐시에서 바로 읽어오면 되나, 만약에 해당 인메모리 캐시에 해시키 5번과 해시키 56번의 데이터가 존재하지 않는 경우에는 파일 시스템에서 데이터를 읽어올 수 있다.
이때, 도 7에서 보여지는 바와 같이 해시키 56번의 데이터는 인메모리 캐시(220)상에서는 F 서버이지만 파일 시스템(202)상에서는 A 서버의 파일 시스템에 저장되어 있으므로 캐시 미스(cache miss)가 발생할 수 있으며, 캐시 미스가 발생하는 경우 작업 스케줄러(702)는 A 서버의 파일 시스템(202)으로부터 해시키 56번의 데이터를 읽어오게 된다(S4).
또한, 마찬가지로 해시키 5번의 데이터에 대해서도 B 서버의 인메모리 캐시(204)상에 존재하지 않아 캐시 미스가 발생하는 경우, 해시키 5번의 데이터를 저장하고 있는 B 서버의 파일 시스템(206)으로부터 해시키 5번의 데이터를 읽어오게 된다. 해시키 5번의 경우에는 서로 비슷하게 인메모리 캐시(204)와 파일 시스템(206)에 할당된 해시키 범위가 비슷하게 맞아서 동일한 서버의 파일 시스템에서 읽어오는 케이스가 될 수 있다.
이어, 해당 서버에서 위와 같이 B 서버와 F 서버에 대해서 맵함수를 실행하고 나면, 그 중간계산결과가 나오게 되며, 이러한 중간계산결과는 다시 데이터 블록에 따라 서로 다른 해시키로 도출될 수 있다.
따라서, 작업 스케줄러(702)는 맵테스크 과정에서 출력된 중간계산결과로서 출력된 해시키가 몇 번인지를 확인하고 해당하는 해시키 범위를 가지는 서버의 인메모리 캐시에 저장할 수 있다. 이때, 예를 들어 두 개의 출력값에 해당하는 해시키가 각각 E 서버의 인메모리 캐시(216)에서 관리하는 해시키 범위에 매핑(mapping)되고, C 서버의 인메모리 캐시(208)에서 관리하는 해시키 범위에 매핑이 된다라고 하면, 작업 스케줄러(702)는 해당 결과값의 해시키를 각각 E 서버의 인메모리 캐시(216)와 C 서버의 인메모리 캐시(208)에 저장하게 된다(S5).
이어, 작업 스케줄러(702)는 해당 서버로 맵테스크가 실행된 중간계산결과값이 E 서버와 C 서버상에 저장되어 있음을 알려 주어 리듀스 작업이 각각 E 서버와 C 서버에서 실행되어야 하는 등과 같은 리듀스 테스크 스케줄링(reduce task schedule)을 해주게 된다(S6).
이에 따라, E 서버와 C 서버에서 리듀스 함수를 돌려 최종 결과물 즉 데이터 액세스 요청에 대한 출력 파일을 생성하고 이를 사용자에게 제공하게 된다.
상기한 바와 같이, 본 발명에 따르면, 코드 분산 해쉬테이블 기반의 맵리듀스 시스템에서, 코드 분산 해시테이블 기반의 파일 시스템 계층과 인메모리 캐시 계층의 이중계층의 링구조로 데이터를 관리하고 사용자의 데이터 접근 요청 빈도에 따라 데이터 접근 요청의 확률분포를 예측한 후, 예측된 확률분포를 기반으로 인메모리 캐시 계층의 코드 분산해시테이블의 해시키 범위를 조정하고 테스크를 스케줄링함으로써 로드 밸런싱이 가능하며, 캐시 히트율을 높일 수 있다.
한편 상술한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
Claims (16)
- 코드 분산 해시테이블을 기반으로 데이터를 저장하는 파일 시스템과 인메모리 캐시를 구비하는 다수의 서버와,
상기 파일 시스템과 인메모리 캐시에 저장된 데이터를 이중계층의 링구조로 관리하며, 외부로부터 특정 파일에 대한 데이터 접근 요청 수신 시 상기 다수의 서버 중 상기 데이터 접근 요청된 파일을 저장하고 있는 서버들로 맵리듀스 테스크를 할당하여 상기 맵리듀스 테스크 수행된 결과값을 상기 데이터 접근 요청에 대한 응답으로 출력하는 작업 스케줄러
를 포함하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 제 1 항에 있어서,
상기 작업 스케줄러는,
상기 데이터 접근 요청 수신 시, 상기 파일의 이름을 통해 해시키를 추출하고 각 서버의 인메모리 캐시에 할당된 해시키 범위를 확인하여 상기 파일을 저장하고 있는 서버를 검색하며, 상기 검색된 서버로부터 상기 파일에 대한 메타데이터를 수신하여 상기 파일이 저장된 서버들로 상기 맵리듀스 테스크를 할당하는 것을 특징으로 하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 제 2 항에 있어서,
상기 작업 스케줄러는,
상기 파일에 대한 데이터 블록 구조와 각 데이터 블록이 분산 저장된 서버의 정보를 상기 메타데이터로 수신하며, 상기 각 데이터 블록이 저장된 서버들로 상기 맵리듀스 테스크를 할당하는 것을 특징으로 하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 제 1 항에 있어서,
상기 인메모리 캐시는,
상기 코드 분산 해시테이블을 이용하여 데이터에 대응되는 해시키를 저장하고 있으며, 상기 해시키의 저장에 있어서 상기 인메모리 캐시에 할당된 해시키 범위에 해당하는 해시키와 상기 해당 해시키에 대응하는 데이터를 저장하고 있는 것을 특징으로 하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 제 4 항에 있어서,
상기 작업 스케줄러는,
각 서버의 상기 인메모리 캐시의 해시키 범위를 각 서버에 대한 데이터 접근 요청 빈도에 따라 서버별로 동적으로 변경 설정하는 것을 특징으로 하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 제 1 항에 있어서,
상기 작업 스케줄러는,
상기 파일의 각 데이터 블록에 대한 상기 맵리듀스 테스크 처리 과정에서 발생하는 중간계산결과를 상기 파일 시스템에 저장하는 것을 특징으로 하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 제 6 항에 있어서,
상기 중간계산결과는,
상기 각 데이터 블록에 따라 서로 다른 해시키를 가지도록 생성되며, 각각 다른 서버로 분산되는 것을 특징으로 하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 제 6 항에 있어서,
상기 중간계산결과는,
상기 인메모리 캐시의 중간 결과물 재사용 캐시 영역에 저장되는 것을 특징으로 하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 제 1 항에 있어서,
상기 시스템은,
상기 작업 스케줄러와 연동되며, 새로운 서버의 추가, 제거, 복구를 관리하거나 파일의 업로드를 관리하는 리소스 매니저를 더 포함하는 것을 특징으로 하는 코드 분산 해시테이블 기반의 맵리듀스 시스템. - 파일 시스템과 인메모리 캐시를 구비하는 다수의 서버와 상기 서버로 맵리듀스 테스크를 할당하는 작업 스케줄러를 포함하는 코드 분산 해시테이블 기반의 맵리듀스 시스템에서 맵리듀스 테스크 수행방법에 있어서,
상기 작업 스케줄러에서 상기 파일 시스템과 인메모리 캐시에 저장된 데이터를 이중계층의 링구조로 관리하는 단계와,
외부로부터 특정 파일에 대한 데이터 접근 요청을 수신하는 단계와,
상기 파일에 대한 해시키를 추출하여 상기 파일을 저장하고 있는 파일 시스템의 서버를 검색하는 단계와,
상기 검색된 서버로부터 상기 파일에 대한 데이터 블록 구조와 각 데이터 블록의 분산 저장된 서버의 정보를 메타데이터로 수신하는 단계와,
상기 각 데이터 블록이 저장된 서버들로 맵리듀스 테스크를 할당하는 단계와,
상기 맵리듀스 테스크 수행된 결과값을 상기 작업 요청에 대한 응답으로 출력하는 단계
를 포함하는 방법. - 제 10 항에 있어서,
상기 파일 시스템과 인메모리 캐시는,
코드 분산 해시테이블을 기반으로 상기 데이터를 저장하는 것을 특징으로 하는 방법. - 제 10 항에 있어서,
상기 인메모리 캐시는,
상기 코드 분산 해시테이블을 이용하여 데이터에 대응되는 해시키를 저장하고 있으며, 기설정된 해시키 범위를 할당받아, 상기 해시키 범위에 해당하는 해시키와 상기 해당 해시키에 대응하는 데이터를 저장하고 있는 것을 특징으로 하는 방법. - 제 12 항에 있어서,
상기 해시키 범위는,
각 서버에 대한 데이터 접근 요청 빈도에 따라 서버별로 동적으로 변경 설정되는 것을 특징으로 하는 방법. - 제 10 항에 있어서,
상기 맵리듀스 테스크는,
상기 각 데이터 블록이 저장된 서버들에서 처리되며, 상기 맵리듀스 테스크의 처리 과정에서 발생하는 중간계산결과가 상기 파일 시스템에 저장되는 것을 특징으로 하는 방법. - 제 14 항에 있어서,
상기 중간계산결과는,
상기 각 데이터 블록에 따라 서로 다른 해시키를 가지도록 생성되며, 각각 다른 서버로 분산되는 것을 특징으로 하는 방법. - 제 14 항에 있어서,
상기 중간계산결과는,
상기 인메모리 캐시의 중간 결과물 재사용 캐시 영역에 저장되는 것을 특징으로 하는 방법.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/KR2015/005851 WO2016199955A1 (ko) | 2015-06-10 | 2015-06-10 | 코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180028461A true KR20180028461A (ko) | 2018-03-16 |
KR101928529B1 KR101928529B1 (ko) | 2018-12-13 |
Family
ID=57503874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187003102A KR101928529B1 (ko) | 2015-06-10 | 2015-06-10 | 코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10394782B2 (ko) |
KR (1) | KR101928529B1 (ko) |
WO (1) | WO2016199955A1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831552B1 (en) * | 2017-08-15 | 2020-11-10 | Roblox Corporation | Using map-reduce to increase processing efficiency of small files |
CN107463514B (zh) * | 2017-08-16 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种数据存储方法及装置 |
US10318176B2 (en) * | 2017-09-06 | 2019-06-11 | Western Digital Technologies | Real-time, self-learning automated object classification and storage tier assignment |
US10686816B1 (en) * | 2017-09-28 | 2020-06-16 | NortonLifeLock Inc. | Insider threat detection under user-resource bi-partite graphs |
US11080251B1 (en) | 2017-10-23 | 2021-08-03 | Comodo Security Solutions, Inc. | Optimization of memory usage while creating hash table |
CN109241298B (zh) * | 2018-09-06 | 2020-09-15 | 绍兴无相智能科技有限公司 | 语义数据存储调度方法 |
CN109753593A (zh) * | 2018-12-29 | 2019-05-14 | 广州极飞科技有限公司 | 喷洒作业任务调度方法及无人机 |
CN109885397B (zh) * | 2019-01-15 | 2023-04-07 | 长安大学 | 一种边缘计算环境中时延优化的负载任务迁移算法 |
CN110392109B (zh) * | 2019-07-23 | 2021-09-07 | 浪潮软件股份有限公司 | 基于cmsp流程编排的任务调度方法及*** |
CN113407620B (zh) * | 2020-03-17 | 2023-04-21 | 北京信息科技大学 | 基于异构Hadoop集群环境的数据块放置方法及*** |
US11467834B2 (en) * | 2020-04-01 | 2022-10-11 | Samsung Electronics Co., Ltd. | In-memory computing with cache coherent protocol |
KR102500278B1 (ko) | 2020-10-30 | 2023-02-16 | 충남대학교 산학협력단 | 대량의 lod 저장을 위한 맵리듀스 기반 데이터 변환 시스템 및 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707136B2 (en) * | 2006-03-31 | 2010-04-27 | Amazon Technologies, Inc. | System and method for providing high availability data |
US7523123B2 (en) | 2006-11-16 | 2009-04-21 | Yahoo! Inc. | Map-reduce with merge to process multiple relational datasets |
US8249638B2 (en) * | 2008-03-31 | 2012-08-21 | Hong Kong Applied Science and Technology Research Institute Company Limited | Device and method for participating in a peer-to-peer network |
CA2724406A1 (en) * | 2008-05-23 | 2009-11-26 | Jouni Maenpaa | Maintaining distributed hash tables in an overlay network |
US8924426B2 (en) * | 2011-04-29 | 2014-12-30 | Google Inc. | Joining tables in a mapreduce procedure |
US8868711B2 (en) * | 2012-02-03 | 2014-10-21 | Microsoft Corporation | Dynamic load balancing in a scalable environment |
US9069761B2 (en) * | 2012-05-25 | 2015-06-30 | Cisco Technology, Inc. | Service-aware distributed hash table routing |
KR101435789B1 (ko) * | 2013-01-29 | 2014-08-29 | (주)소만사 | Dlp 시스템의 빅데이터 처리 시스템 및 방법 |
US9934147B1 (en) * | 2015-06-26 | 2018-04-03 | Emc Corporation | Content-aware storage tiering techniques within a job scheduling system |
-
2015
- 2015-06-10 KR KR1020187003102A patent/KR101928529B1/ko active IP Right Grant
- 2015-06-10 WO PCT/KR2015/005851 patent/WO2016199955A1/ko active Application Filing
- 2015-06-10 US US15/516,878 patent/US10394782B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR101928529B1 (ko) | 2018-12-13 |
WO2016199955A1 (ko) | 2016-12-15 |
US20170344546A1 (en) | 2017-11-30 |
US10394782B2 (en) | 2019-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101928529B1 (ko) | 코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법 | |
US9489443B1 (en) | Scheduling of splits and moves of database partitions | |
US11423085B2 (en) | Graph database super vertex partitioning | |
US8990243B2 (en) | Determining data location in a distributed data store | |
US10908834B2 (en) | Load balancing for scalable storage system | |
Lee et al. | Efficient and customizable data partitioning framework for distributed big RDF data processing in the cloud | |
US10635650B1 (en) | Auto-partitioning secondary index for database tables | |
KR20180100475A (ko) | 하이브리드 데이터 룩-업 방법 | |
Varade et al. | Distributed metadata management scheme in hdfs | |
Elghamrawy et al. | A partitioning framework for Cassandra NoSQL database using Rendezvous hashing | |
US10698955B1 (en) | Weighted abstract path graph database partitioning | |
Salehian et al. | Comparison of spark resource managers and distributed file systems | |
Fazul et al. | Improving data availability in HDFS through replica balancing | |
US11310309B1 (en) | Arc jump: per-key selection of an alternative server when implemented bounded loads | |
US20240176762A1 (en) | Geographically dispersed hybrid cloud cluster | |
Al Nuaimi et al. | A Novel Approach for Dual-Direction Load Balancing and Storage Optimization in Cloud Services | |
KR101654969B1 (ko) | 가상화 클러스터 환경에서 네임 노드를 할당하는 방법 및 장치 | |
JP5803908B2 (ja) | ストレージシステム及びストレージシステムの制御方法 | |
US11249952B1 (en) | Distributed storage of data identifiers | |
Sanchez et al. | EclipseMR: distributed and parallel task processing with consistent hashing | |
Singh et al. | High scalability of HDFS using distributed namespace | |
Fazul et al. | PRBP: A prioritized replica balancing policy for HDFS balancer | |
Vinutha et al. | In-Memory Cache and Intra-Node Combiner Approaches for Optimizing Execution Time in High-Performance Computing | |
Zhou et al. | Hashing based data distribution in heterogeneous storage | |
EP4030311A1 (en) | A distributed database system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right |