KR20180071200A - 분산 파일 시스템의 복수의 클러스터의 관리 - Google Patents

분산 파일 시스템의 복수의 클러스터의 관리 Download PDF

Info

Publication number
KR20180071200A
KR20180071200A KR1020177033514A KR20177033514A KR20180071200A KR 20180071200 A KR20180071200 A KR 20180071200A KR 1020177033514 A KR1020177033514 A KR 1020177033514A KR 20177033514 A KR20177033514 A KR 20177033514A KR 20180071200 A KR20180071200 A KR 20180071200A
Authority
KR
South Korea
Prior art keywords
file
cluster
clusters
request
physical
Prior art date
Application number
KR1020177033514A
Other languages
English (en)
Inventor
레이 구오
진 첸
총 첸
샤오디 커
첸 첸
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20180071200A publication Critical patent/KR20180071200A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F17/30194
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시는 저장된 클러스터 파일을 가진, 분산 파일 시스템의 클러스터를 관리하기 위한 방법 및 시스템에 관한 것이다. 애플리케이션이 실행 중인 사용자 장치와, 클러스터 파일에 관한 메타데이터를 이용하여 복수의 클러스터에 걸쳐 작업을 관리하고 조정하기 위한 분산 파일 시스템의 클러스터 사이에는 중간 계층이 제공된다.

Description

