KR20160073297A - 인-메모리 클러스터 컴퓨팅 프레임워크 노드 및 그것의 데이터 캐싱 방법 - Google Patents

인-메모리 클러스터 컴퓨팅 프레임워크 노드 및 그것의 데이터 캐싱 방법 Download PDF

Info

Publication number
KR20160073297A
KR20160073297A KR1020150161966A KR20150161966A KR20160073297A KR 20160073297 A KR20160073297 A KR 20160073297A KR 1020150161966 A KR1020150161966 A KR 1020150161966A KR 20150161966 A KR20150161966 A KR 20150161966A KR 20160073297 A KR20160073297 A KR 20160073297A
Authority
KR
South Korea
Prior art keywords
storage device
data
priority
resource
storage
Prior art date
Application number
KR1020150161966A
Other languages
English (en)
Other versions
KR102403592B1 (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 삼성전자주식회사
Publication of KR20160073297A publication Critical patent/KR20160073297A/ko
Application granted granted Critical
Publication of KR102403592B1 publication Critical patent/KR102403592B1/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • 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
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0866Addressing 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
    • 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/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/1021Hit rate improvement
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

인-메모리 클러스터 컴퓨팅 프레임워크 노드(in-memory cluster computing framework node)는 프로세서(processor), 제1 우선순위를 갖고, 캐시된 데이터를 저장하는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터(monitor)하는 리소스 모니터(resource monitor) 및 리소스 모니터가 제1 스토리지 장치의 포화를 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러(resource scheduler)를 포함한다.

Description

인-메모리 클러스터 컴퓨팅 프레임워크 노드 및 그것의 데이터 캐싱 방법{IN-MEMORY CLUSTER COMPUTING FRAMEWORK NODE AND DATA CACHING METHOD THEREOF}
본 발명은 인-메모리 클러스터 컴퓨팅 프레임워크 노드 및 그것의 데이터 캐싱 방법에 관한 것이다.
인-메모리 클러스터 컴퓨팅 프레임 워크(in-memory cluster computing frameworks)는 현대 컴퓨터 시대의 중요한 요소이고, 특별 제작된 슈퍼 컴퓨터들(supercomputers)을 대신하기 위한 경제적으로 실행 가능한 대안을 제공한다. 클러스터 컴퓨팅 프레임 워크는 싸고 쉽게 구할 수 있는 상품 하드웨어를 사용한다. 예를 들어, 개인 컴퓨터들의 클러스터는 슈퍼 컴퓨터에 비해 나은(물리적인 용량이 아닌 가격 면에서) 연산력을 제공하기 위해 함께 연결될 수 있다.
반면에 일반적인 운영 체제들은 클러스터로 구성되지 않은 개별 개인 컴퓨터와 잘 작동하고, 몇몇 특정 소프트웨어는 함께 일하는 개인 컴퓨터들의 클러스터를 만들기 위해 필요하다. 이러한 소프트웨어의 예시인, 아파치 스파크™(Apache Spark™)는 빠르게 성장하고 있고, 구글(Google), 페이스북(Facebook), 그리고 아마존(Amazom)과 같은 인터넷-서비스 회사들은 아파치 스파크를 고려하고 있다(아파치, 아파치 스파크 및 스파크는 아파치 소프트웨어 재단(Apache Software Foundation)이다) 더 나아가, SAP®, 클라우데라™(Cloudera™), MapR™, 및 데이터스텍스(Datastax)는 아파치 스파크 체계 외의 세로운 제품들을 만들기 위해 노력한다(SAO는 미국 및 다른 나라들의 SAP SC의 등록 상표이다. 클라우데라는 주식회사 클라우데라의 상표이다. MapR은 주식회사 MapR 테크놀로지(MapR Technologies)의 상표이다.).
아파치 스파크는 "메모리-속도" 연산을 제공하는 성능으로 잘 알려졌지만, 이에 한정되지 않고, 반복적인 빅-데이터(big-data) 분석 및 실시간 어플리케이션들(applications)을 제공할 수 있다. 아파치 하둡™(Apache Hadoop™))과 같은 현존하는 분산 컴퓨팅 플랫폼들(computing platforms)과 비교되는 성능 개량과 같을 성취하기 위해서, 아파치 스파크는 "탄력적인 분산 데이터 세트"("resilient distributed dataset", RDD) 포멧의 빠른 연산을 위해 클러스터들의 메모리에 데이터를 유지해야 한다.(아파치 하둡 및 하둡은 아파치 소프트웨어 재단의 상표이다.)
현존하는 아파치 스파크 구현은 자바 가상 머신들(Java Virtual Machines, JVM)의 메모리 힙(memory heap) 공간들을 활용한다. 하지만, 이는 필요한 가비지 컬렉션(Garbage Collection. GC) 시간 때문에 상당한 성능 저하가 발생한다. GC 이벤트(event)는 전체 JVM을 중단시키고, 전체 실행을 정지시킬 수 있다.
자바의 메모리 영역의 RDD를 유지하기 위한 높은 비용을 완화하기 위해, 아파치 스파크 개발자들은 "타키온(Tachyon)"이라 불리는 다른 해결책을 내놓았다. 타키온은 메모리 시스템의 파일 시스템을 유지하는 동안 JVM의 GC 이벤트를 트리거(triggering)하지 않고, 메모리의 캐시 RDD(cache RDD)를 RAM디스크들(RAMDiks)로 활용한다. 타키온이 다른 프로세스로 운영되고, 주키퍼(Zookeeper)와 같은 다른 어플리케이션으로 고장 허용될 수 있는 중앙 관리자로부터 제어되기 때문에, 타키온은 GC 오버헤드(over head)를 제거하지 않을 뿐만 아니라, 실행 엔진(engine)(아파치 스파크)과 스토리지/캐시 엔진(타키온) 사이의 더 나은 분리는 제공한다.
이러한 아파치 스파크 커뮤니티(community)의 노력에도 불구하고, 아파치 스파크 및 타키온의 성능 병목현상은 여전히 존재한다. 같은 메모리 시스템의 메모리 공간을 공유함으로써, 아파치 스파크 및 타키온은 높은 메모리 대역폭을 요구한다. 이러한 대역폭의 공유 때문에, 아파치 스파크는 더이상 최고의 성능을 달성하지 못한다.
더 나아가, 타키온은, 그 자체로, 고장 허용을 제공하지 못하고, 그것의 의존 저장 시스템의 오류 허용 오차에 의존한다. 타키온 내의 고장 허용의 결함은 타키온 구현에 대한 비 고장 허용 메모리/스토리지 시스템들을 장착함으로써 시스템 외부의 최적의 성능을 내기 위한 최적화된 클러스터 시스템에 대해 결함을 갖는다.
위의 설명은 아파치 스파크 및 타키온에 초첨을 맞추고 있지만, 장치의 캐시 데이터를 결정하는 문제는 어떤 잠재적 클러스터 컴퓨터 프레임 워크에서라도 발생할 수 있다.
클러스터 컴퓨팅 프레임 워크의 데이터 캐싱의 더 나은 관리에 대한 필요가 남아 있다.
본 발명의 목적은 데이터 캐싱 효율을 향상시키기 위한 인-메모리 클러스터 컴퓨팅 프레임워크 노드 및 그것의 데이터 캐싱 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 인-메모리 클러스터 컴퓨팅 프레임워크 노드(in-memory cluster computing framework node)는 프로세서(processor), 제1 우선순위를 갖고, 캐시된 데이터를 저장하는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터(monitor)하는 리소스 모니터(resource monitor) 및 리소스 모니터가 제1 스토리지 장치의 포화를 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러(resource scheduler)를 포함한다.
실시 예로서, 인-메모리 클러스터 컴퓨팅 프레임워크 노드 는 제3 스토리지 장치에 캐시된 데이터를 복제하기 위한 복제기(replicator)를 더 포함한다.
본 발명의 실시 예에 따른 인-메모리 클러스터 컴퓨팅 프레임워크 노드의 데이터 캐싱 방법은 데이터 캐싱 방법은 인-메모리 클러스터 컴퓨팅 프레임워크 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 상기 데이터를 캐시하는 단계, 제1 스토리지 장치의 동작을 모니터(monitor)하는 단계 그리고 제1 스토리지 장치가 포화되면, 제2 우선순위를 갖는 제2 스토리지 장치로 캐시된 데이터를 이동시키는 단계를 포함한다.
본 발명은 제1 스토리지 장치의 포화를 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시킴으로써, 향상된 데이터 캐싱 효율을 갖는 장치를 제공한다.
도 1은 클러스터 컴퓨팅 프레임 워크를 보여주는 사시도이다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 프레임 워크를 보여주는 사시도이다.
도 3은 도 2는 좀 더 구체적으로 개시한 사시도이다.
도 4는 도 2의 리소스 모니터를 좀 더 구체적으로 개시한 사시도이다.
도5a-5b는 본 발명의 실시 예에 따른 도 2의 캐시된 데이터를 관리하는 방법을 보여주는 순서도이다.
도 6은 본 발명의 실시 예에 따라 스토리지 장치들의 성능 정보를 결정하는 방법을 보여주기 위한 순서도이다.
도 7은 본 발명의 실시 예에 따라 도 2의 리소스 모니터가 석절하게 이동되었는지 결정할 때, 캐시된 데이터의 이동 순서를 보여주기 위한 순서도이다.
도 8은 본 발명의 실시 예에 따른 클러스터 컴퓨팅 프레임 워크로써 동작하는 컴퓨터 시스템을 보여주는 사시도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 장치 및 그것의 동작 방법이 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 용도에 따라 수정되거나 변경될 수 있다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 본 발명의 상세한 설명에서 사용되는 "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하나, 추가적인 하나 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 가능하게 한다.
실시 예의 설명에 있어서, 각 층의 "위(상)/아래(하)(on/under)"에 형성되는 것으로 기재되는 경우에 있어, 위(상)/아래(하)는 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 형성되는 것을 모두 포함한다. 한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
실시 예들은 이상적인 실시 예들의 도시적인 예시들인 단면도들로 나타내어진다. 제조 기술 및/또는 허용 오차와 같은 결과로써 예시들의 형태의 변형들이 예상된다. 실시 예들은 본 원에 예시된 영역들의 특정 형태로 한정되어 해석되지 않고, 제조에서 발생하는 형태들의 편차들을 포함한다.
인-메모리(In-memory)의 클러스터 컴퓨팅은 종래의 캐싱을 지향하는 데이터 이동에 의한 데이터 캐싱뿐만 아니라, 프로그래머에 가 강제적으로 데이터 캐싱을 허용함에 따른 데이터 캐싱을 허용할 수 있다. 이러한 인-메모리 클러스터 컴퓨팅 펌웨어 시스템은 아파치 스파크이다. 아파치 스파크 JVM에서, 실행 엔진은 자바 힙 공간에 저장된 데이터 세트들(datasets)와 같은 캐시 메모리 공간을 공유할 수 있다. 이러한 방식은 메모리 내의 데이터 세트를 유지하기 위해 큰 성능 오버헤드를 초래할 수 있다. 더 나아가, 실행 엔진의 실패는 데이터 손실을 초래할 수 있기 때문에 신뢰되지 않는다. 이러한 문제들을 완화하기 위해, 분리된 프로세스는 캐시된 데이터를 보호할 수 있다. 예를 들어, 타키온은 이러한 문제들을 어드레스(address)하기 위해 아파치 스파크 커뮤니티로부터 제안된다. 하지만, 타키온은 대역폭 및 공유 용량과 같은 근본적인 문제들을 해결할 수 없다. 타키온의 문제점은 컴퓨팅을 위한 엔진의 실행 및 캐시된 데이터를 독출/쓰기 위한 스토리지 엔진과 같은 메모리 접근 스토리지 엔진 및 실행이다. 이러한 구조는 메모리 대역폭을 병목하지 않지만, 제한된 메모리 공간 문제를 악화시킨다.
도 1은 클러스터 컴퓨팅 프레임 워크를 보여주는 사시도이다. 당업자라면 도 1의 노드 표현이 추상적임을 알 수 있다. 이러한 추상적인 도면은 기존 컴퓨팅 프레임 워크의 동작에 대한 이해를 돕고, 본 발명을 이해 하는데 유용하다.
도 1 에서, 컴퓨트 워커(compute worker)(105)는 어플리케이션을 실행하는 실행 엔진(110)을 포함한다. 컴퓨트 워커(105)는 캐시 엔진(120)을 포함하는 I/O 엔진(115)와 통신한다. 캐시 엔진(120)은 메모리의 데이터의 캐싱을 관리하는데 책임이 있다. I/O 엔진(115)은 메모리(memory), 솔리드 스테이트 드라이브(Solid State Drives, SSDs), 하드 디스크 드라이브(Hard Disk Drives, HDDs) 및 다른 스토리지 장치들과 같은 다양한 스토리지(storage) 장치들(125)과 인터페이스 한다. I/O 엔진(115)은 또한 분산 스토리지 가능성들을 포함하는 기존 분산 시스템들(130)과 통신한다.
기존 클러스터 노드들에서, 다이나믹 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM), 스토리지 클래스 메모리(Storage Class Memory, SCM), 또는 다른 메모리, 빠른 SSDs, 느린 SSDs, 빠른 HDDs, 느린 HDDs, 그리고 분산 스토리지 시스템들과 같은(본 발명의 실시 예들로서, 메모리가 다른 스토리지 장치들과 다르게 사용되는 경향이 있더라도, 메모리는 스토리지 장치로 간주 된다.) 메모리는 데이터를 저장하기 위한 많은 다른 방법들이 있다.
다양한 스토리지 장치들은 다른 대역폭/용량 특성들을 갖기 때문에, 획일적으로 적용되도록 만든 해결책은 없다. 예를 들어, 메모리 캐싱은 작은 워킹 세트 사이즈(메모리 공간)와 연산 집약적 벤치마킹(benchmarking)에 유리할 수 있다. 하지만, 그 대신에, SSD-캐싱은 I/O- 집약적인 벤치마킹 또는 큰 지속적인 RDD(Protrammer-directed cached data)의 벤치마킹에 유리할 수 있다. 예를 들어, 아파치 스파크의 페이지랭크(PageRank)는 고성능 SSD의 캐싱 RDDs로부터 이익을 얻을 수 있다. 결과로써, 본 발명의 실시 예들은 주어진 어플리케이션을 가잘 잘 수행하는 저장 장치를 선택하기 위해, 인-메모리 클러스터 컴퓨팅 환성의 최고 성은의 스토리지 장치를 결정하기 위해 리소스 및 요구 인식 메커니즘을 포함할 수 있다. 이러한 메커니즘은 내결함성을 제공하기 위한 최고의 방법 및 스토리지 장치를 선택할 수 있다.
본 발명의 실시 예들은 아파치 스파크의 RDD와 같은 캐시 데이터를 위한 분산 스토리지 시스템 및 실행 엔진 사이의 중간층으로써 리소스 및 요구 인식 캐싱 메커니즘을 포함한다. 본 발명의 실시 예들은 리소스 모니터 및 리소스 실렉터(resource selector)와 같은 새로운 구성 요소들을 소개할 수 있다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 프레임 워크를 보여주는 사시도이다. 도 2 에서, 컴퓨트 워커(105) 및 기존 분산 스토리지 시스템(130)은 도 1로부터 변화하지 않는다. 하지만, 도 1의 I/O 엔진(115) 이제 리소스 모니터(205) 및 리소스 스케줄러(210)를 포함한다. 리소스 모니터(205) 및 리소스 스케줄러(210)는 캐싱 매커니즘(215)으로 간주될 수 있다. 리소스 모니터(205)는 노드에서 이용 가능한 다양한 스토리지 장치들의 동작을 모니터링할 수 있다.
리소스 스케줄러(210)는 리소스 모니터(205)로부터 결정된 정보를 수신할 수 있고. 현재 장치가 저장된 데이터에 대한 그리고 잠재적인 미래 캐싱 요청들에 대한 적절한 캐싱 지원을 제공하는지에 대해 결정할 수 있다. 리소스 스케줄러(210)가 현재 장치들이 적절한 캐싱 지원을 제공하지 않는 것으로 결정하면, 리소스 스케줄러(210)는 어떤 장치에 캐시되어있는 어떤 데이터를 변경할 수 있다.
도 2에서, 메모리(220), SCM(225), SSD(230) 및 HDD(235)는 개별적으로 식별되고, 각각은 어플리케이션들에 대한 캐시 데이터로 사용될 수 있다. 스토리지의 다른 형태들의 사용은 가능하다. SCM은 DRAM과 같은 메모리와 SSDs 및 HDDs와 같은 다른 스토리지 장치들 사이의 간극을 해소하기 위한 스토리지의 새로운 종류이다. 추가적으로, 비록 싱글(single) 스토리지 장치가 모든 어플리케이션들에 대한 모든 데이터를 캐시하기 위해 사용될 수 있지만, 스토리지 장치는 다른 프로그램들에 대한 데이터를 캐시하기 위해 사용되는 다른 장치들에 대해서도 가능하다. 이와 같이, 메모리(220)는 제1 데이터를 캐시할 수 있고, SCM(225)는 제2 데이터를 캐시할 수 있고, SSD(230)는 제3 데이터를 캐시할 수 있고 그리고, HDD(235)는 제4 데이터를 캐시할 수 있다.
리소스 모니터(205) 및 리소스 실렉터(210)는 캐싱에 대한 다른 장치들을 인식할 수 있다. 간단한 연산을 위해서, 장치들에 대한 정보는 선별된 순서로 유지될 수 있다. 선별 메트릭(metric)은 대역폭, 레이턴시(latency), 용량 등이 될 수 있다. 예를 들어, 레이턴시를 기반으로 하는 선별 장치들에서, 선별된 순서는 메모리(220)>SCM(225)>SSD(230)>로컬(local) HDD(235)>분산 스토리지(130) 일 수 있다. 그러나, 당업자는 다른 선별 매트릭에 더 복잡한 연산들이 사용될 수 있음을 알 수 있다. 리소스 모니터(205)는 스토리지 장치들에 대한 성능 특성들을 결정할 수 있고, 리소스 실렉터(210)는 어떤 선별 매트릭이 선택되는지를 기반으로 하여 스토리지 장치들의 우선순위를 매길 수 있고, 선별 매트릭은 운영 체제와 같은 다른 구성 요소들에 의해 선택될 수 있다.
일반적으로 선별 매트릭이 스토리지 장치의 실제 사용으로부터 독립적이기 때문에, 스토리지 장치들의 성능 특성들 및 선별 매트릭은 미리 결정될 수 있다. 예를 들어, 레이턴시는 스토리지 장치에 저장된 데이터가 얼마나 많은지 또는 얼마나 적은지에 의존하지 않는 데이터에 액세스하는데 걸리는 시간에 의존한다. 당업자는 다른 가능한 선별 매트릭들을 알 수 있다. 예를 들어, 대역폭은 데이터의 처리량을 제공할 수 있는 장치가 더 높은 우선순위로 간주되는 분류 메트릭으로서 사용될 수 있다.
성능 특성들은 런-타임(run-time) 동안 스토리지 장치의 성능을 분석함으로써 결정될 수 있다. 예를 들어, 리소스 모니터(205)는 그것들의 최대 대역폭 및 그것들의 대역폭 활용을 결정하기 위한 클러스터 컴퓨팅 노드를 이용할 수 있는 다른 스토리지 장치들에 덧붙여 메모리(220), SCM(225), 로컬 HDD(235) 및 분산 스토리지(130)의 동작들을 추적할 수 있다. 리소스 모니터(205)는 주어진 시간 간격에 대한 스토리지로부터 데이터가 얼마나 이동하는지 모니터링함으로써 대역폭 활용을 결정할 수 있다.
좀 더 구체적인 예시로서, 리소스 모니터(205)는 5ms로 스토리지 장치를 모니터링할 수 있고, 디바이스로 전송 또는 디바이스로부터 수신되는 데이터의 1MB를 감지할 수 있다. 리소스 모니터(205)는 200MB/sec로 측정된 대역폭의 평균을 계산할 수 있다. 장치에 대해 이용 가능한 대역폭의 최대와 계산을 비교함으로써, 리소스 모니터(205)는 대역폭 활용률을 계산할 수 있다. 리소스 모니터(205)는 시간이 지남에 따라 스토리지 장치들의 전체 대역폭 활용률을 추적하기 위한 간격들을 분석할 수 있고, 스토리지 장치가 대역폭 한계에 접근하면, 리소스 모니터(205)는 데이터를 다른 저장 장치로 이전해야 함을 나타낼 수 있다. (리소스 모니터(205)는 주기적으로 분석하기보다는, 스토리지 장치들의 대역폭의 지속적인 분석을 수행할 수 있다.)
다른 예시로서, 리소스 모니터(205)는 데이터 요청 수신 및 데이터 요청의 결과의 반환 사이에 장치에서 얼마나 많은 시간이 걸리는지 계산함으로써 레이턴시를 결정할 수 있다. 복수의 데이터 요청들의 계산의 평균은 스토리지 장치의 레이턴시의 적절한 추정을 제공할 수 있다.
리소스 모니터(205)는 스토리지 장치들을 테스트할 수 있다. 예를 들어, 리소스 모니터(205)는 밤새도록 발생할 수 있는 하나 이상의 스토리지 장치들이 이용되지 않을 때까지(또는 최소한으로 이용될 때까지) 대기할 수 있다. 리소스 모니터(205)는 사용자 동작에 아주 적은 영향을 미치면서 스토리지 장치들의 성능 특성들을 계산하기 위해 스토리지 장치들을 테스트할 수 있다. 또는 리소스 모니터(205)는 특정 어드레스를 읽기 위해 스토리지 장치를 요청할 수 있고, 스토리지가 응답하기 위해 얼마나 많은 시간이 걸리는지를 측정(스토리지의 레이턴시를 측정함으로써)할 수 있다. 또는 리소스 모니터(205)는 현재 얼마나 많은 데이터가 저장되어 있는지 알려주기 위해 스토리지 장치를 요청할 수 있다. 이 계산은 스토리지 장치가 꽉 찼음을 측정할 수 있다.
도 2 는 또한 다양한 스토리지 장치들을 우선순위들을 보여준다. 메모리(220)는 제1 우선순위(240)를 갖고, SCM(225)는 제2 우선순위(245), SSD(230)는 제3 우선순위(250), HDD(235)는 제4 우선순위(255) 그리고, 분산 스토리지 시스템(130)은 제5 우선순위(260)를 갖는다. 스토로지 장치들 각각은 선별 매트릭을 기반으로 고유의 우선순위를 가질 수 있다. 스토리지 장치, 또는 스토리지 장치 클래스(classes)의 임의의 개수가 있을 수 있고, 본 발명의 실시 예들은 도 2에 도시된 복수의 스토리지 장치들로 한정되지 않는다.
추가적으로, 서로 다른 장치들은 다른 우선순위를 가질 필요는 없다. 예를 들어, 두 개의 장치들은 특정 선별 매트릭을 이용하여 동일한 우선순위를 가질 수 있다. 부수적인 선별 매트릭인 장치들 사이에서 구별하기 위해 사용될 수 있고, 데이터가 캐시되어야 할 때, 시스템은 하나의 장치 또는 다른 장치를 독단적으로 선택할 수 있다.
도 2의 클러스터 컴퓨팅 프레임워크 노드의 실시 예에서, 캐싱 메커니즘(caching mechanism)(215)은 정적 모양으로 시작될 수 있다. 예를 들어, 어플리케이션은 선호되는 캐싱 장치로써 특정 스토리지 장치(또는 장치 클래스)를 구분할 수 있다. 그렇지 않으면, 캐싱 매커니즘(215)은 (상술한 바와 같이 레이턴시 선별 매트릭을 사용할 때 메모리와 같은)가장 높은 우선순위의 장치를 실행시킬 수 있다. 리소스 모니터(205)는 포화 상태인 스토리지 장치를 감지할 수 있다. 예를 들어, 스토리지 장치의 이용 가능한 대역폭 또는 최대치에 근접하거나(대역폭 포화) 스토리지 장치 또는 스토리지 장치가 저장할 수 있는 데이터 최대량에 근접(용량 포화)할 수 있다. 리소스 실렉터(210)는 다음으로 가장 높은 우선순위의 장치로 캐싱 장치를 바꿀 수 있고, 캐시된 데이터를 이동시킬 수 있고 또는 캐시 데이터를 요청할 수 있다. 리소스 실렉터(210)는 스토리지 장치가 완전히 포화될 때까지 대기할 필요는 없다. 리소스 실렉터(210)는 포화의 임계 퍼센트(90%)로써 결정될 수 있는 포화 상태에 스토리지 장치가 접근할 때, 데이터를 이동시키거나 데이터 캐시 요청들을 리-라우트(re-route)할 수 있다. 사용할 수 있는 임의의 임계 퍼센트: 90%의 사용은 단지 예시이다. 이동된 캐시되 데이터 또는 캐시 데이터 요청들은 모든 데이터 또는 선택된 데이터(장치의 가장 오래된 캐시된 데이터)를 포함할 수 있다. 낮은 우선순위의 장치가 더이상 없으면, 리소스 실렉터(210)는 현재 장치와 계속 일할 수 있다. 이와 같이, 캐싱 메커니즘(215)는 캐싱 장치가 사용 중일 때, 감지될 수 있고, 낮은 장치의 프로필들(profiles)과 패턴 사용일 일치하면, 낮은 우선순위 장치로 데이터를 옮길 수 있다.
구성 정보의 소스와 관계없이, 데이터 스토리지는 일반적으로 어플리케이션에 허용 가능한 우선순위를 갖는 장치로 시작된다. 선택된 스토리지 장치가 적절한 캐싱을 지원할 수 있으면, 데이터 또는 캐시 요청들의 이동은 필요하지 않다. 선택된 장치가 적절한 서비스의 레벨을 제공하지 않으면, 데이터는 이동된다.
데이터 및 캐시 요청들은 높은 우선순위 장치들에서 낮은 우선순위 장치들로 필수적으로 이동될 필요는 없다. 리소스 스케줄러(210)는 높은 우선순위 장치가 적절한 서비스를 제공하는지 그리고, 데이터/캐시요청들을 다시 높은 우선순위 장치로 이동시킬 수 있는지를 체크할 수 있다.
리소스 스케줄러(210)는 캐시된 데이터를 이동시킬 뿐만 아니라, 새로운 데이터를 캐시하기 위해 요청할 수 있다. 몇몇 실시 예들로서, 포화된 것으로 간주되는 장치의 사실은 미래의 데이터 캐싱에 영향을 줄 수 있다. 예를 들어, 특정 장치 가 충분히 포화되면, 데이터는 장치에서 이동될 필요가 있고, 이러한 사실은 장치가 여전히 예측 가능한 미래에 포화될 수 있음을 시사한다. 그러므로, 미래의 데이터는 장치에 반드시 캐시될 필요는 없다. 하지만, 다른 실시 예로서, 리소스 스케줄려가 하나의 장치로부터 다른 장치로 데이터를 이동시킨 사실은 미래 데이터를 캐시하기 위한 초기 장치의 선택에 영향을 미치지 않는다. 미래 데이터를 캐시하기 위한 초기 장치의 선택은 장치의 포화 여부에 의존하지 않고, 이전에 포화된 것으로 간주되는 장치는 새로운 데이터를 캐시하기 위해 선택될 수 있다.
예를 들어, 장치의 성능들을 지배하는 특정 데이터 세트가 있으면, 장치를 해제하는 데이터셋(dataset)은 장치가 미래 데이터를 캐시하는 것을 충분히 충족시키지 않는 장치를 떠날 수 있다. 반면에, 장치에 저장된 데이터의 크가기 균일한 경우, 데이터의 상당한 비율은 장치가 덜 포화되기 전에 저장 장치를 떠날 수 있다. 이 때, 스토리지 장치를 해제하는 몇몇 데이터셋들의 이동은 장치의 포화를 향상시킬 수 있고, 미래 캐시 요청들은 더 나은 다른 장치로 향할 수 있다.
도 3은 도 2는 좀 더 구체적으로 개시한 사시도이다. 도 3의 노드(305)를 참조하면, 당업자는 클러스터의 복수의 노드들 중 하나임을 알 수 있다. 노드(305)는 복수의 워커들(workers)(105)을 포함하고, 워커들(105) 각각은 어플리케이션들을 실행하기 위한 실행 엔진(110)을 포함한다. I/O 엔진(115)는 리소스 모니터(205), 리소스 스케줄러(210), 그리고 복제기(replicator)(310)를 포함할 수 있다. 본 발명의 실시 예들은 클러스터 컴퓨팅 프레임워크에 나타나지 않는 내고장성의 측정을 제공하기 위해 데이터의 복제를 포함할 수 있다.
노드(305)는 다양한 워커들(105) 그리고 메모리(220), SDC(225), SSD(230), 및 HDD(235)와 같은 스토리지 장치들에 대한 명령들을 실행시킬 수 있는 CPU(315)를 포함할 수 있다.
상술한 바와 같이, 리소스 모니터(205)는 다양한 스토리지 장치들의 성능을 결정할 수 있다. 스토리지 장치들의 성능을 결정함으로써, 리소스 스케줄러(210)는 하나이상의 스토리지 장치들의 성능의 한계에 도달했는지 여부에 대해 알 수 있다. 리소스 모니터(205)는 여러 상이한 방법들을 통해 스토리지 장치들의 성능을 결정할 수 있다.
도 4는 도 2의 리소스 모니터를 좀 더 구체적으로 개시한 사시도이다. 리소스 모니터(205)는 프로파일러(profiler)(405)를 포함할 수 있다. 프로파일러(405)는 다양한 스토리지 장치들로 접근할 수 있고, 스토리지 장치들의 성능을 결정할 수 있다. 프로파일러(405)의 다양한 기술들은 스토리지 장치들의 성능을 결정할 수 있다. 예를 들어, 스토리지 장치들이 전자 형태의 정보를 포함한다면 프로파일러(405)는 스토리지 장치들에 접근하고, 스토리지 장치들로부터 직접적으로 성능을 독출할 수 있다. 또는, 프로파일러(405)는 스토리지 장치들로부터 모델(model) 번호를 결정할 수 있고, 인터넷 웹사이트의 성능에 또는 내부 스토리지 리스팅(listing) 장치 성능들로부터 접근할 수 있다.
프로파일러(405)는 장치 성능을 결정할 수 있고, 다음을 위한 참고의 성능을 저장할 수 있다. 또는 프로파일러(405)는 스토리지 장치의 성능을 결정하기 의해 독출/쓰기 동작들을 수행할 수 있다. 예를 들어, 장치의 레이턴시는 독출/쓰기 커맨드(command)와 반환되는 결과 사이에서 몇 밀리세컨즈(milliseconds)가 걸리는지 측정함으로써 결정될 수 있다. 또는 장치의 대역폭은 커맨드를 완료하는데 필요한 시간과 관련된 많은 양의 데이터를 독출/쓰기함으로써 결정될 수 있다. 당업자는 스토리지 장치의 성능이 결정될 수 있는 다른 여러 방법들이 있음을 알 수 있다. 스토리지 장치의 성능은 노드의 사용보다 앞서 결정될 수 있고, 몇몇 스토리지로부터 액세스될 수 있다. 이러한 방식으로, 장치들의 성능은 정적으로 결정될 수 있다.
본 발명의 다른 실시 예로서, 장치들의 성능은 동적으로 결정될 수 있다. 이러한 실시 예에서, 런-타임 모니터(run-time monitor)(410)는 사용될 수 있다. 런-타임 모니터(410)는 다양한 스토리지 장치들의 성능을 결정하기 위한 일반적인 동작 동안 스토리지 장치들의 동작을 모니터할 수 있다. 예를 들어, 런-타임 모니터(410)는 스토리지 장치로부터의 독출/쓰기에 대한 요청 및 스토리지의 레이턴시를 결정하기 위해 반환된 결과 사이의 시간을 측정할 수 있다. 또는 런-타임 모니터(410)는 장치의 대역폭을 결정하기 위한 많은 양의 데이터의 독출/쓰기에 걸리는 시간을 측정할 수 있다.
추가적으로, 몇몇 실시 예들로서, 런-타임 모니터(410)는 스토리지 장치들의 현재 동작을 결정하기 위해 사용될 수 있다. 예를 들어, 장치의 대역폭을 결정하는 대신에, 런-타임 모니터(410)는 사용되는 장치의 현재 대역폭을 결정할 수 있다. 이러한 측정은 리소스 스케줄러가 데이터의 캐시 여부 또는 을 하나의 스토리지 장치로부터 다른 스토리지 장치로 이동되어야 하는 캐시 데이터에 대한 요청을 결정하도록 할 수 있다. 이러한 예시가 스토리지 장치의 대역폭 포화를 고려하는 동안, 당업자는 측정될 수 있는(예를 들어, 장치의 용량 포화(장치가 현재 저장하고 있는 데이터의 양)) 장치의 성능을 인지할 수 있다.
도 2의 리소스 실렉터(210)는 리소스-인식 내고장성을 제공할 수 있다. 리소스 실렉터(210)는 다른 장치들을 통해 중복 데이터의 카피들(copies)을 제공할 수 있다. 추가적으로, 리소스 실렉터(210)는 중복 카피들을 동일한 노드 또는 다른 클러스터 노드들에 제공할 수 있다. 리소스 실렉터(210)는 설정 가능한 중복 비율을 복제 요소(replication factor)를 통해 제공할 수 있다. 리소스 실렉터(210)는 내고장성 방법으로써 선택된 체크-포인팅(check-pointing)에 관한 체크-포인트 간격 파라미터들을 통해 설정 가능한 주파수를 제공할 수 있다. 사용자가 체크-포인팅 간격을 따라 복제 요소를 선택하는 경우, 체크-포인트된 RDDs는 복제 요소를 통해 복제될 수 있다. 이러한 경우, 리소스 실렉터(210)는 내 고장성을 과다하게 제공할 수 있다(복제 및 체크 포인팅).
몇몇 실시 예들로서, DRAM이 캐싱 장치로써 선택되면, 리소스 실렉터(210)는 체크-포인팅을 기반으로 내 고장성을 다음(비휘발성) 장치(PRAM, SCD, SSD, HDD, 분산 스토리지)로 내 고장성을 제공할 수 있다. SSD는 캐싱 장치로써 선택될 수 있고, 리소스 실렉터(210)는 다른 SSDs로 복제, 다른 장치 유형들로 체크-포인팅을 기반으로 내 고장성을 제공할 수 있다. HDD가 캐싱 장치로 선택되면, 리소스 실렉터(210)는 다른 HDDs로 복제, 다른 장치 유형들로 체크-포인팅을 기반으로 내 고장성을 제공할 수 있다. 추가적으로, 복제 또는 체크-포인팅은 동일한 클러스터 노드 또는 다른 클러스터 노드로 스토리지 장치에 스토리지 장치로 수행될 수 있다. 다른 클러스터 노드들을 통해 중복을 갖는 것은 노드 실패에 대한 보호를 가능하게 하고, 노드들이 다른 서버 랙들(racks)에 있으면,랙-파워 실패에 대한 보호이다. 내 고장성이 다른 클러스터 노드들에 제공되면, 리소스 실렉터(210)는 인터-노드(inter-node) 복제 및 체크-포인팅을 제공하기 위해 서로 통신할 수 있는 다양한 클러스터 노드들을 맡을 수 있다.
도5a-5b는 본 발명의 실시 예에 따른 도 2의 캐시된 데이터를 관리하는 방법을 보여주는 순서도이다. 도 5의 블록(505)에서, 리소스 모니터(205)는 클러스터 노드의 하나 이상의 스토리지 장치들의 성능을 결정할 수 있다. 블록(510)에서, 리소스 스케줄려(210)는 스토리지 장치로 데이터를 캐시할 수 있다. 블록(515)에서, 복제기(310)는 내고장성을 위해 제2 스토리지 장치의 데이터를 복제한다.
블록(520)(도 5b)에서, 리소스 모니터(205)는 데이터를 캐싱하는 스토리지 장치의 성능을 모니터한다. 상술한 바와 같이, 데이터를 개싱하는 하나 이상의 스토리지 장치들이 있을 수 있다. 블록(520)에서, 어떤 또는 모든 스토리지 장치들은 캐싱 데이터를 모니터할 수 있다. 다른 장치들을 모니터링 함으로써, 리소스 스케줄러(210)는 데이터 이동/스토리지 장치 캐싱 데이터가 포화되면, 요청 방행 수정을 위해 적절한 스토리지 장치는 선택될 수 있다. 블록(525)에서, 리소스 스케줄러(210)는 스토리지 캐싱 데이터가 포화 상태(또는 포화 상태에 접근) 여부에 대해 결정한다. 스토리지 캐싱 데이터가 포화이면, 블록(530)에서, 리소스 스케줄러(210)는 데이터를 다른 캐시 장치로 이동시키고, 블록(535)에서, 리소스 스케줄러(210)는 제1 스토리지 장치에서 제3 스토리지 장치로 향하는 향후 캐시 요청들을 다시 보낼 수 있다.
도 5a 및 도 5b에서, 본 발명의 일 실시 예가 개시된다. 하지만, 당업자는 볼 발명의 다른 실시 예들이 존재함을 알 수 있다. 예를 들어, 블록(515)은 시스템의 내고장성을 제거하지만, 캐싱 동작들을 유지하기 위해 생략될 수 있다. 또는 블록(535)이후, 제어는 장치들을 더 모니터링하기 위해 블록(520)으로 되돌아갈 수 있다. 순서도들의 모든 그러한 변형들은 본 발명의 실시 예들로 간주된다.
스토리지 장치가 포화되면, 리소스 스케줄러가 어떻게 데이터 이동을 다루는지, 그리고 리소스 스케줄러가 내고장성에 대해 데이터 복제를 어떻게 다루는지에 대해 흥미로운 상호 작용이 있다. 데이터가 복제되면, 몇몇 실시 예들에서, 캐싱 서비스를 제공하는 스토리지 장치보다 높지 않은 우선순위를 갖는 스토리지 장치로 데이터는 복제된다. 하지만, 리소스 스케줄러가 높은 우선순위의 장치에서 낮은 우선순위의 장치로 데이터를 이동시킬 때, 복제된 데이터는 지금 현재 데이터를 캐싱하는 장치보다 더 높은 우선순위의 장치에 상주할 수 있다.
이 상황을 해결하기 위한 두 가지의 방법이 있다. 하나는 아무것도 하지 않는 것이다. 복제는 내고장성을 제공하고, 데이터가 캐시 된 데이터보다 높은 우선 순위 장치에 복제된다는 사실은 단순히 호기심 이슈이다.(사실, 내고장성은 낮은 우선순위 장치로의 복제를 반드시 요청하지는 않는다. 우선순위에 관계없이, 데이터 복제가 이용가능한 장치에서 수행되어야 하는 이유는 없다.) 다른 해결책은 캐시된 데이터보다 더 높은 우선순위를 갖지 않는 복제된 데이터를 보장하기 위해 복제된 데이터를 이동하는 것이다.
도 6은 본 발명의 실시 예에 따라 스토리지 장치들의 성능 정보를 결정하는 방법을 보여주기 위한 순서도이다. 도 6의 블록(605)에서, 리소스 모니터(205)는 스토리지 장치에 대한 성능 정보에 액세스할 수 있다. 리소스 모니터(205)는 스토리지로부터의 성능 정보 또는 몇몇 액세스 가능한 로컬(local) 또는 네트워크(networked) 스토리지 장치로부터의 성능 정보에 액세스할 수 있다. 그 대신에, 블록(610)에서, 리소스 모니터(205)는 장치의 성능 정보를 결정하기 위해 장치에서 프로파일러를 실행할 수 있다. 그 대신에, 블록(615)에서, 리소스 모니터(205)는 실시간으로, 스토리지의 동작의 모니터링으로부터 장치의 성능 정보를 결정할 수 있다.
도 6에 도시된 성능 정보를 결정하기 위한 다양한 방법들은 상호 배타적이다. 예를 들어, 스토리지 장치는 블록(605)에서 제공될 수 있다. 하지만, 시스템은 블록(610)에서 장치가 여전히 사양을 수행하고 있음을 보장하기 위해 스토리지 장치에 주기적으로 프로파일러를 실행할 수 있다.
도 7은 본 발명의 실시 예에 따라 도 2의 리소스 모니터가 적절하게 이동되었는지 결정할 때, 캐시된 데이터의 이동 순서를 보여주기 위한 순서도이다. 도 7의 블록(705)에서, 리소스 스케줄러(210)는 포화된 스토리지 장치의 모든 데이터를 다른 스토리지 장치로 이동시킬 수 있다. 그리고, 제1 스토리지 장치로부터 이동된 모든 데이터를 삭제한다. 블록(710)에서, 리소스 스케줄러(210)는 스토리지 장치로부터 선택된 데이터를 다른 스토리지 장치로 이동시킨다. 이동을 위해 선택된 데이터는 리소스 스케줄러(210)로부터 적절하게 한단된다. 예를 들어, 리소스 스케줄러(210)는 이동을 위해 스토리지 장치에 가장 오래 상주한 데이터를 선택할 수 있고, 또는 리소스 스케줄러(210)는 이동을 위해 스토리지 장치의 가장 큰 데이터 파일(들)을 선택할 수 있다.
도 8은 본 발명의 실시 예에 따른 클러스터 컴퓨팅 프레임 워크로써 동작하는 컴퓨터 시스템을 보여주는 사시도이다. 도 8에서, 컴퓨팅 시스템(805)은 클록(clock)(810) 랜덤 엑세스 메모리(ramdom access memory)(RAM)(815), 사용자 인터페이스(interface)(820), 솔리드 스테이트 드라이브/디스크(solid state drive/disk)(SSD)(230), 이더넷 커넥터(Ethernet connector), 프로세서(315)와 같은 네트워크 커넥터(network connector)(825), 및/또는 메모리 컨트롤러(830), 이들을 전기적으로 연결하기 위한 시스템 버스(system bus)(835), I/O 엔진(115)를 포함할 수 있다. I/O 엔진(115)는 클록(810), 랜덤 엑세스 메모리(RAM)(815), 사용자 인터페이스(820), 솔리드 스테이트 드라이브/디스크(SSD)(230), 네트워크 커넥터(825), 프로세서(315), 및/또는 메모리 컨트롤러(830)와 인터페이스 하거나 포함할 수 있다. 본 발명의 실시 예들은 제한없이 다음의 문장을 확장 할 수있다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치의 대역폭을 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치의 용량 포화를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치의 성능을 결정하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치의 성능을 결정하고, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치의 성능을 결정하고, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 리소스 모니터는 제1 스토리지 장치로부터 성능 정보를 액세스하도록 동작한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치의 성능을 결정하고, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 리소스 모니터는 제1 스토리지 장치를 프로파일(profile)하기 위한 프로파일러를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 런-타임 모니터를 이용하여 제1 스토리지 장치의 성능을 결정하고, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 리소스 스케줄러는 데이터를 사용하는 어플리케이션으로부터 제공된 정보를 기반으로 초기에 데이터를 캐시하기 위한 제1 스토리지 장치를 선택하도록 동작한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 제1 우선순위는 제2 우선순위보다 높고 리소스 스케줄러는 초기에 데이터를 캐시하기 위해 제1 스토리지 장치를 높은 우선순위 장치로써 선택하도록 동작한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 제1 우선순위는 제2 우선순위보다 높고, 리소스 스케줄러는 초기에 데이터를 캐시하기 위해 제1 스토리지 장치를 높은 우선순위 장치로써 선택하고, 리소스 모니터가 제1 스토리지가 포화되었다고 나타내면, 미래 데이터 캐시를 위해 제2 스토리지 장치를 선택한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러, 캐시된 데이터를 제3 스토리지 장치에 복제하기 위한 복제기(replicator)를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러, 캐시된 데이터를 제 우선순위를 갖는 제3 스토리지 장치에 복제하기 위한 복제기(replicator)를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 제3 우선순위는 제1 우선순위와 같다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러, 캐시된 데이터를 제 우선순위를 갖는 제3 스토리지 장치에 복제하기 위한 복제기(replicator)를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 제3 우선순위는 제1 우선순위보다 낮다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러, 캐시된 데이터를 제 우선순위를 갖는 제3 스토리지 장치에 복제하기 위한 복제기(replicator)를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 제3 스토리지 장치는 제2 인-메모리 클러스터 컴퓨팅 프레임워크 노드에 있다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러, 캐시된 데이터를 제 우선순위를 갖는 제3 스토리지 장치에 복제하기 위한 복제기(replicator)를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 제3 스토리지 장치는 제2 인-메모리 클러스터 컴퓨팅 프레임워크 노드에 있고, 제3 우선순위는 제1 우선순위와 동일하다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러, 캐시된 데이터를 제 우선순위를 갖는 제3 스토리지 장치에 복제하기 위한 복제기(replicator)를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 제3 스토리지 장치는 제2 인-메모리 클러스터 컴퓨팅 프레임워크 노드에 있고, 제3 우선순위는 제1 우선순위보다 낮다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러, 캐시된 데이터를 제 우선순위를 갖는 제3 스토리지 장치에 복제하기 위한 복제기(replicator)를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 제3 스토리지 장치는 제2 인-메모리 클러스터 컴퓨팅 프레임워크 노드에 있고, 제3 스토리지 장치는 사용자에 의해 특정된다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다. 데이터는 제1 스토리지 장치에 탄성 분산 데이터세트(resilient distributed data set, RDD)를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 모든 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 프로세서, 캐시된 데이터를 저장하기 위한 제1 스토리지 장치, 제1 우선순위를 갖는 제1 스토리지 장치, 제2 우선순위를 갖는 제2 스토리지 장치, 제1 스토리지 장치를 모니터하기 위해 동작하는 리소스 모니터, 및 리소스 모니터가 제1 스토리지 장치가 포화되었다고 나타내면, 제1 스토리지 장치의 오래된 캐시된 데이터를 제2 스토리지 장치로 이동시키는 리소스 스케줄러를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드를 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치의 대역폭 포화를 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치의 용량 포화를 포함하는 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치의 용량의 결정을 포함하는 제1 스토리지의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치로부터의 성능 정보의 액세싱을 포함하는 제1 스토리지 장치의 용량의 결정을 포함하는 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치에서의 프로파일러의 실행을 포함하는 제1 스토리지 장치의 용량을 결정하는 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 실시간 모니터링으로부터 제1 스토리지 장치에 대한 현재 대역폭을 결정하는 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 데이터를 사용하는 어플리케이션에 의해 선택되고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 복수의 장치들 중에서 더 높은 우선순위를 갖고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키고, 제1 스토리지 장치가 포화되면, 클러스터 노드의 제1 스토리지 장치에 대한 미래 채시 요청들을 제2 스토리지 장치로 방향을 수정하는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 복수의 장치들 중에서 더 높은 우선순위를 갖고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키고, 캐시된 데이터를 제3 스토리지 장치로 복제하는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 복수의 장치들 중에서 더 높은 우선순위를 갖고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키고, 캐시된 데이터를 제3 스토리지 장치로 복제하고, 제3 스토리지 장치는 제1 스토리지 장치와 동일한 우선순위를 갖는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 복수의 장치들 중에서 더 높은 우선순위를 갖고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키고, 캐시된 데이터를 제3 스토리지 장치로 복제하고, 제3 스토리지 장치는 제1 스토리지 장치보다 낮은 우선순위를 갖는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 복수의 장치들 중에서 더 높은 우선순위를 갖고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키고, 캐시된 데이터를 제2 클러스터 노드의 제3 스토리지 장치로 복제하는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 복수의 장치들 중에서 더 높은 우선순위를 갖고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키고, 캐시된 데이터를 제2 클러스터 노드의 제3 스토리지 장치로 복제하고, 제3 스토리지 장치는 제1 스토리지 장치와 동일한 우선순위를 갖는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 복수의 장치들 중에서 더 높은 우선순위를 갖고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키고, 캐시된 데이터를 제2 클러스터 노드의 제3 스토리지 장치로 복제하고, 제3 스토리지 장치는 제1 스토리지 장치보다 낮은 우선순위를 갖는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
본 발명의 실시 예는 클러스터 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐싱하고, 제1 스토리지 장치는 복수의 장치들 중에서 더 높은 우선순위를 갖고, 제1 스토리지 장치의 동작을 모니터링 하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시키고, 캐시된 데이터를 사용자로부터 정의된 제3 스토리지 장치로 복제하는 인-메모리 클러스터 컴퓨팅 프레임워크의 데이터 캐싱을 위한 방법을 포함한다.
아티클(article)을 포함하는 본 발명의 실시 예는 가시적인 스토리지 매체(tangible storage medium)로 구성되고, 비 일시적인 명령들을 저장하는 기계에 의해 실행될 때, 클러스터 노드에서 제1 우선순위를 갖는 제1 스토리지 장치의 회복성 분산 데이터세트(RDD)를 캐싱하고, 제1 스토리지 장치의 동작을 모니터하고, 제1 스토리지 장치가 포화되면, 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시킨다.
아티클(article)을 포함하는 본 발명의 실시 예는 가시적인 스토리지 매체(tangible storage medium)로 구성되고, 비 일시적인 명령들을 저장하는 기계에 의해 실행될 때, 클러스터 노드에서 제1 우선순위를 갖는 제1 스토리지 장치의 회복성 분산 데이터세트(RDD)를 캐싱하고, 제1 스토리지 장치의 동작을 모니터하고, 제1 스토리지 장치가 포화되면, 모든 캐시된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시킨다.
아티클(article)을 포함하는 본 발명의 실시 예는 가시적인 스토리지 매체(tangible storage medium)로 구성되고, 비 일시적인 명령들을 저장하는 기계에 의해 실행될 때, 클러스터 노드에서 제1 우선순위를 갖는 제1 스토리지 장치의 회복성 분산 데이터세트(RDD)를 캐싱하고, 제1 스토리지 장치의 동작을 모니터하고, 제1 스토리지 장치가 포화되면, 가장 오래된 데이터를 제2 우선순위를 갖는 제2 스토리지 장치로 이동시킨다.
상기의 설명은 본 발명의 개념의 특정 양상들이 구현될 수 있는 기계 또는 적합한 기계의 간략하고 일반적인 설명을 제공한다. 일반적으로, 기계는 프로세서들, 메모리(RAM, 판독 전용 메모리(read-only memory, ROM) 또는 다른 보존 저장 매체), 스토리지 장치들, 비디오 인터페이스 및/또는 입/출력 인터페이스 포트들(ports)에 접근하기 위한 시스템 버스를 포함한다.
기계는 키보드들, 마우스들과 같은 일반적인 입력 장치들의 입력으로부터 제어될 수 있다. 뿐만 아니라. 기계는 다른 기계로부터 수신된 가상 현실(virtual reality, VR) 환경, 생체 인식 피드백, 또는 다른 입력 신호와의 상호작용 지시로부터 제어될 수 있다. 본 발명에서 사용된 "기계"라는 용어는 신호 기계, 가상 기계 또는 기계들과 통신에 대하여 연결된 시스템, 가상 기계들 또는 함께 동작하는 장치들을 아울러서 사용된다. 예시적은 기계들은 개인 컴퓨터, 워크스테이션들(workstations), 서버들, 휴대용 컴퓨터들, 핸드헬드(handheld) 장치들, 휴대폰들, 테블렛들(tablets)과 같은 컴퓨팅 장치들뿐만 아니라, 개인 또는 공용 수송 장치(자동차, 기차, 택시)와 같은 수송 장치들을 포함한다.
장치는 프로그래머블(programmable) 또는 프로그램 할 수 없는(non-programmable) 로직 장치들 또는 어레이들, 응용 주문형 집적 회로들(Application Specific Integrated Circuits, ASICs), 임베디드 컴퓨터들, 스마트 카드들과 같은 임베디드 컨트롤러들(embedded controllers)을 포함할 수 있다. 기계는 네트워크 인터페이스, 모뎀 또는 다른 통신에 대한 연결을 통해 하나 이상의 원격 기계들과 하나 이상의 연결들을 이용할 수 있다. 기계들은 인트라넷(intranet), 로컬 영역 네트워크들, 광역 네트워크들과 같은 물리적 및/또는 논리적 네트워크 방법을 통해 상호 연결될 수 있다. 당업자는, 무선 주파수(RF), 위성, 마이크로파(microwave), 전기 전자 기술자 협회(Institute of Electrical and Electronics Engineer, IEEE) 545.11, 블루투스, 광, 적외선, 케이블, 레이저를 포함하는 네트워크 통신이 다양한 연결 및/또는 무선 단거리 또는 장거리 수송 및 프로토콜임을 이해할 수 있다.
본 발명의 실시 예들은 기능들, 절차들, 데이터 구조들, 어플리케이션 프로그램들을 포함하는 관련 데이터와 함께 또는 언급하여 설명될 수 있다. 관련 데이터는 RAM, ROM과 같은 휘발성 및/또는 불휘발성 메모리 또는 다른 스토리지 장치들 및 하드 드라이브들, 플로피 디스크들(floppy-disks), 광 스토리지, 테이블들, 플래시 메모리 스틱들(memory sticks), 생체 정보 스토리지 등을 포함하는 관련 저장 미디어에 저장될 수 있다. 관련 데이터는 압축 또는 암호화 포맷에서 사용될 수 있는 패킷들, 시리얼 데이터(serial data), 병렬 데이터, 전파 신호 등과 같은 형태의 물리적 및/또는 논리적 네트워크를 포함하는 운송 환경들을 통해 전송될 수 있다. 관련 데이터는 분산 환경에서 사용되고, 기계 액세스에 대해 국부적으로 및/또는 원격적으로 저장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
105: 컴퓨트 워커 220: 메모리
110: 실행 엔진 225: SCM
115: I/O 엔진 230: SSD
120: 캐시 엔진 235: HDD
125: 장치들 240~260: 우선 순위들
130: 기존 분산 스토리지 시스템들 310: 복제기
205: 리소스 모니터 315: CPU
210: 리소스 스케줄러 405: 프로파일러

Claims (10)

  1. 프로세서(processor);
    제1 우선순위를 갖고, 캐시된 데이터를 저장하는 제1 스토리지 장치;
    제2 우선순위를 갖는 제2 스토리지 장치;
    상기 제1 스토리지 장치를 모니터(monitor)하는 리소스 모니터(resource monitor); 및
    상기 리소스 모니터가 상기 제1 스토리지 장치의 포화를 나타내면, 상기 제1 스토리지 장치의 상기 캐시된 데이터를 상기 제2 스토리지 장치로 이동시키는 리소스 스케줄러(resource scheduler)를 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드(in-memory cluster computing framework node).
  2. 제 1 항에 있어서,
    상기 리소스 모니터는 상기 제1 스토리지 장치의 성능을 결정하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드.
  3. 제 1 항에 있어서,
    상기 리소스 스케줄러는 상기 데이터를 사용하는 어플리케이션에 의해 제공되는 정보를 기반으로 상기 데이터를 초기 캐시하기 위해 상기 제1 스토리지 장치를 선택하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드.
  4. 제 1 항에 있어서,
    제3 스토리지 장치에 상기 캐시된 데이터를 복제하기 위한 복제기(replicator)를 더 포함하는 인-메모리 클러스터 컴퓨팅 프레임워크 노드.
  5. 제 1 항에 있어서,
    상기 리소스 스케줄러는 상기 제1 스토리지 장치의 모든 데이터를 상기 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크 노드.
  6. 제 1 항에 있어서,
    상기 리소스 스케줄러는 상기 제1 스토리지 장치의 모든 데이터를 상기 제2 스토리지 장치로 이동시키는 인-메모리 클러스터 컴퓨팅 프레임워크 노드.
  7. 인-메모리 클러스터 컴퓨팅 프레임워크 노드(in-memory cluster computing framework node)의 데이터 캐싱 방법에 있어서:
    상기 인-메모리 클러스터 컴퓨팅 프레임워크 노드의 제1 우선순위를 갖는 제1 스토리지 장치로 데이터를 캐시하는 단계;
    상기 제1 스토리지 장치의 동작을 모니터(monitor)하는 단계; 그리고
    상기 제1 스토리지 장치가 포화되면, 제2 우선순위를 갖는 제2 스토리지 장치로 상기 캐시된 데이터를 이동시키는 단계를 포함하는 데이터 캐싱 방법.
  8. 제 7 항에 있어서,
    상기 인-메모리 클러스터 컴퓨팅 프레임워크 노드의 상기 제1 우선순위를 갖는 상기 제1 스토리지 장치의 상기 데이터를 캐시하는 단계는 상기 인-메모리 클러스터 컴퓨팅 프레임워크 노드의 상기 제1 스토리지 장치의 상기 데이터를 캐시하고, 상기 제1 스토리지 장치는 상기 데이터를 사용하는 어플리케이션에 의해 선택되는 데이터 캐싱 방법.
  9. 제 7 항에 있어서,
    상기 인-메모리 클러스터 컴퓨팅 프레임워크 노드의 상기 제1 우선순위를 갖는 상기 제1 스토리지 장치의 상기 데이터를 캐시하는 단계는 상기 인-메모리 클러스터 컴퓨팅 프레임워크 노드의 상기 제1 스토리지 장치의 상기 데이터를 캐시하고, 상기 제1 스토리지 장치는 복수의 장치들 중 더 높은 우선 순위를 갖는 데이터 캐싱 방법.
  10. 제 9 항에 있어서,
    상기 스토리지 장치가 포화되면, 상기 인-메모리 클러스터 컴퓨팅 프레임워크 노드의 상기 제1 스토리지 장치에 대한 미래 캐시 요청들을 상기 제2 스토리지 장치로 방향을 수정하는 단계를 더 포함하는 데이터 캐싱 방법.
