Hadoop HDFS과 Apache Ozone의 특징 비교
상태바
Hadoop HDFS과 Apache Ozone의 특징 비교
  • 신동혁
  • 승인 2021.10.22 16:31
  • 조회수 1406
  • 댓글 0
이 콘텐츠를 공유합니다

 

이번 영상에서는 Hadoop Default 저장소인 HDFS의 특징과 단점을 통해 Apache Ozone이 대두된 배경을 살펴보고, 차세대저장소인 Ozone의 특징과 적용시점을 살펴보고자 합니다.

Hadoop HDFS(Hadoop Distributed File System)

Hadoop은 대용량 데이터를 분산 저장하는 기능과 분산 저장된 데이터를 분석 및 처리하는 기능으로 구성됩니다.
HDFS는 Hadoop의 Default 데이터저장소로, 대용량 파일을 분산된 서버에 저장하고, 그 데이터를 빠르게 처리할 수 있는 파일 시스템입니다.

 

1. 대두 배경 
Google의 2003년 “Google File System”, 2004년 “MapReduce : Simplified Data Processing on Large Clusters” 논문에 영감을 받아, Open-Source Web Crawler인 Nutch를 위한 분산파일시스템으로 2005년 개발 시작되어, 2006년 별도 Hadoop 프로젝트로 독립하였으며, 최신 버전은 3.3.1 입니다.

 

2. HDFS 특징 
- 대용량 데이터 관리 : 데이터 파일 크기나 개별 장비의 파일 시스템 크기에 제한없이 대용량 데이터(파일당 Giga ~ Tera Byte)를 범용 서버만으로 저장 및 처리가 가능합니다.

- 다양한 형식의 데이터 관리 : 정형, 반정형, 비정형 데이터를 포함하는 다양한 형식의 데이터를 저장 및 관리가 가능합니다.

- 높은 처리량 : Streaming 데이터 액세스를 통해, 대화식 사용보다는 배치 처리를 위해 설계되고, 빠른 응답시간보다 높은 처리량에 중점을 두고 개발됩니다.
대용량 데이터의 특징으로 인해 네트워크 혼잡을 최소화하고 처리량을 증가시키기 위해 데이터가 위치한 서버에서 계산합니다.

- 단순 일관성 모델 : 파일을 한번 쓰고, 조회시 다중 액세스하는 모델로, 데이터의 부분 수정(Record별 Update/Delete)이 불가하고, 랜덤 액세스가 불가하며, 이를 통해 높은 처리량을 실현합니다.

- 계층적 파일 구성 지원 : HDFS는 NameSpace를 통해 Windows 탐색기와 동일한 디렉토리 체계를 제공합니다.
사용자 또는 응용 프로그램은 Directory를 만들고 Directory 안에 파일을 저장하며, 사용자 및 Directory별 Quota(용량 설정)와 접근 권한을 정의할 수 있습니다.

- Block 단위 저장 : 대규모 파일을 Block(Default 128 MB)으로 분할하여 저장하고, 파일의 마지막 Block을 제외한 모든 Block은 동일한 크기로 저장합니다.

- 용량 확장성 : 데이터가 증가하면 Node 추가로 처리가 가능합니다.

- 데이터 손실 방지 및 복구 : 복수개(3개 이상)의 DataNode에 데이터를 복제하여, 일부 Node에 장애가 발생해도 데이터 손실을 방지합니다. HDFS는 오류를 감지하고, 자체적으로 자동 복구하도록 설계됩니다.

 

3. HDFS 아키텍처

HDFS는 Master/Slave Architecture로 Master인 NameNode와 Slave인 DataNode로 구성됩니다. 
NameNode는 데이터를 관리하고, DataNode는 실제 데이터를 저장합니다.

※ 출처 : https://hadoop.apache.org/

- NameNode : 파일시스템의 NameSpace를 관리하고, Client의 파일 액세스를 제어 합니다. Primary/Secondary 구조로 2~3대로 구성하며, Primary는 HDFS Cluster내 Active된 단일 NameNode로 데이터를 관리하며, Secondary는 Primary Node 장애시 Primary Node 역할을 수행합니다.