분산 파일 시스템의 복수의 클러스터의 관리
본 출원은 2016년 11월 16일에 출원된 미국 임시 특허출원 번호 제62/422,751호에 대해 우선권을 주장하는 바이며, 그 전체 내용이 원용에 의해 본 명세서에 포함된다. 본 출원은 2017년 5월 3일에 출원된 미국 임시 특허출원 번호 제15/585,815호에 대해 우선권을 주장하는 바이며, 그 전체 내용 또한 원용에 의해 본 명세서에 포함된다.
본 개시는 분산 파일 시스템의 복수의 클러스터를 중앙 집중 방식으로 관리하는 것에 관한 것이다.
분산 파일 시스템의 클러스터는 클라이언트/서버 기반의 애플리케이션으로, 사용자로 하여금 (클라이언트를 통해) 컴퓨터 네트워크를 통해 공유하는 복수의 호스트로부터 데이터에 접근하고 데이터를 처리할 수 있게 한다.
조직에 걸쳐 파일 시스템의 크기가 증가하고 또한 서로 다른 필요가 발생함에 따라, 분산 파일 시스템의 복수의 클러스터를 생성하고 서로 독립적으로 관리하게 된다. 이로 인해, 서로 다른 클러스터에 필요한 데이터가 하나의 클러스터에 생성되는 것, 복수의 클러스터에 걸치는 애플리케이션 로드 밸런싱, 및 재해 복구 목적을 위한 데이터 복제 필요성과 관련된 문제가 발생하게 된다.
이러한 문제를 해결하기 위한 툴이 있지만, 이러한 툴은 복잡하면서 또한 데이터 복제 또는 네임 스페이스(name space)를 동기화하는 것과 같은 개별적인 필요를 위한 것이다. 따라서, 분산 파일 시스템의 복수의 클러스터를 관리하는 총체적 접근법이 필요하다.
본 개시는 분산 파일 시스템의 클러스터를 관리하기 위한 방법 및 시스템에 관한 것으로, 복수의 클러스터에는 클러스터 파일이 저장되어 있다. 애플리케이션이 실행 중인 사용자 장치와, 클러스터 파일에 관한 메타데이터를 이용하여 복수의 클러스터에 걸쳐 작업을 관리하고 조정하기 위한 분산 파일 시스템의 클러스터 사이에는 중간 계층(intermediate layer)이 제공된다.
광범위한 제1 양태에 따르면, 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 시스템이 제공되며, 상기 복수의 클러스터는 클러스터 파일을 포함한다. 상기 시스템은, 적어도 하나의 처리 유닛; 및 상기 적어도 하나의 처리 유닛에 통신 가능하게 연결되고, 컴퓨터 판독가능 프로그램 명령을 포함하는 비일시적 메모리를 포함한다. 상기 프로그램 명령은, 사용자 장치 상의 애플리케이션으로부터 신규 클러스터 파일을 생성하기 위한 요청을 수신하고; 상기 신규 클러스터 파일에 대응하는 클러스터 관리 파일을 생성하며; 상기 클러스터 관리 파일에 논리적 파일명을 할당하고 상기 신규 클러스터 파일에 물리적 파일명을 할당하고; 상기 신규 클러스터 파일에 대한 물리적 파일 위치를 상기 복수의 클러스터에 할당하며; 상기 클러스터 관리 파일에 메타데이터를 저장하고 - 여기서, 상기 메타데이터는 상기 클러스터 관리 파일을 상기 신규 클러스터 파일에 매핑하고, 상기 메타데이터는 상기 물리적 파일명과 상기 물리적 파일 위치를 포함하고 있음 -; 상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일을 생성하기 위한 상기 요청을 상기 물리적 파일 위치에 대응하는 상기 복수의 클러스터 중 하나에 송신하며; 상기 논리적 파일명을 이용하여, 상기 애플리케이션에 상기 클러스터 파일의 생성을 확인 응답(acknowledge)하는, 상기 적어도 하나의 처리 유닛에 의해 실행 가능하다.
이전 실시예 중 어느 하나에서, 상기 분산 파일 시스템은 하둡 분산 파일 시스템(Hadoop Distributed File System) 또는 하둡 호환 파일 시스템이다.
이전 실시예 중 어느 하나에서, 상기 프로그램 명령은 상기 애플리케이션 및 상기 복수의 클러스터와 통신하기 위한 적어도 하나의 클라이언트 컴포넌트와, 상기 메타데이터를 생성하고 저장하기 위한 적어도 하나의 매니저 컴포넌트를 구현하기 위해 실행 가능하다.
이전 실시예 중 어느 하나에서, 상기 적어도 하나의 클라이언트 컴포넌트는 복수의 클라이언트 컴포넌트를 포함하고, 각각의 클라이언트 컴포넌트는 서로 다른 사용자 애플리케이션과 인터페이스하도록 구성된다.
이전 실시예 중 어느 하나에서, 상기 적어도 하나의 매니저 컴포넌트는 복수의 매니저 컴포넌트를 포함하고, 각각의 매니저 컴포넌트는 상기 복수의 클러스터의 서로 다른 그룹과 인터페이스하도록 구성된다.
이전 실시예 중 어느 하나에서, 상기 프로그램 명령은 상기 시스템을 가상 머신으로서 구현하기 위해 실행 가능하다.
다른 광범위한 양태에 따르면, 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 방법이 제공되며, 상기 복수의 클러스터는 클러스터 파일을 포함한다. 사용자 장치 상의 애플리케이션으로부터 신규 클러스터 파일을 생성하기 위한 요청이 수신된다. 상기 신규 클러스터 파일에 대응하는 클러스터 관리 파일이 생성된다. 논리적 파일명과 물리적 파일명이 상기 신규 클러스터 파일에 할당된다. 상기 복수의 클러스터로부터 상기 신규 클러스터 파일에 대한 물리적 파일 위치가 할당된다. 상기 클러스터 관리 파일을 상기 신규 클러스터 파일에 매핑하는 메타데이터가 상기 클러스터 관리 파일에 저장되고, 상기 메타데이터는 상기 물리적 파일명과 상기 물리적 파일 위치를 포함한다. 상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일을 생성하기 위한 상기 요청을 상기 물리적 파일 위치에 대응하는 상기 복수의 클러스터 중 하나에 송신한다. 상기 논리적 파일명을 이용하여, 상기 애플리케이션에 상기 클러스터 파일의 생성을 확인응답(acknowledge)한다.
이전 실시예 중 어느 하나에서, 상기 방법은 신규 클러스터 파일을 생성하기 위한 상기 요청을 제1 포맷에서 제2 포맷으로 변환하는 단계를 더 포함한다. 여기서, 상기 애플리케이션은 상기 제1 포맷을 지원하고, 상기 클러스터는 상기 제2 포맷을 지원한다.
이전 실시예 중 어느 하나에서, 신규 클러스터 파일에 대한 물리적 파일 위치를 할당하는 단계는, 상기 복수의 클러스터 중에서 상기 신규 클러스터 파일을 요청하는 상기 애플리케이션에 가장 가까운 클러스터를 선택하는 단계를 포함한다.
이전 실시예 중 어느 하나에서, 신규 클러스터 파일에 대한 물리적 파일 위치를 할당하는 단계는, 상기 복수의 클러스터 중에서 다른 클러스터와 비교하여 가장 큰 가용 공간을 가진 클러스터를 선택하는 단계를 포함한다.
이전 실시예 중 어느 하나에서, 상기 방법은 상기 신규 클러스터 파일에 접근하기 위한 요청을 수신하는 단계 - 상기 요청은 상기 논리적 파일명을 포함하고 있음 -; 상기 논리적 파일명을 이용하여, 상기 신규 클러스터 파일에 대응하는 상기 메타데이터를 검색(retrieve)하는 단계; 상기 메타데이터로부터 상기 물리적 파일의 위치를 결정하는 단계; 및 상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일에 접근하기 위한 상기 요청을 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계를 더 포함한다.
이전 실시예 중 어느 하나에서, 신규 클러스터 파일에 접근하기 위한 상기 요청을 송신하는 단계는 시스템 성능, 시스템 일관성(system consistency), 로컬 데이터 가용성(local data availability), 및 상기 클러스터 간의 로드 밸런싱 중 적어도 하나를 고려하여 상기 적어도 하나의 클러스터를 선택하는 단계를 포함한다.
또 다른 광범위한 양태에 따르면, 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 프로세서에 의해 실행 가능한 프로그램 명령이 저장되는 컴퓨터 판독가능 매체가 제공되며, 상기 복수의 클러스터는 클러스터 파일을 포함한다. 상기 프로그램 명령은 본 명세서에서 설명되는 방법 중 어느 하나를 수행하도록 구성된다.
또 다른 광범위한 양태에 따르면, 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 시스템이 제공되며, 상기 복수의 클러스터는 클러스터 파일을 포함한다. 상기 시스템은 상기 적어도 하나의 처리 유닛에 통신 가능하게 연결되고, 컴퓨터 판독가능 프로그램 명령을 포함하는 비일시적 메모리를 포함한다. 상기 프로그램 명령은 상기 적어도 하나의 처리 유닛에 의해 실행 가능한 컴퓨터 판독가능 프로그램 명령을 포함한다. 상기 적어도 하나의 처리 유닛은, 상기 복수의 클러스터 중 적어도 하나의 클러스터 내의 클러스터 파일에 접근하기 위한 요청을 수신하고 - 여기서, 상기 요청은 논리적 파일명을 포함하고, 상기 요청은 사용자 장치 상의 애플리케이션으로부터 수신되는 것임 -; 상기 논리적 파일명을 이용하여 메타데이터를 검색하며 - 상기 메타데이터는 상기 클러스터 파일에 대응하는 물리적 파일에 논리적 파일을 매핑하고 있음 -; 상기 메타데이터로부터 상기 물리적 파일의 위치를 결정하고; 상기 물리적 파일명을 이용하여, 상기 클러스터 파일에 접근하기 위한 상기 요청을 상기 물리적 파일의 위치에 대응하는 상기 복수의 클러스터 중 하나에 송신한다.
이전 실시예 중 어느 하나에서, 상기 분산 파일 시스템은 하둡 분산 파일 시스템(Hadoop Distributed File System) 또는 하둡 호환 파일 시스템이다.
이전 실시예 중 어느 하나에서, 상기 프로그램 명령은 상기 애플리케이션 및 상기 복수의 클러스터와 통신하기 위한 적어도 하나의 클라이언트 컴포넌트와, 상기 메타데이터를 생성하고 저장하기 위한 적어도 하나의 매니저 컴포넌트를 구현하기 위해 실행 가능하다.
이전 실시예 중 어느 하나에서, 상기 적어도 하나의 클라이언트 컴포넌트는 복수의 클라이언트 컴포넌트를 포함하고, 각각의 클라이언트 컴포넌트는 서로 다른 사용자 애플리케이션과 인터페이스하도록 구성된다.
이전 실시예 중 어느 하나에서, 상기 적어도 하나의 매니저 컴포넌트는 복수의 매니저 컴포넌트를 포함하고, 각각의 매니저 컴포넌트는 상기 복수의 클러스터의 서로 다른 그룹과 인터페이스하도록 구성된다.
이전 실시예 중 어느 하나에서, 상기 프로그램 명령은 상기 시스템을 가상 머신으로서 구현하기 위해 실행 가능하다.
또 다른 광범위한 양태에 따르면, 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 방법이 제공되며, 상기 복수의 클러스터는 클러스터 파일을 포함한다. 상기 복수의 클러스터 중 적어도 하나의 클러스터 내의 클러스터 파일에 접근하기 위해 요청이 수신된다. 상기 요청은 논리적 파일명을 포함하고, 상기 요청은 사용자 장치 상의 애플리케이션으로부터 수신된다. 메타데이터가 상기 논리적 파일명을 이용하여 검색(retrieve)된다. 상기 메타데이터는 상기 클러스터 파일에 대응하는 물리적 파일에 논리적 파일을 매핑한다. 상기 메타데이터로부터 상기 물리적 파일의 위치가 결정되고, 상기 물리적 파일명을 이용하여, 상기 클러스터 파일에 접근하기 위한 상기 요청이 상기 복수의 클러스터 중 적어도 하나에 송신된다.
이전 실시예 중 어느 하나에서, 상기 방법은 신규 클러스터 파일에 접근하기 위한 상기 요청을 제1 포맷에서 제2 포맷으로 변환하는 단계를 더 포함한다. 여기서, 상기 애플리케이션은 상기 제1 포맷을 지원하고, 상기 클러스터는 상기 제2 포맷을 지원한다.
이전 실시예 중 어느 하나에서, 신규 클러스터 파일에 접근하기 위한 상기 요청을 송신하는 단계는, 상기 신규 클러스터 파일에 접근하기 위한, 메타데이터로부터의 상기 요청을 상기 물리적 파일의 위치에 대응하는 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계를 포함한다.
이전 실시예 중 어느 하나에서, 신규 클러스터 파일에 접근하기 위한 상기 요청을 송신하는 단계는, 시스템 성능, 시스템 일관성(system consistency), 로컬 데이터 가용성(local data availability), 및 상기 클러스터 간의 로드 밸런싱 중 적어도 하나를 고려하여 상기 복수의 클러스터 중 적어도 하나를 선택하는 단계를 포함한다.
이전 실시예 중 어느 하나에서, 상기 방법은 상기 신규 클러스터 파일을 수정하기 위한 요청을 수신하는 단계 - 상기 요청은 상기 논리적 파일명을 포함하고 있음 -; 상기 논리적 파일명을 이용하여, 상기 신규 클러스터 파일에 대응하는 상기 메타데이터를 검색하는 단계; 상기 신규 클러스터 파일을 수정하기 위한 상기 요청에 따라 신규 메타데이터를 생성하는 단계; 상기 메타데이터로부터 상기 물리적 파일의 위치를 결정하는 단계; 상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일을 수정하기 위한 상기 요청을 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계; 및 상기 신규 클러스터 파일에 관한 상기 신규 메타데이터를 저장하는 단계를 더 포함한다.
이전 실시예 중 어느 하나에서, 신규 클러스터 파일을 수정하기 위한 상기 요청을 송신하는 단계는, 상기 신규 클러스터 파일을 수정하기 위한, 메타데이터로부터의 상기 요청을 상기 물리적 파일의 위치에 대응하는 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계를 포함한다.
본 발명의 다른 특징과 장점은 첨부 도면과 함께 다음의 상세한 설명으로부터 명백해질 것이다.
도 1은 예시적인 컴퓨팅 환경의 블록도이다.
도 2는 예시적인 클러스터 관리 시스템의 블록도이다.
도 3은 파일 생성 요청에 대한 예시적인 실시형태를 도시한 흐름도이다.
도 4는 파일 열기 요청에 대한 예시적인 실시형태를 나타낸 흐름도이다.
도 5는 복수의 클라이언트 컴포넌트를 가진 예시적인 클러스터 관리 시스템의 블록도이다.
도 6은 복수의 매니저 컴포넌트를 가진 예시적인 클러스터 관리 시스템의 블록도이다.
도 7은 함께 연결된 복수의 서브유닛을 가진 예시적인 클러스터 관리 시스템의 블록도이다.
도 8은 상기 클러스터 관리 시스템 내에서 복수의 서브유닛을 가진 예시적인 컴퓨팅 환경의 블록도이다.
도 9a는 클러스터 관리 시스템을 구현하기 위한 예시적인 컴퓨팅 장치의 블록도이다.
도 9b는 도 9b의 컴퓨팅 장치에 의해 구현되는 예시적인 가상 머신의 블록도이다.
도 10a는 파일 생성을 위한 다양한 시나리오를 도시하고 있다.
도 10b는 파일 접근을 위한 다양한 시나리오를 도시하고 있다.
도 10c는 파일 복제를 위한 다양한 시나리오를 도시하고 있다.
도 11a는 제1 모드로 동작하는 클러스터 관리 시스템의 예이다.
도 11b는 제2 모드로 동작하는 클러스터 관리 시스템의 예이다.
첨부 도면 전체에 걸쳐, 동일한 특징은 동일한 참조 번호로 식별됨을 알 수 있을 것이다.
본 실시예에 따르면, 사용자 장치 상의 애플리케이션과 하나 이상의 분산 파일 시스템의 클러스터 사이에는 중간 계층이 제공된다. 중간 계층은 본 명세서에서 클러스터 관리 시스템이라고 한다. 클러스터 관리 시스템은 분산 파일 시스템에 저장된 파일에 대한 요청을 사용자 장치 상의 애플리케이션으로부터 수신한다. 클러스터 관리 시스템은 중간 계층에 저장되는 논리적 파일인 클러스터 관리 파일을 생성하고, 분산 파일 시스템에 저장되는 물리적 파일인 클러스터 파일을 관리한다. 논리적 파일을 물리적 파일에 매핑하기 위해 클러스터 관리 파일에 메타데이터가 저장된다. 따라서, 메타데이터는 다른 정보, 예컨대 분산 파일 시스템 내의 물리적 파일명과 위치뿐만 아니라 매핑 정보도 포함한다.
도 1을 참조하면, 컴퓨팅 환경(100)이 도시되어 있다. 적어도 하나의 사용자 장치(1021, 1022)(통칭하여 사용자 장치(102)라고 함)가 자체에서 실행되는 적어도 하나의 애플리케이션(1141, 1142)(통칭하여 애플리케이션(114)이라고 함)을 가지고 있다. 컴퓨팅 환경(100)은 복수의 클러스터(1041, 1042, 1043)(통칭하여 클러스터(104)라고 함)를 포함한다. 클러스터(104) 각각은 하나 이상의 분산 파일 시스템(1081, 1082, 1083, 1084, 1085, 1086, 1087)(집합적으로 DFS(108)라고 함)을 포함한다. DFS(108) 각각은 하나 이상의 파일(1101, 1102, 1103, 1104, 1105)(통칭하여 사용자 장치(102) 상의 애플리케이션(114)에 의해 접근 가능한 클러스터 파일(110)이라고 함)을 저장하고 있다. 클러스터 파일(110)은 DFS(108)에 다양한 형식으로 저장되는 데이터 및/또는 디렉토리에 대응하며, 사용자 장치(102)에 있는 것처럼 애플리케이션(114)에 의해 접근되고 또한 처리될 수 있다. 클러스터 파일(110)은 클러스터(104)의 실제 하부 파일 시스템에서 생성되기 때문에, 물리적 파일이라고도 할 수 있다.
일부 실시예에서, DFS(108)는 하둡 분산 파일 시스템(HDFS) 및/또는 하둡 호환 파일 시스템(HCFS), 예컨대 아마존 S3(Amazon S3), 애저 블롭 스토리지(Azure Blob Storage), 및 구글 클라우드 스토리지 커넥터 등일 수 있다. 클러스터(104) 각각은 HDFS와 같은 단일 유형의 DFS(108), 또는 호환 가능한 하나 이상의 타입의 분산 파일 시스템(108), 예컨대 하나의 HDFS와 2개의 HCFS를 포함할 수 있다. 다른 타입의 분산 파일 시스템(108)도 사용될 수 있다.
주어진 클러스터, 예컨대 클러스터(1041)의 DFS(108)는 동일한 위치 또는 서로 다른 위치에 있다. 예를 들어, DFS(1081)는 조직의 구내에 위치하며, DFS(1082)는 클라우드에 위치하고 있다. 다른 예에서, DFS(1081)는 조직의 제1 지점에 위치하고, DFS(1082)는 동일한 조직의 제2 지점에 위치하며, 제1 지점과 제2 지점은 서로 다른 지리적 위치, 예컨대 상이한 도시, 상이한 국가, 및 상이한 대륙 등에 있다. 또 다른 예에서, DFS(1081)와 DFS(1082) 모두는 동일한 지리적 위치에 위치하지만, 서로 다른 부서에 대응하거나 또는 조직의 서로 다른 층에 위치한다. 클러스터(104)는 동일한 위치 또는 서로 다른 위치에 제공될 수도 있다. 예를 들어, 클러스터(1041)는 중국 내의 다수의 도시에 있고, 클러스터(1042)는 유럽에 걸쳐 분산되어 있으며, 클러스터(1043)는 플로리다주 마이애미에 있다.
클러스터 관리 시스템(106)이 클러스터(104)와 사용자 장치(102) 사이의 중간 레이어로서 제공된다. 클러스터 관리 시스템(106)은 클러스터(104)의 동작을 관리하고 엔티티이다. 클러스터 관리 시스템(106)은 사용자 장치(102)로부터 클러스터 파일(110)에 관한 요청을 수신하기 위해 애플리케이션(104)과 인터페이스한다. 클러스터 파일(110)에 관한 요청은 클러스터 파일(110)에 대한 다양한 작업, 예컨대 클러스터 파일을 생성하는 것, 클러스터 파일을 수정하는 것, 클러스터 파일에 접근하는 것, 및 클러스터 파일을 대체하는 것 등을 포함할 수 있다. 수신되는 요청이 파일을 생성하기 위한 요청, 파일명을 변경하기 위한 요청, 및 파일을 대체하기 위한 요청 등과 같이 파일이 생성되거나 수정되는 것을 요구하는 경우, 클러스터 관리 시스템(106)은 각각 메타데이터를 생성하거나 갱신한 다음, 클러스터 파일(110)에 대한 생성된 메타데이터 또는 갱신된 메타데이터를 저장한다. 이 파일은 궁극적으로 클러스터(104) 중 하나에 생성될 것이고, 더 구체적으로는 클러스터 파일(110)로서 DCS(108)에 생성될 것이다. 클러스터 파일에 관한 메타데이터가 클러스터(104)에서의 파일명과 파일 위치를 포함한다. 수신되는 요청이 파일에 대한 변경 없이 파일에 접근하는 것을 요구하는 경우, 클러스터 관리 시스템(106)은 클러스터 파일에 관한 메타데이터를 이용하여 이 파일을 찾아서 적절하게 접근을 제공한다.
도 2는 클러스터 관리 시스템(106)의 예시적인 실시형태를 도시하고 있다. 예시적인 실시형태로서, 클러스터 관리 시스템(106)은 글로벌 네임 스페이스(global namespace)에서 클러스터(104)를 관리하기 위해 협력하는 클라이언트 컴포넌트(200) 및 매니저 컴포넌트(202)를 포함한다. 따라서, 클러스터 파일은 클러스터(104) 내의 복수의 물리적 위치에 존재하지만, 글로벌 네임 스페이스의 통합된 구조 하에서 관리된다. 클러스터 파일(110)에 관한 요청이 애플리케이션(114)으로부터 클라이언트 컴포넌트(200)에 의해 수신된다. 클라이언트 컴포넌트(200)는 이 요청에 관한 명령을 매니저 컴포넌트(202)에 송신한다.
이 요청이 파일의 생성이나 갱신에 관한 것인 경우, 매니저 컴포넌트(202)는 이 요청에 기초하여 클러스터 파일(110)에 대한 메타데이터를 생성하거나 및/또는 갱신한다.
도 3은 방법(300)에 따라 신규 클러스터 파일(110)을 생성하는 예시적인 실시예를 도시하고 있다. 단계 302에서, 신규 파일을 생성하기 위한 요청이 수신된다. 이 요청은 클러스터 관리 시스템(106)의 클라이언트 컴포넌트(200)에 의해 사용자 장치(102) 중 하나의 사용자 장치 상의 애플리케이션(114) 중 하나의 애플리케이션으로부터 수신된다. 일부 실시예에서, 파일 생성 요청에 제공되는 유일한 정보는 이 요청 자체, 즉 파일을 생성하는 명령 라인이다. 일부 실시예에서, 이 요청은 또한 파일명 및/또는 파일 목적지를 포함한다. 파일 목적지는 클러스터(104) 중 임의의 클러스터의 주어진 위치를 지칭하거나, 또는 주어진 클러스터(104) 중 하나의 클러스터 내의 임의의 DFS(108)를 지칭한다. 신규 파일이 클러스터(104) 중 하나의 클러스터에 이미 존재하는 기존의 파일과 관계를 가지고 있다면, 요청에는 이 정보 또한 제공될 수 있다.
단계 304에서, 신규 클러스터 파일에 대해 클러스터 관리 파일이 생성된다. 클러스터 관리 파일은 전역 파일 네임스페이스에서 생성되고 또한 관리되는 논리적 파일이라고도 할 수 있다. 각각의 논리적 파일은 하나 이상의 대응하는 물리적 파일(즉, 클러스터 파일(110))을 가질 수 있다. 이 예에서, 클러스터 관리 파일에 대한 파일명은 "LOGICAL_FILE1"이다.
단계 306에서, 물리적 파일에 대한 파일명이 생성된다. 이 예에서, 물리적 파일에 대한 파일명은 "PHYSICAL_FILE1"이라고 한다. 물리적 파일의 파일명은 생성될 신규 파일에 관한 메타데이터이다.
단계 308에서, 물리적 파일 "PHYSICAL_FILE1"에 대한 위치가 클러스터 관리 시스템(106)에 의해 관리되는 다양한 클러스터(104) 중에서 선택된다. 이 위치가 요청과 함께 제공되는 정보의 일부가 아닌 경우, 이 위치는 이하에서 더 상세하게 설명되는 바와 같이 다양한 요인의 함수로서 선택될 수 있다. 물리적 파일에 대한 위치 역시 클러스터 파일에 관한 메타데이터의 일부를 구성하고 있다.
이 경우에, 클러스터 관리 시스템(106)은 논리적 파일명, 즉 "LOGICAL_FILE1"을 이용하여 애플리케이션(114)과 통신한다. 예를 들어, 이 파일을 열기 위한 요청은 애플리케이션(114)으로부터 수신되고, "open LOGICAL_FILE1" 형태를 취할 수 있을 것이다. 이 경우에, 클러스터 관리 시스템(106)은 물리적 파일명, 즉 "PHYSICAL_FILE1"을 이용하여 클러스터(104)와 통신한다. 예를 들어, "LOGICAL_FILE1"을 열기 위한 요청은 적절한 클러스터(104) 중 하나에 송신되며, "open PHYSICAL FILE1" 형태를 취할 것이다. 그러므로, 단계 310에 따르면, 클러스터 관리 시스템(106)은 "LOGICAL_FILE1"을 "PHYSICAL_FILE1"에 매핑한 것을 "RECORD1"에 저장한다. 이 매핑은 신규 파일을 생성하기 위한 요청에 응답하여 매니저 컴포넌트(202)에 의해 이전에 생성된 메타데이터를 포함하며, 클러스터 관리 파일에 저장된다. 그러므로, 메타데이터는 클러스터(104) 내의 물리적 파일명과 위치를 포함한다.
단계 312에서, 파일 생성 요청은 적절한 클러스터, 즉 물리적 파일명 "PHYSICAL_FILE1"을 가진 "CLUSTER1"에 송신된다. 다음, 클러스터는 적절하게 클러스터 파일(110)을 생성할 것이다.
클러스터 관리 시스템(106)을 위한 도 2의 예시적인 아키텍쳐를 이용하면, 요청은 클라이언트 컴포넌트(200)에 의해 애플리케이션으로부터 수신되고, 메타데이터는 매니저 컴포넌트(202)에 의해 클러스터 관리 파일에 생성되어 저장되며, 요청은 클라이언트 컴포넌트(200)에 의해 적절한 클러스터에 송신된다. 클러스터 관리 시스템(106)을 위한 다른 아키텍쳐가 이 방법(300)를 구현하기 위해 사용될 수도 있다.
메타데이터는 하나 이상의 스토리지 장치, 예컨대 클러스터 관리 시스템(106)에 대해 로컬에 또는 원격에 있을 수 있는 스토리지 장치(204) 내의 클러스터 관리 파일에 저장된다.
도 4는 이미 생성된 파일을 열기 위한 요청을 처리하기 위한 예시적인 실시형태를 나타낸 방법(400)이다. 애플리케이션(114)은 물리적 파일이 아니라 논리적 파일의 존재를 알고 있다. 따라서, 단계 402에 따르면, 애플리케이션(114)으로부터 수신된 파일을 열기 위한 어떠한 요청도 논리적 파일명을 포함할 것이다. 이 요청은 클러스터 관리 시스템(106)의 클라이언트 컴포넌트(200)에 의해 사용자 장치(102) 중 하나의 사용자 장치 상의 애플리케이션(114) 중 하나의 애플리케이션으로부터 수신된다. 이 요청은 열고자 하는 파일명, 즉 "LOGICAL_FILE1"을 포함하고, 클라이언트 컴포넌트(200)에서 매니저 컴포넌트(202)로 송신된다.
단계 404에서, 매니저 컴포넌트(202)는 "LOGICAL_FILE1"을 "PHYSICAL_FILE1"에 매핑하는 메타데이터를 검색하여 단계 406에서 클러스터(104) 내의 "PHYSICAL_FILE1"의 위치를 결정한다. 이 메타데이터는 스토리지 장치(204) 내의 클러스터 관리 파일에 저장된다. 단계 408에서, 물리적 파일을 열기 위한 요청이 적절한 클러스터에 송신된다. 이 요청은 "PHYSICAL_FILE1"의 형태를 취하며, "CLUSTER1"에 송신될 있다.
일부 실시예에서, 클라이언트 컴포넌트(200)는 "LOGICAL_FILE1"을 열기 위한 요청을 매니저 컴포넌트(202)에 송신한다. 매니저 컴포넌트(202)는 "RECORD1"으로부터 "LOGICAL_FILE1"을 "PHYSICAL_FILE1"에 매핑한 것을 검색하고, "CLUSTER1"을 "PHYSICAL_FILE1"의 위치로서 검색한다. 다음, 매니저 컴포넌트(202)는 "CLUSTER1"을 클라이언트 컴포넌트(200)에 반환하고, 클라이언트 컴포넌트(200)는 "PHYSICAL_FILE1"을 열기 위한 요청을 "CLUSTER1"에 송신한다.
다시 도 2를 참조하면, 클러스터(104) 간에 정보를 공유하기 위해 또한 클러스터(104)에 걸쳐 일관성을 보장하기 위해, 매니저 컴포넌트(202)에는 복제부(206)가 제공된다. 필요한 경우, 복제부(206)는 하나의 클러스터, 예컨대 클러스터(1041)로부터 다른 클러스터, 예컨대 클러스터(1042) 에 데이터를 복제할 수 있다. 이를 통해, 예를 들어 DFS(1084)가 이전에 DFS(1082)에서만 사용 가능한 데이터를 로컬에 저장하게 함으로써, 클러스터(1042)가 이전에 클러스터(1041)에 의해서만 수행될 수 있었던 작업을 수행하게 한다. 이는, 예를 들어 클러스터(104)에 걸쳐 로드 밸런싱을 하기 위해 또는 클러스터(1041)와 클러스터(1042) 둘 다로부터의 데이터를 이용하여 조인 동작(join operation)을 위해 사용될 수 있다. 일부 실시예에서, 데이터 복제가 선택적으로 수행되거나, 또는 필요에 따라 수행되거나, 애플리케이션(114)으로부터 수신된 요청에 기초하여 수행된다. 일부 실시예에서, 데이터 복제가 정의된 스케줄에 따라 수행되어, 데이터가 모든 클러스터(104)에 걸쳐 항상 사용 가능한 것을 보장한다. 일부 실시예에서, 데이터 복제가 선택적으로 그리고 주기적으로 수행된다. 데이터의 복제는 애플리케이션(114) 및 사용자 장치(102)에 투명하다.
클러스터(104)에 걸쳐 작업부하의 분포를 개선하기 위해 로드 밸런싱이 데이터 관리 시스템(106)에 의해 사용된다. 로드 밸런싱은 자원 이용을 최적화하고, 처리량을 극대화하며, 응답 시간을 최소화하고, 어떠한 단일 자원의 과부하을 방지하는 것을 목표로 한다. 일부 실시예에서, 클러스터 관리 시스템(106), 예컨대 매니저 컴포넌트(202)는, 수신되는 요청의 기능으로서 주어진 태스크를 수행하기 위해 클러스터(104) 중에서 하나의 클러스터를 선택하여 클러스터(104)의 성능을 최적화하도록 구성된다. 따라서, 태스크가 클러스터(104)에 걸쳐 보다 균일하게 분산되어 있거나, 및/또는 다양한 원인으로 클러스터(104) 중의 특정 클러스터로 집중되어 있을 수 있다. 신규 요청이 수신되는 때 클러스터를 선택하기 위해 사용되는 선별 기준 중 일부는 주어진 클러스터 내의 데이터의 가용도, 클러스터의 용량과 속도와 가용도, 및 요청의 유형이다. 데이터가 하나의 클러스터에서 다른 클러스터로 복제될 수 있기 때문에, 주어진 클러스터 내의 데이터의 가용성은 컴퓨팅 환경(100)의 최적화된 성능에 대한 다른 기준에 대해 가중치를 부여한 하나의 기준에 불과하다.
일부 실시예에서, 클러스터 관리 시스템(106), 예컨대 클라이언트 컴포넌트(200)는 변환부(translator)(208)를 포함한다. 변환부(208)는 클러스터(104)에서 발견된 DFS 유형 중 하나 이상의 유형과 다른 DFS 유형에 기초하여 애플리케이션으로부터 요청을 수신하기 위해 사용된다. 예를 들어, 애플리케이션(1141)이 HCFS 기반이고, 클러스터 관리 시스템(106)이 DFS(1085, 1086, 1087)가 HDFS인 클러스터(1043)에 요청을 송신하는 것을 선택하면, 변환부(208)는 이 요청을 HCFS에서 HDFS로 변환할 것이다. 애플리케이션(1141)으로부터 수신된 요청은 HCFS 포맷이고, 클러스터 관리 시스템(106)에 의해 클러스터(1043)에 송신된 요청은 HDFS 포맷이다. 변환부(208)는 HDFS-HCFS 및 HCFS-HDFS 이외의 변환을 수행하도록 구성될 수 있다.
도 1에 도시된 바와 같이, 클러스터(104) 중 하나의 클러스터와 클러스터 관리 시스템(106) 사이에 제공되는 프록시(112)가 있을 수 있다. 일부 실시예에서, 프록시(112)는 클러스터 관리 시스템(106) 내부에 내장되어 있을 수 있다. 다른 실시예에서, 프록시(112)는 클러스터 관리 시스템(106)의 외부에 제공된다. 프록시는 클러스터(104)에 대한 접근을 애플리케이션(114)에 제공하기 위해 사용된다. 하나의 프록시(112)만이 도시되어 있지만, 하나 이상의 프록시(112) 역시 컴퓨팅 환경(100)에 존재할 수 있다.
도 5에 따르면, 일부 실시예에서, 클러스터 관리 시스템(106)은 복수의 클라이언트 컴포넌트(5001, … , 500n)를 포함한다. 클라이언트 컴포넌트(5001, … , 500n)의 각각은 매니저 컴포넌트(202)와 동작 가능하게 연결되며, 사용자 장치(102)를 위한 하나 이상의 애플리케이션(114)과 인터페이스하도록 구성된다. 일부 실시예에서, 클러스터 관리 시스템(106)은 요청이 수신될 수 있는 애플리케이션(114) 당 하나의 클라이언트 컴포넌트(500n)를 포함한다. 각각의 클라이언트 컴포넌트(500n)는 이 요청을 제1 포맷에서 제2 포맷으로 변환하기 위한 변환부(3081, … , 308n)를 포함한다. 또는, 하나 이상의 변환부(208)가 클러스터 관리 시스템(106) 내부에서 클라이언트 컴포넌트(5001, … , 500n)에 의해 공유된다.
도 6은 n개의 클라이언트 컴포넌트(5001, … , 500n) 및 m개의 매니저 컴포넌트(6001, … , 600m)를 포함하는 실시예를 도시하고 있다. 매니저 컴포넌트(6001, … , 600m) 각각은 클러스터 파일의 세트에 대한 메타데이터를 저장하기 위한 저장 매체(6041, … , 604m), 및 클러스터(104)에 걸쳐 데이터를 복제하기 위한 복제부(6061, … , 606m)를 포함한다. 또는, 하나 이상의 저장 매체(604i)(여기서, i는 1~m) 및/또는 하나 이상의 복제부(606i)가 클러스터 관리 시스템(106) 내부에서 매니저 컴포넌트(6001, … , 600m)에 의해 공유된다. 매니저 컴포넌트(6001, … , 600m)는 동작 가능하게 함께 연결되며, 각각의 컨센서스 엔진(6081, … , 608m)을 통해 정보 교환 및/또는 데이터 연산을 조정한다.
컨센서스 엔진(6081, … , 608m)은 서로 다른 매니저 컴포넌트(6001, … , 600m)에 의해 관리되는 클러스터(104)를 포함하는 작업을 처리하는 방법에 대한 매니저 컴포넌트(6001, … , 600m) 간의 합의를 보장하기 위해 사용된다. 컨센서스를 요구하는 작업의 예는 데이터 복제, 데이터 공유, 및 클러스터(104) 간 부하의 재분배이다. 컨센서스 역시 다른 작업과 함께 사용될 수 있다. 일부 실시예에서, 클러스터 파일(110)에 대한 작업을 조정하기 위해 하나 이상의 컨센서스 프로토콜이 정의되어 있다. 합의 프로토콜의 몇몇 예는 Paxos, Chubby, Phase King, 작업 증명(proof of work), Lockstep, MSR 유형 및 해시 그래프이다. 다른 컨센서스 프로토콜이 사용될 수 있다.
일부 실시예에서, 하나 이상의 클러스터 관리 파일로부터 메타데이터를 생성하거나, 갱신하거나, 및/또는 삭제하는 것이 컨센서스 엔진에 의해 컨센서스 프로토콜을 통해 수행된다. 예를 들어, 애플리케이션(1141)은 클러스터 파일(1105)을 삭제하기 위한 요청을 송신한다. 이 요청은 클라이언트 컴포넌트(5001)에 의해 수신되고, 매니저 컴포넌트(6001)에 의해 송신된다. 컨센서스 엔진(6081)은 수정에 대한 컨센서스 요청(즉, 클러스터 파일(1105)과 관련된 메타데이터를 삭제하기 위한 요청)을 매니저 컴포넌트(6002-600m)의 컨센서스 엔진(6082-608m)에 송신한다. 각각의 컨센서스 엔진(6082-608m)은 다른 컨센서스 엔진과 독립적으로 자신의 현재 상태에 기초하여 수정에 찬성 투표한다. 컨센서스 엔진 중 대다수가 수정 요청에 동의하면, 컨센서스 엔진(6081)은 수정 확인을 컨센서스 엔진(6082-608m)에 송신한다. 다음, 각각의 매니저 컴포넌트(6001-600m)는 이 변경을 자신의 로컬 스토리지 장치(6041-604m) 내의 로컬 클러스터 관리 파일에 적용한다. 컨센서스 엔진 중 대다수가 수정 요청에 동의하지 않으면, 이 수정은 거부되어 매니저 컴포넌트(6001-600m) 중 어느 것에도 적용되지 않는다.
각각 매니저 컴포넌트(6001, … , 600m)는 서브유닛을 구성하기 위해 하나 이상의 클라이언트 컴포넌트(5001, … , 500n)와 연관되어 있고, 서브유닛 모두는 클러스터 관리 시스템(106)을 구성하기 위해 함께 연결되어 있다. 도 7은 3개의 서브유닛(7001, 7002, 7003)을 가진 예를 도시하고 있다. m=3인 경우, 클러스터 관리 시스템(106)에는 3개의 매니저 컴포넌트(6001, 6002, 6003) 및 3개의 서브유닛(7001, 7002, 7003)가 있다. 각각의 매니저 컴포넌트(6001, 6002, 6003)는 하나 이상의 클라이언트 컴포넌트(5001, … , 500n)을 가진 서브유닛(7001, 7002, 7003)을 구성한다.
도 8에 도시된 바와 같이, 각각의 서브유닛(7001, 7002, 7003)은 클러스터(8001, 8002, 8003)의 개별적 세트 및 사용자 장치(8021, 8022, 8023)의 개별적 세트와 인터페이스하고 있다. 일부 실시예에서, 사용자 장치(102)가 서브유닛(7001, 7002, 7003) 간에 공유되거나 및/또는 클러스터(104)는 서브유닛(7001, 7002, 7003) 간에 공유된다.
클러스터 관리 시스템(106)과 사용자 장치(102) 사이에서, 및/또는 클러스터 관리 시스템(106)과 클러스터(104) 사이에서 서브유닛(7001, 7002, 7003)에 걸쳐, 컴퓨팅 환경(100)에서는 통신이 다양한 방식으로 이루어지는데, 하나 이상의 네트워크 통해 직접적으로 그리고 간접적으로 이루어지는 것을 포함한다. 네트워크는 유선 연결, 무선 연결, 또는 이들의 조합을 포함할 수 있다. 네트워크는 서로 다른 네트워크 통신 기술, 표준, 및 프로토콜, 예컨대 이동통신 글로벌 시스템(Global System for Mobile Communication, GSM), 코드분할 다중접속(Code Division Multiple Access, CDMA), 무선 가입자 회선(wireless local loop), WiMAX, 와이파이(Wi-Fi), 블루투스(Bluetooth), 및 롱 텀 에볼루션(Long Term Evolution, LTE) 등을 포함할 수 있다. 네트워크는 서로 다른 물리적 매체, 예를 들어 동축 케이블, 광섬유, 및 트랜시버 스테이션(transceiver) 등을 포함할 수 있다. 네트워크 유형의 예는 인터넷, 이더넷, POTS(plain old telephone service) 회선, PSTN(Public Switched Telephone Network), ISDN(Integrated Services Digital Network), DSL(Digital Subscriber Line) 등과 이들의 조합을 포함한다. 네트워크는 근거리 통신망 및/또는 광역 통신망을 포함할 수 있다.
도 9a는 클러스터 관리 시스템(106)을 구현하기 위한 컴퓨팅 장치(910)의 예시적인 실시예이다. 컴퓨팅 장치(910)는 처리 유닛(912), 및 컴퓨터 실행 가능한 명령(916)이 저장되는 메모리(914)를 포함한다. 처리 유닛(912)은, 컴퓨팅 장치(910) 또는 다른 프로그램 가능한 장치에 의해 실행되는 때 본 명세서에서 설명되는 방법에 지정된 기능/조치/단계가 실행될 수 있게끔 명령(916)이 일련의 단계를 수행하도록 구성된 어떤 적합한 장치를 포함할 수 있다. 처리 유닛(912)은 예를 들어, 임의의 타입의 범용 마이크로프로세서 또는 마이크로컨트롤러, 디지털 신호 처리(DSP) 프로세서, 중앙처리장치(CPU), 집적 회로, 필드 프로그래머블 게이트 어레이(FPGA), 재구성 가능 프로세서(reconfigurable processor), 적합하게 프로그램되거나 프로그램 가능한 다른 로직 회로, 또는 이들의 임의의 조합을 포함할 수 있다.
메모리(914)는 알려진 임의의 적합한 저장 매체 또는 다른 기계 판독 가능 저장 매체를 포함할 수 있다. 메모리 (914)는 비일시적 컴퓨터 판독가능 저장 매체, 예를 들어 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 이들의 임의의 적절한 조합을 포함할 수 있지만, 이에 제한되지 않는다. 메모리(914)는 장치의 내부 또는 외부에 위치하는 임의의 타입의 컴퓨터 메모리, 예컨대 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), CDROM(compact disc read-only memory), 전기광학 메모리(electro-optical memory), 자기광학 메모리(optical memory), EPROM(erasable programmable read-only memory), 및 EEPROM(electrically-erasable programmable read-only memory), 또는 강유전체 RAM(Ferroelectric RAM, FRAM) 등의 적절한 조합을 포함할 수 있다. 메모리(914)는 처리 유닛(912)에 의해 실행 가능한 기계 판독가능 명령(916)을 검색 가능하게 저장하는 데 적합한 임의의 저장 수단(예를 들어, 장치)를 포함할 수 있다.
일부 실시예에서, 컴퓨팅 장치(910)는 하나 이상의 가상 머신이 구현되는 물리적 서버이며, 도 9b는 이 예를 도시하고 있다. 가상 머신(950)은 컴퓨터 시스템의 에뮬레이션으로, 가상 하드웨어(956)의 세트를 이용하여 운영 체제(954)에서 실행되는 애플리케이션(952)을 포함한다. 가상 하드웨어(956)는 예를 들어, CPU, 메모리, 네트워크 인터페이스, 및 디스크 등을 포함한다. 외부 세계에는 각각의 가상 머신(950)이 실제 머신으로서 보이며, 동일한 물리적 서버 상의 다른 가상 머신과는 독립적이면서 또한 이들로부터 보호된다. 일부 실시예에서, 클러스터 관리 시스템(106)은 하나 이상의 가상 머신(950)을 이용하여 구현된다.
개별적 파일 및/또는 디렉토리에 대한 메타데이터를 생성하면 애플리케이션(114)으로부터의 요청에 응답하는 데 있어서 유연성이 제공된다. 이 요청은 원본 데이터가 저장되어 있는 주어진 클러스터, 또는 다른 클러스터 쪽으로 클러스터 관리 시스템(106)에 의해 보내지거나, 요청을 송신하는 애플리케이션(114)이 실행되는 사용자 장치(102)에 지리학적으로 더 가까운 클러스터에 리다이렉트될 수 있다. 이 요청을 리다이렉트하면 네트워크 지연이 긴 광역 통신망(WAN) 환경에서 시스템 성능을 향상시킬 수 있다. 요청을 리다이렉션하는 것이 소정의 타입의 요청, 예컨대 데이터가 수정되지 않는 읽기 작업을 위해 사용 가능하다는 것을 유의해야 한다. 데이터의 변경을 수반하는 요청, 예컨대 쓰기 작업은, 원본 파일을 가진 클러스터 쪽으로 보내진다.
실제로, 클러스터 관리 시스템(106)은 클러스터에 걸쳐 데이터를 생성하고, 데이터에 접근하며, 데이터를 복제하기 위해 구성 가능한 유연한 정책을 지원한다. 도 10a는 다양한 데이터 생성 시나리오에 대한 예를 도시하고 있다. 클러스터 관리 시스템(106)은 성능을 최적화하기 위해 가장 가까운 클러스터에 파일을 생성하도록 구성될 수 있다. 애플리케이션(1142)이 클러스터(1041)에 파일을 생성하는 경로(1002)가 이 예를 나타내고 있다. 클러스터에 걸쳐 데이터가 보다 균일하게 분포하도록 하기 위해서, 시스템(106)은 가장 가용 공간이 많은 클러스터에 파일을 생성하도록 구성될 수 있다. 애플리케이션(1143)이 클러스터(1042)에 파일을 생성하는 경로(1004)가 이 예를 나타내고 있다. 시스템(106)은 애플리케이션(1146)이 클러스터(1043)에 파일을 생성하는 경로(1006)가 나타내는 지정된 클러스터에 파일을 생성하도록 구성될 수 있다. 다른 구성과 조합이 사용될 수도 있다.
도 10b는 다양한 데이터 접근 시나리오를 도시하고 있다. 클러스터 관리 시스템(106)은 더 나은 성능을 위해 가장 가까운 클러스터에서부터 파일에 접근하도록 구성될 수 있다. 예를 들어, 애플리케이션(1141)이 요청하는 경우, 파일이 클러스터(1041) 내에서 경로(1008)를 통해 접근된다. 애플리케이션(1146)이 요청하는 경우, 동일한 파일이 클러스터(1043) 내에서 경로(1010)를 통해 접근된다. 일부 실시예에서, 시스템(106)은 강한 일관성을 보장하기 위해 최근 갱신된 데이터를 가진 클러스터에서부터 파일에 접근하도록 구성된다. 예를 들어, 애플리케이션(1143)과 애플리케이션(1144) 중 하나가 파일을 요청하는 경우, 애플리케이션(1143)이 클러스터(1041) 내에서 이 파일을 로컬에서 접근할 수 있었음에도 불구하고, 파일은 클러스터(1042) 내에서 경로(1012) 및 경로(1014)를 통해 각각 접근된다. 일부 실시예에서, 로컬 클러스터가 사용 가능한 사본을 가지고 있지 않으면, 시스템(106)은 원격 클러스터에서부터 파일에 접근하도록 구성된다. 예를 들어, 애플리케이션(1145)이 파일을 요청하고, 이 파일은 클러스터(1041) 내에서 경로(1016)를 통해 접근된다. 일부 실시예에서, 시스템(106)은 로드 밸런싱을 위해 작업부하가 가장 적은 클러스터에서부터 요청된 파일에 접근하도록 구성된다. 예를 들어, 애플리케이션(1142)이 파일에 대한 접근 방법을 요청하는 경우, 아 파일이 클러스터(1041)에서 또한 사용 가능하더라도, 이 파일은 클러스터(1043) 내에서 경로(1018)를 통해 제공된다. 다른 구성과 조합이 사용될 수도 있다.
도 10c는 다양한 데이터 복제 시나리오를 도시하고 있다. 이 시스템은 선택된 파일 또는 모든 파일을 복제하도록 구성될 수 있다. 파일은 선택된 클러스터 또는 모든 클러스터에만 복제될 수 있다. 예를 들어, 파일(1024)이 2개의 클러스터 내에서만 복제되고, 파일(1026)은 3개의 클러스터 내에서 복제된다. 경로(1020A, 1020B)로 나타낸 바와 같이, 이 파일은 파이프라인 경로를 이용하여 복제될 수 있다. 이 파일 역시 중심 클러스터에서부터, 예컨대 경로(1022A, 1022B)를 이용하여 복제될 수 있다. 일부 실시예에서, 클러스터 관리 시스템(106)은 더 나은 이용 가능성을 위해 스트리밍 모드를 이용함으로써, 더 나은 성능을 위한 주기적 배치(periodic batch), 또는 이들의 조합에 의해 데이터를 복제하도록 구성된다. 다른 구성과 조합이 사용될 수도 있다.
클러스터(104) 간의 데이터의 복제가, 데이터가 개별적 파일이든 및/또는 디렉토리이든 간에, 다양한 메커니즘을 이용하여 일어날 수 있다. 일부 실시예에서, 애플리케이션(114)에 의해 수신되는 요청에 기초하여 복제가 트리거된다. 일부 실시예에서, 규칙적 스케줄에 따라 복제가 계획된다. 일부 실시예에서, 하나 이상의 정책에 따라 복제가 트리거된다. 이들 실시예 중 임의의 실시예의 조합 역시 구현될 수 있다.
따라서, 클러스터 관리 시스템(106)은 서로 다른 클러스터의 일부를 구성하는 모든 DFS(108)를 위한 단일 관리 시스템을 제공한다. 클러스터(104)의 클러스터 파일과 일반적인 기능은 추가적인 클러스터 관리 시스템(106)에 의해 바뀌지 않은 상태로 유지된다.
일부 실시예에서, 클러스터(104)는 HDFS/HCFS 클러스터이다. 클라이언트 컴포넌트(200)는 애플리케이션(114)과 인터페이스하기 위해 HCFS 호환 라이브러리이다. 애플리케이션(114)은 HDFS/HCFS 프로토콜에 기초하여 클라이언트 컴포넌트(200)를 동적으로 로딩할 수 있다. 다시 말해, 클라이언트 컴포넌트(200)는 애플리케이션(114)에 의해 필요에 따라 로딩될 수 있다. 또한, 클라이언트 컴포넌트(200)는 서로 다른 클러스터(104)를 위한 서로 다른 드라이버를 로딩할 수 있다. 예를 들어, 제1 드라이버가 클러스터(1041)를 위한 클라이언트 컴포넌트(200)에 의해 로딩되고, 제2 드라이버는 클러스터(1042)를 위한 클라이언트 컴포넌트에 의해 로딩된다. 제1 드라이버는 HDFS 버전 1을 위한 것이며, 제2 드라이버는 HCFS 버전 x를 위한 것이다. 제3 드라이버가 HDFS 버전 2에 적합한 클러스터(1043)를 위해 로딩될 수 있다.
애플리케이션(114)은 접근될 데이터 파일을 나타내기 위해 통합 자원 식별자(Uniform Resource Identifier, URI)를 사용할 수 있다. 예시적인 URI 포맷은 "scheme://authority/path"이다. HDFS 기반 애플리케이션의 경우, HDFS 방식이 사용된다. HCFS 기반 애플리케이션의 경우, Amazon S3 기반 HCFS 시스템을 위한 "s3"과 같이 다양한 방식 유형과 파일 시스템 플러그인을 사용할 수 있다. 클라이언트 컴포넌트(200)는 HDFS 기반 URI 및/또는 HCFS 기반 URI 모두를 애플리케이션(114)에 제공하도록 구성된다. 전술한 실시형태를 이용하는 예는 HCFS 방식을 위한 ylon://user/LOGICAL_FILE1"이거나, 또는 HDFS 방식을 위한 "hdfs://temp/LOGICAL_FILE1"이다.
일부 실시예에서, 클라이언트 컴포넌트는 2개 이상의 모드에서 동작하도록 구성되고, 각각의 모드는 애플리케이션(114)에 대한 주어진 동작을 사용 중인 대응하는 방식의 기능으로 설정한다. 표 1은 2가지 모드와 2가지 방식을 가진 예를 도시하고 있다.
(표 1)
Figure pct00001
도 11a는 모드 1에 대한 예를 도시하고 있다. 도시된 바와 같이, HDFS 방식에 기반하는 애플리케이션(1141)에 의해 송신된 요청이 직접 클러스터(1041)에 송신된다. 클러스터(1041) 쪽으로 리다이렉트되기 전에, HCFS 방식에 기반하는 애플리케이션(1141)에 의해 송신된 요청이 클라이언트 컴포넌트(200) 쪽으로 향한다. 도 11b는 모드 2에 대한 예를 도시하고 있다. 도시된 바와 같이, HDFS 기반 요청 및 HCFS 기반 요청은 클러스터(1041)에 리다이렉트되기 전에 클라이언트 컴포넌트(200)에 송신된다. 클라이언트 컴포넌트(200)가 HCFS 기반이면, 변환부(208)는 HDFS 기반 요청을 HCFS 방식으로 변환할 것이다.
매니저 컴포넌트(202)는 저장 매체(204)에 저장된 메타데이터를 이용하여, 복수의 HDFS/HCFS 기반 클러스터(114)에 대한 글로벌 네임스페이스를 제공한다. 매니저 컴포넌트는 복수의 클러스터(114)를 감독하고, 복제부(206)를 통해 클러스터(114) 간의 데이터 흐름을 스케줄링한다. 복제부(206)은 클러스터(114)에 걸쳐 파일에 대한 변경을 추적하고, 복제 태스크를 계획하도록 구성된다.
메타데이터가 생성되고, 클러스터 파일(110)를 관리하기 위해 저장 매체(204) 또는 다른 곳에 저장된다. 일부 실시예에서, 각각의 클러스터 파일(110)은 대응하는 클러스터 관리 파일을 가지고 있다. 클러스터 관리 파일은 논리적 파일을 물리적 파일 및 클러스터 파일(110)을 관리하기 위해 필요한 어떤 다른 정보에 매핑한 것을 포함한다. 논리적 파일을 물리적 파일 및 클러스터 파일(110)을 관리하기 위해 필요한 다른 어떤 정보에 매핑한 것은 메타데이터이다. 복수의 매니저 컴포넌트(400)가 존재하는 경우, 클러스터 파일에 대한 작업이 컨센서스 프로토콜을 통해 조정된다.
일부 실시예에서, 클러스터 파일(110)은 디렉토리 목록 구조에 따라 구성되며, 클러스터 관리 파일은 클러스터 디렉토리와 이들 디렉토리 간의 관계에 관한 정보(즉, 메타 데이터)를 저장하기 위해 사용된다. 각각의 클러스터 디렉토리는 하나 이상의 클러스터 파일(110)을 포함할 수 있고, 경우에 따라 서브 디렉토리에 대한 참조를 포함할 수 있다. 클러스터 파일을 하나의 클러스터에서 또 다른 클러스터로 단지 복제하는 것 대신, 클러스터 파일을 포함하는 디렉토리와 이들 디렉토리 간의 관계가 클러스터 간에 복제될 수 있다.
일부 실시예에서, 디렉토리가 메타데이터 관리 계층에서 논리적인 개념으로서 사용되며, 따라서 물리적 클러스터 계층에서의 일대일 매핑을 요구하지 않는다. 이 경우에, 일부 디렉토리 관련된 작업이 기본 클러스터에 접근할 필요가 없다. 예를 들어, 애플리케이션(114)이 디렉토리를 생성하기 위한 요청을 송신한다. 이 요청은 클러스터 관리 시스템(106)의 클라이언트 컴포넌트(200)에 의해 수신된다. 클라이언트 컴포넌트(200)는 요청에 관한 메타데이터를 생성하는 매니저 컴포넌트(202)에 요청을 전달한다. 이 메타데이터는 신규 클러스터 관리 파일 또는 기존 클러스터 관리 파일에 저장될 수 있다. 일부 실시예에서, 신규 디렉토리가 생성되는 경우, 디렉토리에 대해 신규 클러스터 관리 파일이 생성된다. 신규 클러스터 관리 파일에 저장된 메타데이터는 "DIRECTORY1"와 같은 디렉토리명을 포함하며, 매핑 신규 클러스터 관리 파일을 "DIRECTORY1"에 매핑하는 메타데이터가 생성되고 저장되는데, 예컨대 "RECORD2"에 저장된다 이 메타데이터는 디렉토리의 일부를 구성하는 임의의 파일을 포함할 수도 있다. 디렉토리명이 클라이언트 컴포넌트(200)에 의해 애플리케이션(114)에 반환된다. 디렉토리의 생성이 클러스터 파일의 구조에 어떤 방식으로도 영향을 미치지 않으므로, 이 작업을 위해 클러스터에 접근할 필요가 없다.
애플리케이션(114)은 디렉토리명을 이용하여, 예컨대 "DIRECTORY1"의 내용을 열거하도록 요청하여 클러스터 관리 시스템(106)과 상호 작용할 수 있다. 이 요청은 클라이언트 컴포넌트(200)에 의해 수신되고 매니저 컴포넌트(202)에 전달된다. 매니저 컴포넌트(202)는 클러스터 관리 파일에 접근하고, "DIRECTORY1"에 관한 메타데이터를 검색한다. 이 정보는 클라이언트 컴포넌트(200)에 의해 애플리케이션(114)에 반환된다. 그리고 또한, 디렉토리 파일의 목록이 어떤 방식으로도 클러스터 파일의 구조에 영향을 미치지 않으므로, 이 작업을 위해 클러스터에 접근할 필요가 없다.
유사하게, 디렉토리명을 바꾸면 메타 데이터 관리만 수행되며 기본 물리적 클러스터 파일에 접근할 필요가 없다. 애플리케이션(114)으로부터 디렉토리명을 바꾸기 위한 요청이 수신되는 경우, 클러스터 관리 시스템(106)은 디렉토리에 대한 클러스터 관리 파일뿐만 아니라 디렉토리 내 각각의 파일의 클러스터 관리 파일 전부를 갱신한다. 디렉토리 내에 다수의 파일이 있으면, 이는 시간이 많이 걸리는 작업일 수 있지만, 이름 바꾸기가 진행 중인 다른 쓰기 작업과 동시에 일어날 수 있다.
디렉토리를 삭제하는 것과 같은 다른 요청은, 클러스터 파일의 기초 구조가 수정되므로 클러스터 파일에 대한 접근이 필요하다. 디렉토리 삭제 작업의 처음 부분은 디렉토리 생성 작업과 동일하다. 디렉토리를 삭제하기 위한 요청은 클라이언트 컴포넌트(200)에 의해 수신되고 매니저 컴포넌트(202)에 송신된다. 디렉토리(명, 상태) 아래의 파일의 엔트리뿐만 아니라 디렉토리 자체(이름, 콘텐츠, 상태)의 엔트리를 삭제함으로써, 모든 클러스터 관리 파일이 이에 따라 갱신된다. 삭제의 확인은 클라이언트 컴포넌트(200)에 의해 애플리케이션(114)에 송신된다. 또한, 클러스터 관리 시스템(106)은 디렉토리를 삭제하기 위해 클러스터(104)에 통지를 송신한다.
본 명세서에서 설명되는 각각의 컴퓨터 프로그램은, 컴퓨터 시스템과 통신하기 위해 고급 절차적 프로그래밍 언어 또는 객체 지향적 프로그래밍 언어나 스크립팅 언어, 또는 이들의 조합으로 구현될 수 있다. 또는, 프로그램은 어셈블리 언어 또는 기계어로 구현될 수 있다. 이 언어는 컴파일되는 언어 또는 해석되는 언어일 수 있다. 이러한 각각의 컴퓨터 프로그램은 저장 매체 또는 장치, 예컨대 ROM, 자기 디스크, 광 디스크, 플래쉬 드라이브, 또는 임의의 다른 적합한 저장 매체 또는 장치에 저장되어 있을 수 있다.
클러스터 관리 시스템(106)의 실시예가 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능 비일시적 저장 매체 형태로 구현되는 것 또한 고려될 수 있다.
컴퓨터 실행 가능한 명령은 하나 이상의 컴퓨터 또는 다른 장치에 의해 실행되는 프로그램 모듈을 포함하여 다수의 형태일 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 또는 특정한 추상적 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능은 다양한 실시예에서 바라는 바와 같이 결합되어 있거나 또는 분산되어 있을 수 있다.
본 컴퓨팅 환경(100)의 다양한 양태가 단독으로, 또는 조합하여, 또는 이전에 설명한 실시예에서 구체적으로 논의되지 않은 다양한 배열로 사용될 수 있으며, 따라서 이전의 설명에서 제시되거나 도면에 도시되어 있는 세부사항 및 컴포넌트의 배치에 적용함에 있어서 제한되지 않는다. 예를 들어, 하나의 실시예에서 설명된 양태가 다른 실시예에서 설명된 양태와 임의의 방식으로 조합될 수 있다. 특정한 실시예가 도시되고 설명되었지만, 본 발명의 범위를 벗어나지 않고 변경과 수정이 이루어질 수 있다는 것이 당업자에게는 명백할 것이다. 첨부된 청구 범위는 이러한 변경과 수정을 모두 포함하고자 한다.

