페이지

2017년 12월 16일 토요일

1. 분산 파일 시스템

사용자 중심의 인터넷 서비스와 유비쿼터스 컴퓨팅 환경은 대규모 클러스터 시스템 플랫폼의 필요성을 부각.
대규모 클러스터 시스템: 네트워크상에 분산된 많은 서버들을  클러스터로 구성
-  대용량 저장공간
-  빠른 처리 성능
- 시스템 확장의 용의
- 시스템 신뢰성 및 가용성(시스템 장애가 발생시 안전 보장)

NFS(Network File System) 기존 단순한 클라이언트/서버 수준의 분산 파일 시스템으로는 시스템 성능과 확장에 한계 발생

비대칭형(asymmetric)클러스터 파일 시스템은 성능과 확장성, 가용셩 면에서 적합한 분산 파일 시스템 구조로, 최근에 연구와 개발이 활발히 진행

비대칭형 클러스터 파일 시스템: 파일 메타데이터를 관리하는 전용 서버
(메타데이터 서버에 부하가 집중될 수 있으며 single-of-failure 지점이 돌 수 있는 문제점 내표)

가. 구글 파일 시스템(GFS, Google File system)
구글의 대규모 클러스터 서비스 플래폼의 기반

- 저가형 서버로 구성된 환경으로 서버의 고장이 빈번히 발생할 수 있다고 가정한다.
-대부분의 파일은 대용량이라고 가정한다. 따라서 대용량 파일을 효과적으로 관리할 수 있는 방법이 요구된다.
- 작업 부하는 주로 연속적으로 많은 데이터를 읽는 연산이거나 임의의 영역에서 적은 데이터를 읽는 연산이다.
- 파일에 대한 쓰기 연산은 주로 순차적으로 데이터를 추가하며, 파일에 대한 갱신은 들물게 이루어진다.
-여러 클라이언트에서 동시에 동일한 파일에 데이터를 추가하는 환경에서 동기화 오버헤드를 최소화 할 수 있는 방법이 요구된다.
-낮은 응답 지연시간보다 높은 처리율이 보다 중요하다.

GFS는 그림과 같이 클라이언트, 마스터, chunk 서버를 구성된다.


GFS의 클라이언트는 POSIX(Portable Operating System Interface)인터페이스를 지원하지 않으며, 파일 스스템 인터페이스와 유사한 자체 인터페이스를 지원 한다. 또한 여러 클라이언트에서 원자적인 데이터 추가(atomic append)연산을 지원하기 위한 인터페이스를 지원한다.

GFS에서 파일은 고정된 크기의 chunk들로 나누어 chunk서버들에 분산.저장된다.
그리고 각 chunk 에 대한 여러 개의 복제본도 chunk 서버에 분산.저장된다.

따라서 클라이언트는 파일에 접근하기 위하여 마스터로부터 해당 파일의 chunk가 저장된 chunk 서버의 위치와 핸들을 먼저 받아온다.
이어서 직접 chunk 서비로 파일 데이터를 요청한다. GFS의 마스터는 단일 마스터 구조로 파일 시스템 이름 공간과 파일의 chunk 매핑 정보, 각 chunk 의 크기를 64MB로 지정함으로써 파일 메타데이터의 크기를 줄인다. 또한 기존 트리 구조가 아닌 해시 테이블 구조 등을 사용함으로써 메모리상에서 보다 효율적인 메타데이터 처리를 지원한다. 마스터에서는 주기적으로 하트비트(heartbeat)메시지를 이요하여 chunk 서버에 저장된 chunk 들의 상테를 체크해 상태에 따라 chunk를 재 복제하거나 재분산하는 것과 같은 회복동작을 수행한다.
마스터에 대한 장애 처리와 회복을 위해 파일스스템 이름 공간과 파일의 chunk 매핑 변경 연산을 로깅하고 마스터의 상태를 여러 새도 마스터에 복제한다.
Chunk 서버는 로컬 디스크에 chunk를 저장.관리하면서 클라이언트로보터의 chunk입출력 요청을 처리한다. chunk는 마스터에 의해 생성/삭제될 수 있으며, 유일한 식별자에 의해 구별된다. 마스터는 하나의 chunk 서버를 primary로 지정하여 복제본의 갱신 연산을 일관되게 처리할 수 있도록 보장한다.

나. 하둡 분산 파일 시스템
하둡(Haddop)은 아파치(Apache)의 검색엔진 프로젝트인 루씬(Lucene)의 서브 프로젝트로 진행되었지만, 2008년 1월에 아파츼의 최상위 프로젝트로 승격되었다. 하둡은 하둡 분산 파일시스템(HDFS)과 MapReduce 구현 등을 포함한다. HDFS는 처음에 아파치 너치(Apache Nutch)웹 검색 엔진의 파일 시스템으로 개발되었으며, 구글 파일 시스템과 아키텍처와 사상을 그대로 구현한 클로닝(Cloning)프로젝트라고 할 수 있다.
_____________________________________________________________________________