(NameSpace 관리) 파일 및 Directory 열기, 닫기, 이름 바꾸기와 같은 파일시스템의 NameSpace 작업을 수행합니다.

(메타데이터 관리) HDFS에서 메타데이터는 NameSpace(HDFS내 파일위치)와 BlockSpace(파일의 Block 구성)를 의미하며, 빠른 처리를 위해, 메타데이터를 디스크가 아닌 메모리에서 관리합니다.

(DataNode 관리) DataNode에 대한 Block 매핑을 결정하고, DataNode와 주기적으로 정보를 주고 받으면서 DataNode의 용량이 다 차면 다른 DataNode로 Block을 이동하며, Block 복제본 수를 관리합니다.

(Client의 HDFS 처리요청 접수) Client가 HDFS 파일 접근을 요청 하면, NameNode가 메타데이터를 기반으로 대상 Block을 보유한 DataNode 리스트를 Client에게 전달하고, 데이터를 어떻게 처리 및 분배할지를 결정합니다.
Master Node라고도 합니다.

- DataNode : 실데이터(파일)를 저장하며, 파일은 하나 이상의 블록으로 분할되어 DataNode들에 저장됩니다.
파일은 2가지로 저장되는데, 하나는 실제 데이터가 저장되는 로우 데이터이고, 다른 하나는 파일 생성자 같은 메타데이터입니다. Client의 파일시스템 읽기 및 쓰기 요청을 처리합니다. DataNode는 분산저장을 위해 복수개의 Node(Default 3개)로 구성되며, WorkerNode라고도 합니다.


Apache Ozone(오존) 

기존 HDFS의 단점을 보완하고, 클라우드 네이티브(Cloud-Native), 컴퓨팅과 스토리지간 분리된 환경을 지원하는 차세대 HDFS 기술로, 분산형 객체 저장소입니다.

 

1. 대두 배경

- 기존 HDFS는 NameNode라는 단일 Daemon으로 NameSpace와 BlockSpace 모두를 메모리 영역에서 관리하여, 물리적으로 약 3.5억개 이상의 파일처리에 한계가 존재합니다.

- HDFS는 안정성을 위해 데이터를 3벌 복제해 특정 DataNode에 장애가 발생하더라도 자가 치유가 가능하며, 주기적으로 NameNode에 Block 단위로 리포트하나, 데이터가 증가하면 Block도 증가하면서 리포트 자체가 무거워져 NameNode에 부하가 가중됩니다.

- HDFS의 Default Block 크기는 128MB이며, 기존 Block 크기보다 현저하게 작은 용량의 파일이 다수 존재하면, 개별 파일을 관리하기 위한 메타데이터가 폭증합니다. 이로 인해 NameNode Memory의 비효율적 사용 및 RPC 호출, Block 스캐닝 처리성능 저하, 관련된 애플리케이션의 성능 저하 등의 소형파일 문제(Small File Problem)가 발생합니다.

- 기존 HDFS의 한계를 극복하고자 차세대 HDFS로 Ozone이 태동하였으며, 최신 버전은 1.1.0 입니다.

 

2. Ozone 특징 

- 확장성 제공 : 기존 HDFS NameNode에서 관리하던 NameSpace와 BlockSpace를 분리하여 수십억개의 파일과 작은 파일을 저장할 수 있도록 설계됩니다. Ozone에서 NameSpace는 Ozone Manager에서, BlockSpace는 Storage Container Manager에서 분리하여 관리합니다.

- 일관성 제공 : 기존 HDFS가 Apache Zookeeper(주키퍼)를 활용하는 반면, 장애가 발생하는 환경에서도 데이터에 대한 강력한 일관성을 제공하기 위해 분산합의 알고리즘인 RAFT(레프트) 프로토콜을 활용합니다.

- 클라우드 네이티브(Cloud-Native) 지원 : 클라우드 환경에서 운영하는 것이 전제인 클라우드 네이티브 지원을 위해, YARN 및 Kubernetes와 같은 Container 환경에서 잘 작동하도록 설계됩니다.

- 보안성 지원 : 데이터 저장시점 암호화, 데이터 통신시점 암호화, 사용자 인증을 위한 Kerberos(커버로스), 데이터 접근제어를 위한 Apache Ranger(아파치 레인저)를 지원합니다. 

- 다중 프로토콜 지원 : Hadoop 파일 시스템 API, Amazon S3 API 등을 통해 On-Premise와 Public Cloud에 이르는 단일 Storage 아키텍처 구성이 가능합니다.

- 호환성 제공 : Ozone 파일시스템(Ofs, O3fs)은 Hadoop 호환 파일시스템이며, Hive, Impala, Spark 같은 기존 Hadoop Echosystem과 연동되도록 설계부터 고려됩니다.

- 고가용성 제공 : HDDS(Hadoop Distributed Data Store)라는 고 가용성 분산복제 Block Storage 계층을 통해 여러번의 장애에도 서비스가 가능하도록 구성됩니다.

- 기존 HDFS 대비 유사하거나 나은 성능 제공 : TPC-DS 성능 벤치마크에서 100GB, 1TB 데이터를 기반으로 각각 99개 Test Query의 총 수행시간을 측정한 결과, 기존 HDFS 대비 평균 3.5% 성능이 향상됩니다. 성능 벤치마크시 Hive 3, Hadoop 3, Tez 0.9, Ozone Tech Preview 버전(이후 Beta Release → 1.0 GA:Generally Available 순서임), 4개 Master Node, 12개 Storage/Data Node, 12개 Compute Node에서 수행됨

※ 출처 : Benchmarking Ozone: Cloudera’s next generation Storage for CDP(Cloudera, 2020-02-14)

 

3. Ozone 아키텍처

※ 출처 : https://ozone.apache.org/

확장성 제공을 위해 NameSpace와 BlockSpace를 분리하여 OM과 SCM에 각각 저장하며 각각의 메타데이터는 Facebook에서 개발한 RocksDB에 저장합니다.

- Ozone Manager(OM, 오존 매니저) : NameSpace를 관리하며, 기존 HDFS가 모든 메타데이터를 Memory에서 관리한 반면, Ozone은 현재 작업중인 데이터의 메타데이터만을 Memory에서 관리하여 적은 Memory로 더 많은 작업을 수행할 수 있습니다. Client는 OM을 통해 파일에 대한 연산을 요청합니다. DataNode, SCM과 별도의 Node로 구성하고, Leader Node 1개, Follower Node 2개로 구성하며, 3개 Node는 RAFT(레프트) 합의 알고리즘을 통해 데이터를 복제해 하나의 Node에 장애가 발생해도 나머지 2개 Node가 동작합니다.

- Storage Container Manager(SCM, 스토리지 컨테이너 매니저) : SCM는 BlockSpace를 관리하며, Container를 생성하고 관리합니다. OM, DataNode와 별도 Node에 구성합니다.

- Container(컨테이너) : 실제 데이터 저장 영역으로, Block 단위로 처리하는 HDFS와 달리, Ozone은 Block의 집합인 Container 단위로 처리합니다. 복제 또한 Container 단위로 이뤄지고, 하나의 DataNode에 여러 개의 Container를 저장하며, Container 크기는 기본적으로 5GB로 운영됩니다. 데이터 복제는 RAFT의 Open-Source Java 구현체인 Ratis(레티스) 컴포넌트를 사용합니다.

- Recon Server(리콘서버) : Ozone 관리 및 모니터링 인터페이스로 파일 시스템에 대한 실시간 상태조회 화면을 제공합니다.


Ozone 결론 

- Ozone이 Hadoop HDFS를 대체하는 차세대 분산데이터 저장소이고, NameNode의 Memory를 효율적으로 사용하는 장점이 있으나, 구축 운영중인 Reference가 부족하고, 상세 자료가 미흡하여 당장 도입하기에는 이른 감이 있습니다.

- Ozone이 3.5억개 이상의 파일을 관리할 수 있으나, 일반 기업에서 3.5억개 이상 파일을 보유하기 어려우며, Cloud-Native를 지원하지만, 최신 HDFS에서도 Amazon S3, Azure Blob Storage, Azure Data Lake Storage, OpenStack Swift, Aliyun OSS, Tencent COS를 지원하므로, 보급 확대와 기술적 성장을 지켜봐야 할 Hadoop Echosystem입니다.

댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.