Claims (26)

  1. 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 시스템으로서,
    상기 복수의 클러스터는 클러스터 파일을 포함하고,
    상기 시스템은,
    적어도 하나의 처리 유닛; 및
    상기 적어도 하나의 처리 유닛에 통신 가능하게 연결되고, 상기 적어도 하나의 처리 유닛에 의해 실행 가능한 컴퓨터 판독가능 프로그램 명령을 포함하는 비일시적 메모리
    를 포함하고,
    상기 적어도 하나의 처리 유닛은,
    사용자 장치 상의 애플리케이션으로부터 신규 클러스터 파일을 생성하기 위한 요청을 수신하고;
    상기 신규 클러스터 파일에 대응하는 클러스터 관리 파일을 생성하며;
    상기 클러스터 관리 파일에 논리적 파일명을 할당하고 상기 신규 클러스터 파일에 물리적 파일명을 할당하고;
    상기 신규 클러스터 파일에 대한 물리적 파일 위치를 상기 복수의 클러스터에 할당하며;
    상기 클러스터 관리 파일에 메타데이터를 저장하고 - 여기서, 상기 메타데이터는 상기 클러스터 관리 파일을 상기 신규 클러스터 파일에 매핑하고, 상기 메타데이터는 상기 물리적 파일명과 상기 물리적 파일 위치를 포함하고 있음 -;
    상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일을 생성하기 위한 상기 요청을 상기 물리적 파일 위치에 대응하는 상기 복수의 클러스터 중 하나에 송신하며;
    상기 논리적 파일명을 이용하여, 상기 애플리케이션에 상기 클러스터 파일의 생성을 확인 응답(acknowledge)하는, 시스템.
  2. 제1항에 있어서,
    상기 분산 파일 시스템은 하둡 분산 파일 시스템(Hadoop Distributed File System) 또는 하둡 호환 파일 시스템인, 시스템.
  3. 제1항에 있어서,
    상기 프로그램 명령은 상기 애플리케이션 및 상기 복수의 클러스터와 통신하기 위한 적어도 하나의 클라이언트 컴포넌트와, 상기 메타데이터를 생성하고 저장하기 위한 적어도 하나의 매니저 컴포넌트를 구현하기 위해 실행 가능한, 시스템.
  4. 제3항에 있어서,
    상기 적어도 하나의 클라이언트 컴포넌트는 복수의 클라이언트 컴포넌트를 포함하고, 각각의 클라이언트 컴포넌트는 서로 다른 사용자 애플리케이션과 인터페이스하도록 구성된, 시스템.
  5. 제3항에 있어서,
    상기 적어도 하나의 매니저 컴포넌트는 복수의 매니저 컴포넌트를 포함하고, 각각의 매니저 컴포넌트는 상기 복수의 클러스터의 서로 다른 그룹과 인터페이스하도록 구성된, 시스템.
  6. 제1항에 있어서,
    상기 프로그램 명령은 상기 시스템을 가상 머신으로서 구현하기 위해 실행 가능한, 시스템.
    복수의 클러스터 관리 시스템, 배포 정책, 및 디렉토리 사용 사례 간의 컨센서스 를 포괄하는 청구항을 추가하는 것을 제안한다.
  7. 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 방법으로서,
    상기 복수의 클러스터는 클러스터 파일을 포함하고,
    상기 방법은,
    사용자 장치 상의 애플리케이션으로부터 신규 클러스터 파일을 생성하기 위한 요청을 수신하는 단계;
    상기 신규 클러스터 파일에 대응하는 클러스터 관리 파일을 생성하는 단계;
    상기 클러스터 관리 파일에 논리적 파일명을 할당하고 상기 신규 클러스터 파일에 물리적 파일명을 할당하는 단계;
    상기 복수의 클러스터로부터 상기 신규 클러스터 파일에 대한 물리적 파일 위치를 할당하는 단계;
    상기 클러스터 관리 파일에 메타데이터를 저장하는 단계 - 상기 메타데이터는 상기 클러스터 관리 파일을 상기 신규 클러스터 파일에 매핑하고, 상기 메타데이터는 상기 물리적 파일명과 상기 물리적 파일 위치를 포함하고 있음 -;
    상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일을 생성하기 위한 상기 요청을 상기 물리적 파일 위치에 대응하는 상기 복수의 클러스터 중 하나에 송신하는 단계; 및
    상기 논리적 파일명을 이용하여, 상기 애플리케이션에 상기 클러스터 파일의 생성을 확인응답(acknowledge)하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    신규 클러스터 파일을 생성하기 위한 상기 요청을 제1 포맷에서 제2 포맷으로 변환하는 단계 - 상기 애플리케이션은 상기 제1 포맷을 지원하고, 상기 클러스터는 상기 제2 포맷을 지원함 -
    을 더 포함하는 방법.
  9. 제7항에 있어서,
    신규 클러스터 파일에 대한 물리적 파일 위치를 할당하는 단계는, 상기 복수의 클러스터 중에서 상기 신규 클러스터 파일을 요청하는 상기 애플리케이션에 가장 가까운 클러스터를 선택하는 단계를 포함하는, 방법.
  10. 제7항에 있어서,
    신규 클러스터 파일에 대한 물리적 파일 위치를 할당하는 단계는, 상기 복수의 클러스터 중에서 다른 클러스터와 비교하여 가장 큰 가용 공간을 가진 클러스터를 선택하는 단계를 포함하는, 방법.
  11. 제7항에 있어서,
    상기 신규 클러스터 파일에 접근하기 위한 요청을 수신하는 단계 - 상기 요청은 상기 논리적 파일명을 포함하고 있음 -;
    상기 논리적 파일명을 이용하여, 상기 신규 클러스터 파일에 대응하는 상기 메타데이터를 검색(retrieve)하는 단계;
    상기 메타데이터로부터 상기 물리적 파일의 위치를 결정하는 단계; 및
    상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일에 접근하기 위한 상기 요청을 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계
    를 더 포함하는 방법.
  12. 제11항에 있어서,
    신규 클러스터 파일에 접근하기 위한 상기 요청을 송신하는 단계는 시스템 성능, 시스템 일관성(system consistency), 로컬 데이터 가용성(local data availability), 및 상기 클러스터 간의 로드 밸런싱 중 적어도 하나를 고려하여 상기 적어도 하나의 클러스터를 선택하는 단계를 포함하는, 방법.
  13. 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 프로세서에 의해 실행 가능한 프로그램 명령이 저장되는 컴퓨터 판독가능 매체로서,
    상기 복수의 클러스터는 클러스터 파일을 포함하고,
    상기 프로그램 명령은,
    사용자 장치 상의 애플리케이션으로부터 신규 클러스터 파일을 생성하기 위한 요청을 수신하고;
    상기 신규 클러스터 파일에 대응하는 클러스터 관리 파일을 생성하며;
    상기 클러스터 관리 파일에 논리적 파일명을 할당하고 상기 신규 클러스터 파일에 물리적 파일명을 할당하고;
    상기 신규 클러스터 파일에 대한 물리적 파일 위치를 상기 복수의 클러스터에 할당하며;
    상기 클러스터 관리 파일에 메타데이터를 저장하고 - 여기서, 상기 메타데이터는 상기 클러스터 관리 파일을 상기 신규 클러스터 파일에 매핑하고, 상기 메타데이터는 상기 물리적 파일명과 상기 물리적 파일 위치를 포함하고 있음 -;
    상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일을 생성하기 위한 상기 요청을 상기 물리적 파일 위치에 대응하는 상기 복수의 클러스터 중 하나에 송신하며;
    상기 논리적 파일명을 이용하여, 상기 애플리케이션에 상기 클러스터 파일의 생성을 확인응답(acknowledge)하도록 구성된, 컴퓨터 판독가능 매체.
  14. 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 시스템으로서,
    상기 복수의 클러스터는 클러스터 파일을 포함하고,
    상기 시스템은,
    적어도 하나의 처리 유닛; 및
    상기 적어도 하나의 처리 유닛에 통신 가능하게 연결되고, 상기 적어도 하나의 처리 유닛에 의해 실행 가능한 컴퓨터 판독가능 프로그램 명령을 포함하는 비일시적 메모리
    를 포함하고,
    상기 적어도 하나의 처리 유닛은,
    상기 복수의 클러스터 중 적어도 하나의 클러스터 내의 클러스터 파일에 접근하기 위한 요청을 수신하고 - 여기서, 상기 요청은 논리적 파일명을 포함하고, 상기 요청은 사용자 장치 상의 애플리케이션으로부터 수신되는 것임 -;
    상기 논리적 파일명을 이용하여 메타데이터를 검색하며 - 상기 메타데이터는 상기 클러스터 파일에 대응하는 물리적 파일에 논리적 파일을 매핑하고 있음 -;
    상기 메타데이터로부터 상기 물리적 파일의 위치를 결정하고;
    상기 물리적 파일명을 이용하여, 상기 클러스터 파일에 접근하기 위한 상기 요청을 상기 물리적 파일의 위치에 대응하는 상기 복수의 클러스터 중 하나에 송신하는, 시스템.
  15. 제14항에 있어서,
    상기 분산 파일 시스템은 하둡 분산 파일 시스템(Hadoop Distributed File System) 또는 하둡 호환 파일 시스템인, 시스템.
  16. 제14항에 있어서,
    상기 프로그램 명령은 상기 애플리케이션 및 상기 복수의 클러스터와 통신하기 위한 적어도 하나의 클라이언트 컴포넌트와, 상기 메타데이터를 생성하고 저장하기 위한 적어도 하나의 매니저 컴포넌트를 구현하기 위해 실행 가능한, 시스템.
  17. 제16항에 있어서,
    상기 적어도 하나의 클라이언트 컴포넌트는 복수의 클라이언트 컴포넌트를 포함하고, 각각의 클라이언트 컴포넌트는 서로 다른 사용자 애플리케이션과 인터페이스하도록 구성된, 시스템.
  18. 제16항에 있어서,
    상기 적어도 하나의 매니저 컴포넌트는 복수의 매니저 컴포넌트를 포함하고, 각각의 매니저 컴포넌트는 상기 복수의 클러스터의 서로 다른 그룹과 인터페이스하도록 구성된, 시스템.
  19. 제14항에 있어서,
    상기 프로그램 명령은 상기 시스템을 가상 머신으로서 구현하기 위해 실행 가능한, 시스템.
  20. 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 방법으로서,
    상기 복수의 클러스터는 클러스터 파일을 포함하고,
    상기 방법은,
    상기 복수의 클러스터 중 적어도 하나의 클러스터 내의 클러스터 파일에 접근하기 위한 요청을 수신하는 단계 - 상기 요청은 논리적 파일명을 포함하고, 상기 요청은 사용자 장치 상의 애플리케이션으로부터 수신되는 것임 -;
    상기 논리적 파일명을 이용하여 메타데이터를 검색(retrieve)하는 단계 - 상기 메타데이터는 상기 클러스터 파일에 대응하는 물리적 파일에 논리적 파일을 매핑하고 있음 -;
    상기 메타데이터로부터 상기 물리적 파일의 위치를 결정하는 단계; 및
    상기 물리적 파일명을 이용하여, 상기 클러스터 파일에 접근하기 위한 상기 요청을 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계
    를 포함하는 방법.
  21. 제20항에 있어서,
    신규 클러스터 파일에 접근하기 위한 상기 요청을 제1 포맷에서 제2 포맷으로 변환하는 단계 - 상기 애플리케이션은 상기 제1 포맷을 지원하고, 상기 클러스터는 상기 제2 포맷을 지원함 -
    를 더 포함하는 방법.
  22. 제20항에 있어서,
    신규 클러스터 파일에 접근하기 위한 상기 요청을 송신하는 단계는,
    상기 신규 클러스터 파일에 접근하기 위한, 메타데이터로부터의 상기 요청을 상기 물리적 파일의 위치에 대응하는 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계
    를 포함하는, 방법.
  23. 제20항에 있어서,
    신규 클러스터 파일에 접근하기 위한 상기 요청을 송신하는 단계는,
    시스템 성능, 시스템 일관성(system consistency), 로컬 데이터 가용성(local data availability), 및 상기 클러스터 간의 로드 밸런싱 중 적어도 하나를 고려하여 상기 복수의 클러스터 중 적어도 하나를 선택하는 단계
    를 포함하는, 방법.
  24. 제20항에 있어서,
    신규 클러스터 파일을 수정하기 위한 요청을 수신하는 단계 - 상기 요청은 상기 논리적 파일명을 포함하고 있음 -;
    상기 논리적 파일명을 이용하여, 상기 신규 클러스터 파일에 대응하는 상기 메타데이터를 검색하는 단계;
    상기 신규 클러스터 파일을 수정하기 위한 상기 요청에 따라 신규 메타데이터를 생성하는 단계;
    상기 메타데이터로부터 상기 물리적 파일의 위치를 결정하는 단계;
    상기 물리적 파일명을 이용하여, 상기 신규 클러스터 파일을 수정하기 위한 상기 요청을 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계; 및
    상기 신규 클러스터 파일에 관한 상기 신규 메타데이터를 저장하는 단계
    를 더 포함하는 방법.
  25. 제24항에 있어서,
    신규 클러스터 파일을 수정하기 위한 상기 요청을 송신하는 단계는,
    상기 신규 클러스터 파일을 수정하기 위한, 메타데이터로부터의 상기 요청을 상기 물리적 파일의 위치에 대응하는 상기 복수의 클러스터 중 적어도 하나에 송신하는 단계
    를 포함하는, 방법.
  26. 분산 파일 시스템의 복수의 클러스터를 관리하기 위한 프로세서에 의해 실행 가능한 프로그램 명령이 저장되는 컴퓨터 판독가능 매체로서,
    상기 복수의 클러스터는 클러스터 파일을 포함하고,
    상기 프로그램 명령은,
    상기 복수의 클러스터 중 적어도 하나의 클러스터 내의 클러스터 파일에 접근하기 위한 요청을 수신하고 - 여기서, 상기 요청은 논리적 파일명을 포함하고, 상기 요청은 사용자 장치 상의 애플리케이션으로부터 수신되는 것임 -;
    상기 논리적 파일명을 이용하여 메타데이터를 검색(retrieve)하며 - 여기서, 상기 메타데이터는 상기 클러스터 파일에 대응하는 물리적 파일에 논리적 파일을 매핑하고 있음 -;
    상기 메타데이터로부터 상기 물리적 파일의 위치를 결정하고;
    상기 물리적 파일명을 이용하여, 상기 클러스터 파일에 접근하기 위한 상기 요청을 상기 복수의 클러스터 중 적어도 하나에 송신하도록 구성된, 컴퓨터 판독가능 매체.
