one of a kind scene

4-2 데이터 처리 기술_분산 데이터 저장 기술 part1_분산 파일 시스템 본문

ADP/이론

4-2 데이터 처리 기술_분산 데이터 저장 기술 part1_분산 파일 시스템

specialscene 2019. 11. 21. 21:05

분산 데이터 저장 기술 part1_분산 파일 시스템

 

분산 파일 시스템

     ① 구분

          • 분산 데이터 저장 기술은 분산 파일 시스템, 클러스터, 데이터베이스, NoSQL로 구분

 

     ② 구글 파일 시스템(GFS)

          <GFS 개념 및 특징>

          • GFS는 구글의 대규모 클러스터 서비스 플랫폼의 기반이 되는 파일 시스템

          • 파일을 고정된 크기(64MB) 청크(chunk)들로 나누고, 각 chunk에 대한 여러 개의 복제본과 chunk를 청크서버에 분산저장한다.

          • GFS에서는 트리 구조가 아닌 해시 테이블 구조 등을 사용함으로써 메모리상에서 보다 효율적인 메타데이터의 처리를 지원

         

          <GFS 설계의 가정>

          • chunk는 마스터에 의해 생성/삭제될 수 있으며, 유일한 식별자에 의해 구별

          • GFS는 저가형 서버로 구성된 환경으로 서버의 고장이 빈번히 발생할 수 있다고 가정

          • 작업부하는 연속적으로 많은 데이터를 읽는 연산 or 임의의 영역에서 적은 데이터를 읽는 연산에서 발생

          • 쓰기 연산은 순차적으로 이루어짐

          • 낮은 응답 지연시간보다 높은 처리율이 더 중요

 

          <GFS 구성요소>

          • GFS는 여러 클라이언트들에 의해  접근되는 하나의 마스터청크서버들로 구성됨

         

         ⑴ 클라이언트(Client)

          • 읽기/쓰기 동작을 요청하는 애플리케이션

         

          ⑵ 마스터(Master)

          • 단일 마스터 구조

          • 파일 시스템의 이름 공간(name space), 파일과 chunk의 매핑 정보, 각 chunk가 저장된 청크 서버들의 위치 정보 등 모든 메타데이터를 메모리상에서 관리

          • 주기적으로 수집되는 청크서버의 하트비트(heartbeat) 메시지를 이용하여 chunk들의 상태에 따라 chunk를 재복제하거나 재분산하는 것과 같은 회복동작을 수행

          • 마스터에 대한 장애 처리와 회복을 위해 파일시스템 이름 공간과 파일의 chunk 매핑 변경 연산을 로깅하고, 마스터의 상태를 여러 섀도 마스터에 복제

 

          ⑶ 청크서버(Chunk Server)

          • 로컬 디스크에 chunk를 저장관리하면서 클라이언트로부터의 chunk 입출력 요청을 처리

          • 하트비트(heartbeat) 메시지를 통해 청크서버의 상태에 대한 정보를 주기적으로 마스터에게 전달

 

          <GFS에서 파일을 읽어오는 과정>

          • Client는 Master에게 찾고자하는 File을 알려줌

          • Master는 File이 어디에 저장되어 있는지에 대한 정보를 메타데이터에서 가져옴

          • 가져온 정보를 Client에게 알려줌

          • Client는 가져온 정보를 직접 Chunk 서버에 파일을 요청

          • Chunk 서버가 Client에게 파일을 전달

 

     ③ 하둡 분산 파일 시스템(HDFS, Hadoop Distributed File System)

          <HDFS 개념 및 특징>

          • 구글 파일 시스템의 아키텍처와 사상을 그대로 구현한 클로닝(Cloning) 프로젝트

          • GFS의 마스터(Master)와 유사한 HDFS의 네임노드(NameNode)=Master와

          • GFS의 청크서버(Chunk Server)와 유사한 HDFS의 데이터노드(DataNode)=Slave로 구성

          • HDFS에서 파일 데이터는 블록(또는 청크) 단위로 나뉘어 여러 데이터노드에 분산복제저장됨

            ※ GFS는 청크라는 용어, HDFS는 블록이라는 용어 많이 사용

          • HDFS 1.0까지는 파일이 한 번 쓰이면 변경되지 않는다고 가정(2.0 알파버전부터는 저장된 파일에 append가능)

          • HDFS순차적 스트리밍 방식으로 파일을 저장 or 저장된 파일 조회, 배치 작업에 적합하도록 설계

          • 낮은 데이터 접근 지연 시간보다는 높은 데이터 처리량에 중점

 

          <HDFS 구성요소>

          ⑴ 네임노드(NameNode) = Master

          • 파일 시스템의 이름 공간(name space) 등 HDFS 상의 모든 메타데이터를 관리

          • 시스템 전반의 상태를 모니터링

          • 데이터를 저장하거나 애플리케이션을 실행하는 작업은 수행하지 않음(지휘만 한다고 이해하면됨)

          • 클라이언트로부터의 파일 접근 요청을 처리

          • 데이터노드들로부터 하트비트(Heartbeat)를 받아 데이터노드들의 상태를 체크

          • 하트비트 메시지에 포함된 블록 정보를 가지고 볼록의 상태를 체크

 

          ⑵ 데이터노드(DataNode) = Slave

          • 클라이언트로부터 데이터 입출력 요청을 처리

          • 데이터 유실 방지를 위해 블록을 3중 복제하여 저장

          • 하트비트(Heartbeat)와 자신이 관리하는 블록목록(blockreport)를 네임노드에게 전송

 

          ⑶ 보조네임노드

          • HDFS 상태 모니터링 보조

          • 주기적으로 네임 노드의 파일 시스템 이미지를 스냅샷해 생성

 

     ④ 러스터(Lustre)

          <러스터 개념 및 특징>

          • 클러스터 파일 시스템(Cluster File Systems Inc.)에서 개발

          • 객체 기반의 클러스터 파일 시스템

          • 고속 네트워크로 연결된 클라이언트 파일 시스템, 메타데이터 서버, 객체 저장서버들로 구성

 

          <러스터 구성요소>

          ⑴ 클라이언트 파일 시스템

          • 리눅스 VFS(Virtual File System)에서 설치할 수 있는 파일 시스템

          • 메타데이터 서버와 객체 저장 서버들과 통신하면서 클라이언트 application 파일 시스템 인터페이스 제공

 

          ⑵ 메타데이터 서버

          • 파일 시스템의 이름 공간과 파일에 대한 메타데이터를 관리

 

          ⑶ 객체 저장 서버

          • 파일데이터를 저장, 클라이언트로부터의 객체 입출력 요청 처리

          • 데이터는 세그먼트라는 작은 데이터 단위로 분할해서 복수의 디스크에 분산 저장(스트라이핑 방식)

 

          <러스터 구동방식>

          • 라이트백 캐시(Write Back Cache) 지원. 이를 위해 클라이언트에서 메타데이터 변경에 대한 갱신 레코드를 생성하고 나중에 메타데이터 서버에 전달

            ※ 라이트백 캐시 : 기본적으로 데이터를 캐시에만 저장하고, 어쩔 수 없이 캐시영역에서 밀려나는 경우에 하위저장소에 저장하는 데이터 갱신 방식

          • 러스터는 파일의 메타데이터와 파일 데이터에 대한 동시성 제어를 위해 별도의 잠금 사용

          •러스터는 클라이언트와 메타데이터 서버 간의 네트워크 트래픽을 최소화하기 위하여 메타데이터에 대한 잠금 요청시 메타데이터 접근 의도를 같이 전달하는  인텐트(intent) 기반 잠금 프로토콜 사용

 

 

파일 시스템 비교

구분 GFS 하둡 DFS 러스터
Open Source O O O
Chunk based O O X
Support Replication O O X
Multiple metadata server supported X X X
Locks Used to maintain atomicity O O O
Uses a DB for storing metadata X X X
Adding nodes
without shutting down the system
O O O
POSIX support X X O
Supports file modification(파일 수정 지원) X X O