KR1020150161966A 2014-12-16 2015-11-18 인-메모리 클러스터 컴퓨팅 프레임워크 노드 및 그것의 데이터 캐싱 방법 KR102403592B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462092827P 2014-12-16 2014-12-16
US62/092,827 2014-12-16
US14/712,895 US10176097B2 (en) 2014-12-16 2015-05-14 Adaptable data caching mechanism for in-memory cluster computing
US14/712,895 2015-05-14

Publications (2)

Publication Number Publication Date
KR20160073297A true KR20160073297A (ko) 2016-06-24
KR102403592B1 KR102403592B1 (ko) 2022-05-30

Family

ID=56111288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150161966A KR102403592B1 (ko) 2014-12-16 2015-11-18 인-메모리 클러스터 컴퓨팅 프레임워크 노드 및 그것의 데이터 캐싱 방법

Country Status (2)

Country Link
US (3) US10176097B2 (ko)
KR (1) KR102403592B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101722643B1 (ko) * 2016-07-21 2017-04-05 한국과학기술정보연구원 Rdd 관리 방법, rdd 관리 장치 및 rdd 관리 프로그램을 저장하는 저장매체
KR20180022075A (ko) * 2016-08-23 2018-03-06 전자부품연구원 실시간 데이터 처리를 위한 듀얼 인메모리 기반 데이터 저장 및 처리 시스템

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528875B1 (en) 2015-04-06 2020-01-07 EMC IP Holding Company LLC Methods and apparatus implementing data model for disease monitoring, characterization and investigation
US10706970B1 (en) 2015-04-06 2020-07-07 EMC IP Holding Company LLC Distributed data analytics
US10404787B1 (en) 2015-04-06 2019-09-03 EMC IP Holding Company LLC Scalable distributed data streaming computations across multiple data processing clusters
US10541938B1 (en) 2015-04-06 2020-01-21 EMC IP Holding Company LLC Integration of distributed data processing platform with one or more distinct supporting platforms
US10425350B1 (en) 2015-04-06 2019-09-24 EMC IP Holding Company LLC Distributed catalog service for data processing platform
US10511659B1 (en) 2015-04-06 2019-12-17 EMC IP Holding Company LLC Global benchmarking and statistical analysis at scale
US10505863B1 (en) 2015-04-06 2019-12-10 EMC IP Holding Company LLC Multi-framework distributed computation
US10812341B1 (en) 2015-04-06 2020-10-20 EMC IP Holding Company LLC Scalable recursive computation across distributed data processing nodes
US10509684B2 (en) 2015-04-06 2019-12-17 EMC IP Holding Company LLC Blockchain integration for scalable distributed computations
US10791063B1 (en) 2015-04-06 2020-09-29 EMC IP Holding Company LLC Scalable edge computing using devices with limited resources
US10860622B1 (en) 2015-04-06 2020-12-08 EMC IP Holding Company LLC Scalable recursive computation for pattern identification across distributed data processing nodes
US10515097B2 (en) 2015-04-06 2019-12-24 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
US10496926B2 (en) 2015-04-06 2019-12-03 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
US10277668B1 (en) 2015-04-06 2019-04-30 EMC IP Holding Company LLC Beacon-based distributed data processing platform
US10776404B2 (en) 2015-04-06 2020-09-15 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10541936B1 (en) 2015-04-06 2020-01-21 EMC IP Holding Company LLC Method and system for distributed analysis
US9946512B2 (en) * 2015-09-25 2018-04-17 International Business Machines Corporation Adaptive radix external in-place radix sort
US10656861B1 (en) * 2015-12-29 2020-05-19 EMC IP Holding Company LLC Scalable distributed in-memory computation
US10467152B2 (en) 2016-05-18 2019-11-05 International Business Machines Corporation Dynamic cache management for in-memory data analytic platforms
US10204175B2 (en) * 2016-05-18 2019-02-12 International Business Machines Corporation Dynamic memory tuning for in-memory data analytic platforms
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
CN106557370A (zh) * 2016-11-28 2017-04-05 上海宝尊电子商务有限公司 基于实时统计数据的计算资源动态调度平台
US10191854B1 (en) * 2016-12-06 2019-01-29 Levyx, Inc. Embedded resilient distributed dataset systems and methods
US10374968B1 (en) 2016-12-30 2019-08-06 EMC IP Holding Company LLC Data-driven automation mechanism for analytics workload distribution
US10572383B2 (en) 2017-04-12 2020-02-25 International Business Machines Corporation Caching a block of data in a multi-tenant cache storage device based on space usage boundary estimates
WO2019022633A1 (en) * 2017-07-27 2019-01-31 EMC IP Holding Company LLC DATA MANAGEMENT WITHIN INTEGRATED CIRCUIT DISK STORAGE
DE102017216941A1 (de) * 2017-09-25 2019-03-28 Robert Bosch Gmbh Verfahren zum Herstellen eines mikromechanischen Elements
CN107967335B (zh) * 2017-12-04 2020-10-16 华中科技大学 一种分布式sql处理方法及系统
US10795598B1 (en) 2017-12-07 2020-10-06 Pure Storage, Inc. Volume migration for storage systems synchronously replicating a dataset
US10593380B1 (en) * 2017-12-13 2020-03-17 Amazon Technologies, Inc. Performance monitoring for storage-class memory
CN108874322A (zh) * 2018-06-29 2018-11-23 郑州云海信息技术有限公司 一种事件处理方法、装置和计算机可读存储介质
US11188348B2 (en) * 2018-08-31 2021-11-30 International Business Machines Corporation Hybrid computing device selection analysis
CN111274067A (zh) * 2018-12-04 2020-06-12 北京京东尚科信息技术有限公司 执行计算任务的方法和装置
CN110162272B (zh) * 2019-05-23 2020-06-12 北京邮电大学 一种内存计算缓存管理方法及装置
CN112015326B (zh) * 2019-05-28 2023-02-17 浙江宇视科技有限公司 集群数据处理方法、装置、设备及存储介质
CN110688993B (zh) * 2019-12-10 2020-04-17 中国人民解放军国防科技大学 一种基于Spark作业的计算资源确定方法及装置
US11061828B1 (en) 2020-02-25 2021-07-13 International Business Machines Corporation Using multi-tiered cache to satisfy input/output requests

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040162941A1 (en) * 2003-02-18 2004-08-19 Nec Corporation Disk array control apparatus and method
US20130111474A1 (en) * 2011-10-31 2013-05-02 Stec, Inc. System and method to cache hypervisor data
US20140122778A1 (en) * 2012-03-30 2014-05-01 Unisys Corporation Rapid network data storage tiering system and methods
JP2014516426A (ja) * 2011-08-01 2014-07-10 株式会社日立製作所 第1記憶制御装置及び第1記憶制御装置の制御方法
US8843447B2 (en) * 2012-12-14 2014-09-23 Datadirect Networks, Inc. Resilient distributed replicated data storage system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8245060B2 (en) 2009-10-15 2012-08-14 Microsoft Corporation Memory object relocation for power savings
EP2635982A4 (en) 2010-11-04 2017-04-26 Speedment AB Method and apparatus for handling digital objects in a communication network
US20120215970A1 (en) 2011-02-22 2012-08-23 Serge Shats Storage Management and Acceleration of Storage Media in Clusters
US8832674B2 (en) 2011-02-24 2014-09-09 Software Ag Usa, Inc. Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store
US20130173853A1 (en) 2011-09-26 2013-07-04 Nec Laboratories America, Inc. Memory-efficient caching methods and systems
US20140258595A1 (en) 2013-03-11 2014-09-11 Lsi Corporation System, method and computer-readable medium for dynamic cache sharing in a flash-based caching solution supporting virtual machines

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040162941A1 (en) * 2003-02-18 2004-08-19 Nec Corporation Disk array control apparatus and method
JP2014516426A (ja) * 2011-08-01 2014-07-10 株式会社日立製作所 第1記憶制御装置及び第1記憶制御装置の制御方法
US20130111474A1 (en) * 2011-10-31 2013-05-02 Stec, Inc. System and method to cache hypervisor data
US20140122778A1 (en) * 2012-03-30 2014-05-01 Unisys Corporation Rapid network data storage tiering system and methods
US8843447B2 (en) * 2012-12-14 2014-09-23 Datadirect Networks, Inc. Resilient distributed replicated data storage system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101722643B1 (ko) * 2016-07-21 2017-04-05 한국과학기술정보연구원 Rdd 관리 방법, rdd 관리 장치 및 rdd 관리 프로그램을 저장하는 저장매체
KR20180022075A (ko) * 2016-08-23 2018-03-06 전자부품연구원 실시간 데이터 처리를 위한 듀얼 인메모리 기반 데이터 저장 및 처리 시스템