HDFS 는 그림에서와 같이 하나의 네임노드(NameNode)와 다수의 데이터노드(DataNode)로 구성된다.
네임노드는 파일 시스템의 이름 공간을 관리하면서 클라이언트로부터의 파일 접근 요청을 처리한다.
HDFS에서 파일 데이터는 블록 단위로 나뉘어 여러 데이터 노드에 분산.저장된다. 그리고 블록들은 가용성을 보장하기 위하여 다시 복제.저장된다.

따라서 데이터노드는 클라이언트로부터의 데이터 입출력 요청을 처리한다. HDFS에서 파일은 한 번 쓰이면 변경되지 않는다고 가정한다. 따라서 HDFS는 데이터에 대한 스트리밍 접근을 요청하며, 배치작업에 적합한 응용을 대상으로 한다.
네임노드는 데이터노드들로부터 하트비트(Heartbeat)를 주기적으로 받으면서 데이터노드들의 상태를 체크한다. 또한 하트비트, 네임노트, 데이터노드 간의 통신을 위하여 TCP/IP네트워크상에 RPC(Remote Procedure Call)를 사용한다.

다. 러스터(Luste)
클러스터 파일 시스템(Cluster File Systems Inc.)에서 개발한 객체 기반 클러스터 파일 시스템이다.
리스터는 그림과 같이 클라이언트 파일 시스템, 메타데이터 서버, 객체 저장 서버들로 구성되며, 이들은 고속 네트워크로 연결된다. 리스터에서는 계층화된 모듈 구조로 TCP/IP, 이니니밴드(Infiniband), 미리넷(Myrinet)과 같은 네트워크를 지원한다. 클라이언트 파일 시스템은 리눅스 VFS(Virtual File System)에서 설치할 수 있는 파일 시스템으로, 메타데이터 서버와 객체 저장 서버들과 통신하면서 클라이언트 응용에 파일 시스템 인터페이스를 제공한다. 메타데이터 서버는 파일 시스템의 이름 공간과 파일에 대한 메타 데이터를 관리하며, 객체 저장 서버는 파일데이터를 저장하고 클라이언트로부터의 객체 입출력 요청을 처리한다. 객체는 객체 저장 서버들에 스트라이핑되어 분산.저장된다.
리스터는 유닉스(Unix) 시맨틱을 제공하면서 파일 메타데이터에 대해서는 라이트백 캐시(Write Back Cache)를 지원한다. 이를 위해 클라이언트에서 메타데이터 변경에 대한 갱신 레코드를 생성하고 나중에 메타데이터 서버에 전달한다. 그러면 메타데이터 서버는 전달된 갱신 레코드를 재수행하여 변경된 메타데이터를 반영한다. 더불어 메타데이터 서버에서는 메타데이터를 도시에 접근하는 부하에 따라 클라이언트 캐시에서 라이트백 캐시를 지원하거나 메타데이터 서버에서 메타데이트를 처리하는 방식을 적용한다.
__________________________________________________________________

리스터는 메타데이터 서버에서 처리하도록 하는 방식을 사용해 메타데이터에 대한 동시 접근이 적으면 클라이언트 캐시를 이용한 라이트백 캐시를 사용하고, 메타데이터에 대한 동시 접근이 많으면 클라이언트 캐시를 사용함으로써 발생할 수 있는 오버헤드를 줄인다.
리스터는 파일 메타데이터와 파일 데이터에 대한 동시성 제어를 위해 별도의 잠금을 사용한다. 메타데이터에 접근하기 위해서는 메타데이터 서버로부터 잠금을 획득해야 한다. 파일 데이터를 접근하기 위해서는 해당 데이터가 저장된 객체 저장 서버의 잠금을 획득해야 한다.
또한 리스터에서는 클라이언트와 메타데이터 서버 간의 네트워크 트래픽을 최호화하기 위하여 메타데이터에 대한 요청 시에 메타데이터 접근 의도를 같이 전달하는 인텐트(intent)기반 잠금 프로토콜을 사용한다. 따라서 메타데이터 서버는 메타데이터 접근 의도에 따라 해당 동작을 후생하고, 잠금을 승인하는 처리를 함께 수행함으로써 클라이언트와 메타데이터 서버 간의 네트워크 트래픽을 줄인 수 있다.

클러스터 파일 시스템 비교

구분                                                           GFS                 하둡 DFS                리스터
Open Source                                              지원                    지원                     지원
Chunk base                                                지원                    지원                  지원 안함
Support Replication                                   지원                    지원                  지원 안함   
Multiple metadata server supported       지원 안함           지원 안함              지원 안함
Locks used to maintain aoomicity             지원                    지원                     지원
Uses a DB for storing metadata              지원 안함           지원 안함              지원 안함
Adding nodes widthout shutting              지원                    지원                     지원
     down the System.
POSIX support                                         지원 안함            지원 안함               지원
Supports file modification                       지원 안함            지원 안함               지원
                                                         (append는 지원함)



댓글 없음: