HDFS와 S3비교

궁금증

  • Hadoop은 Data Warehouse나 Data Lake로 많이 쓰는데, 저장 매체를 HDFS와 S3중 어떤게 더 나을까?

HDFS(Hadoop Distributed File System)란 ?

  • Hadoop 애플리케이션을 위한 기본 데이터 스토리지 시스템

  • Apache Software Foundation의 프로젝트 중 하나

  • fault-tolerant 파일 시스템으로 상용 하드웨어에서도 실행

  • 데이터 위치를 추적하는 NameNode와 데이터를 저장하고 검색하는 DataNode로 구성

  • 여러 노드에 replica가 분산 중복 저장되므로 노드 장애 시 데이터 손실을 방지

Amazon S3(Simple Storage Service)란 ?

  • 편리한 웹 기반 인터페이스의 객체 스토리지

  • AWS의 laas(Infrastructure as a Service) 솔루션

  • 우수한 확장성, 데이터 가용성, 보안, 성능

비교

Scalability

  • HDFS

    • 로컬 스토리지를 기존 노드에 수평적으로 확장할 수 있음

    • 클러스터에 새로운 노드를 추가함으로써 확장할 수 있음

  • S3

    • 스토리지를 데이터 사용량에 따라 자동적으로 확장할 수 있음

    • 사실상 스토리지 용량에 제한이 없음

Durability

  • HDFS

    • 데이터 내구성 통계 상 대규모 4,000 노드 클러스터에서 1개의 데이터 블록(64MB)를 잃을 확률은 0.00000057

    • 그러나 대부분의 클러스터는 수십개의 노트만 포함되어 있으므로 데이터 손실 가능성이 더욱 큼

  • S3

    • 연간 99.999999999%의 내구성 즉, 10,000년에 한 번씩 10,000,000개당 단일 객체 손실 가능성

Persistence

  • HDFS

    • EC2 인스턴스가 중지되면 데이터 유실

    • 단, EBS 볼륨으로 데이터 유지 가능하지만 추가 비용 발생

  • S3

    • 항상 지속성을 가짐

Price

  • HDFS

    • 데이터 무결성을 위해 기본적으로 데이터 블록 단위로 3개의 복사본을 저장하여 비용이 3배

    • 데이터 복사본을 줄일 수 있지만 복사본이 하나인 경우 데이터 무결성에 지장을 줄 수 있음

  • S3

    • 자체에서 데이터 백업 문제를 처리하므로 실제 필요한 스토리지에 대해서만 비용 지불

    • 압축 파일 저장을 지원하여 스토리지 비용 절감

Performance

  • HDFS

    • 동일한 시스템에 저장되고 처리되기 때문에 액세스 및 처리 속도 매우 우수

  • S3

    • 상대적으로 지연 시간이 높고, 데이터 처리량은 더 낮음

  • I/O Test

    • m1.xlarge 인스턴스 (4개의 임시 디스크) 기준

Security

  • HDFS

    • Kerberos를 통한 사용자 인증과 파일 시스템 권한을 통한 권한 부여 가능

    • 클러스터를 여러 NameSpace로 분할하여 특정 사용자에게 데이터 액세스 제한 가능

    • SSL을 통해 Amazon 인스턴스 제한 가능

  • S3

    • 보인 기능 내장으로 사용자 인증 지원

    • 버킷과 객체 소유자만이 데이터에 액세스 할 수 있음

    • 버킷 정책과 ACL(Access Control Lists)을 통해 사용자와 그룹에 추가 권한 부여 가능

    • SSL을 통해 데이터 암호화 가능

Limitations

  • HDFS

    • 모든 크기의 파일을 저장할 수 있지만 매우 작은 파일을 저장하는데 문제가 있음

    • 데이터를 해당 클러스터의 시스템에서만 사용할 수 있고, 외부 인스턴스에서 사용 불가

  • S3

    • 데이터는 Hadoop 클러스터와 독립적이며 여러 클러스터에서 동시 처리 가능하나, 최대 파일 크기가 5GB에 불과함

    • Parquet이나 ORC와 같은 Hadoop 스토리지 형식을 사용할 수 없음

정리

각자 장단점이 있고, 아래 용도에 맞게 사용하는게 맞는듯 하다.

  • HDFS

    • 빠른 처리속도와 파일 크기와 스토리지 형식에 제한이 없어야하는 경우 유리

  • S3

    • 뛰어난 확장성, 지속성 그리고 저렴한 비용을 요하는 경우 유리

Last updated