KR1020177033514A 2016-11-16 2017-08-07 분산 파일 시스템의 복수의 클러스터의 관리 KR20180071200A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662422751P 2016-11-16 2016-11-16
US62/422,751 2016-11-16
US15/585,815 2017-05-03
US15/585,815 US20180139103A1 (en) 2016-11-16 2017-05-03 Management of multiple clusters of distributed file systems
PCT/CN2017/096233 WO2018090674A1 (en) 2016-11-16 2017-08-07 Management of multiple clusters of distributed file systems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197029220A Division KR20190116565A (ko) 2016-11-16 2017-08-07 분산 파일 시스템의 복수의 클러스터의 관리

Publications (1)

Publication Number Publication Date
KR20180071200A true KR20180071200A (ko) 2018-06-27

Family

ID=62108859

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197029220A KR20190116565A (ko) 2016-11-16 2017-08-07 분산 파일 시스템의 복수의 클러스터의 관리
KR1020177033514A KR20180071200A (ko) 2016-11-16 2017-08-07 분산 파일 시스템의 복수의 클러스터의 관리

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197029220A KR20190116565A (ko) 2016-11-16 2017-08-07 분산 파일 시스템의 복수의 클러스터의 관리

Country Status (7)

Country Link
US (1) US20180139103A1 (ko)
EP (2) EP3761611B1 (ko)
JP (1) JP2018537736A (ko)
KR (2) KR20190116565A (ko)
CN (1) CN109314721B (ko)
AU (1) AU2017254926B2 (ko)
WO (1) WO2018090674A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US11100086B2 (en) 2018-09-25 2021-08-24 Wandisco, Inc. Methods, devices and systems for real-time checking of data consistency in a distributed heterogenous storage system
CN109376135B (zh) * 2018-10-19 2021-07-02 郑州云海信息技术有限公司 一种集群文件系统管理方法和系统
US11061856B2 (en) 2019-07-03 2021-07-13 Bank Of America Corporation Data ingestion system
CN112445768A (zh) * 2019-08-27 2021-03-05 无锡江南计算技术研究所 面向超大规模系统的多文件系统元数据统一缓存管理方法
CN111026565B (zh) * 2019-12-06 2024-03-19 无锡华云数据技术服务有限公司 一种集群管理方法及管理系统
CN112162707A (zh) * 2020-10-15 2021-01-01 科大讯飞股份有限公司 用于分布式存储系统的存储方法、电子设备及存储介质
CN112261097B (zh) * 2020-10-15 2023-11-24 科大讯飞股份有限公司 用于分布式存储系统的对象定位方法及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH103421A (ja) * 1995-11-20 1998-01-06 Matsushita Electric Ind Co Ltd 仮想ファイル管理システム
US20040030731A1 (en) * 2002-04-03 2004-02-12 Liviu Iftode System and method for accessing files in a network
US20040121789A1 (en) * 2002-12-23 2004-06-24 Teddy Lindsey Method and apparatus for communicating information in a global distributed network
US8255420B2 (en) * 2006-05-23 2012-08-28 Noryan Holding Corporation Distributed storage
JP2010074604A (ja) * 2008-09-19 2010-04-02 Nec Corp データアクセスシステム、データアクセス方法およびデータアクセス用プログラム
KR101236477B1 (ko) * 2008-12-22 2013-02-22 한국전자통신연구원 비대칭 클러스터 파일 시스템의 데이터 처리 방법
US9268590B2 (en) * 2012-02-29 2016-02-23 Vmware, Inc. Provisioning a cluster of distributed computing platform based on placement strategy
CN104050201B (zh) * 2013-03-15 2018-04-13 伊姆西公司 用于多租户分布式环境中的数据管理的方法和设备
CN103218433A (zh) * 2013-04-15 2013-07-24 北京邮电大学 一种应用于随机存取的元数据管理方法及模块
CN103647797A (zh) * 2013-11-15 2014-03-19 北京邮电大学 一种分布式文件系统及其数据访问方法
US10812313B2 (en) * 2014-02-24 2020-10-20 Netapp, Inc. Federated namespace of heterogeneous storage system namespaces
US10459881B2 (en) * 2015-02-27 2019-10-29 Podium Data, Inc. Data management platform using metadata repository