Also Published As

Publication number Publication date
KR102403592B1 (ko) 2022-05-30
US10467136B2 (en) 2019-11-05
US20200034292A1 (en) 2020-01-30
US10176097B2 (en) 2019-01-08
US20160170882A1 (en) 2016-06-16
US20190050334A1 (en) 2019-02-14

Similar Documents

Publication Publication Date Title
KR20160073297A (ko) 인-메모리 클러스터 컴퓨팅 프레임워크 노드 및 그것의 데이터 캐싱 방법
Bouteiller et al. Coordinated checkpoint versus message log for fault tolerant MPI
Adya et al. Slicer:{Auto-Sharding} for datacenter applications
Bindschaedler et al. Hailstorm: Disaggregated compute and storage for distributed lsm-based databases
US9514014B2 (en) Methods and systems of managing a distributed replica based storage
Do et al. Limplock: Understanding the impact of limpware on scale-out cloud systems
Balakrishnan et al. Corfu: A distributed shared log
Misra et al. Managing tail latency in datacenter-scale file systems under production constraints
Svärd et al. Principles and performance characteristics of algorithms for live VM migration
US20150081636A1 (en) Systems and methods for providing snapshots of applications to remote locations with minimal performance impact
Vasavada et al. Comparing different approaches for incremental checkpointing: The showdown
van Dongen et al. A performance analysis of fault recovery in stream processing frameworks
George et al. Fault tolerance on large scale systems using adaptive process replication
Nogueira et al. Elastic state machine replication
Li et al. Efficient live virtual machine migration for memory write-intensive workloads
Huang et al. VMCSnap: Taking snapshots of virtual machine cluster with memory deduplication
Lemarinier et al. Coordinated checkpoint versus message log for fault tolerant MPI
Zhang et al. Parity-only caching for robust straggler tolerance
Lu et al. Successor: Proactive cache warm-up of destination hosts in virtual machine migration contexts
Bacardit et al. FPGA checkpointing for scientific computing
Newhall et al. Reliable adaptable network ram
Zhang et al. POCache: Toward robust and configurable straggler tolerance with parity-only caching
Nguyen et al. Technical report: Optimistic execution in key-value store
Abusalah et al. Dependable cloud resources with guardian
Faqeh et al. PCRAFT: capacity planning for dependable stateless services

Legal Events

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