Also Published As

Publication number Publication date
EP3341867A1 (en) 2018-07-04
WO2018090674A1 (en) 2018-05-24
US20180139103A1 (en) 2018-05-17
EP3761611B1 (en) 2022-05-25
CN109314721A (zh) 2019-02-05
EP3761611A1 (en) 2021-01-06
AU2017254926B2 (en) 2019-02-07
EP3341867B1 (en) 2020-07-22
KR20190116565A (ko) 2019-10-14
EP3341867A4 (en) 2018-11-07
JP2018537736A (ja) 2018-12-20
AU2017254926A1 (en) 2018-05-31
CN109314721B (zh) 2021-01-15

Similar Documents

Publication Publication Date Title
EP3341867B1 (en) Management of multiple clusters of distributed file systems
US11375008B2 (en) Consumption of data services provisioned in cloud infrastructures
US11113005B2 (en) Multi-platform data storage system supporting containers of virtual storage resources
US11314687B2 (en) Container data mover for migrating data between distributed data storage systems integrated with application orchestrators
US8918392B1 (en) Data storage mapping and management
JP4265245B2 (ja) 計算機システム
CA2923068C (en) Method and system for metadata synchronization
US20160292249A1 (en) Dynamic replica failure detection and healing
US9031906B2 (en) Method of managing data in asymmetric cluster file system
US9037618B2 (en) Distributed, unified file system operations
SG189386A1 (en) Dynamically splitting multi-tenant databases
CN103237046A (zh) 支持混合云存储应用的分布式文件系统及实现方法
US11221993B2 (en) Limited deduplication scope for distributed file systems
JP2020506456A (ja) スタビングによるコンテンツ記憶の最適化
CN111444157B (zh) 分布式文件系统及数据访问方法
CA2983925C (en) Management of multiple clusters of distributed file systems
US20230376391A1 (en) Data ingestion replication and disaster recovery

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment