AWS S3을 공부하다가 S3와 HDFS의 차이점과 장단점이 궁금해졌다.
우선 HDFS(Hadoop Distributed File System)에 대해서 간단히 정리하고 비교해보려고 한다.
Hadoop Distributed File Sytem의 약자로 대규모 데이터를 저장하고 처리하기 위한 분산 파일 시스템이다.
빅데이터 처리를 위한 등장한 오픈소스로 Hadoop Ecosystem와 같이 데이터 처리를 위한 파일 시스템이다.
HDFS의 아키텍처로는 NameNode와 DataNode가 있다.
NameNode
DataNode
이 밖에 MapReduce, Yarn, Hive, Hbase 등 HDFS를 활용한 다양한 하둡 에코시스템 기술들이 있다.
HDFS의 replication의 경우 하나의 Block을 기본적으로 3개의 Replica로 저장한다 (replication factor = 3. 설정 변경 가능)
NameNode에서 복제본의 위치를 관리하며 DataNode의 장애가 발생하면 복제본을 사용하여 내구성과 가용성을 보장한다.
또한 NameNode와 DataNode는 물리적으로 가깝거나 동일한 경우가 많아서 Data Locality의 성격을 가지게 된다.
이를 통해 네트워크를 통한 접근이 비교적 S3보다 빠를 수 있다.
그렇다면 2개의 저장소를 비교해보자.
HDFS | S3 | |
Architecture | 분산 파일 시스템으로 여러 서버에 데이터를 분산 저장 | 객체 스토리지로 클라우드 기반 중앙 집중식 구조 |
Scalability | 노드를 추가해 수평적 확장 가능 (클러스터 관리 필요) | 거의 무한대로 확장이 가능 (클라우드 서비스로 관리 필요 X) |
Perpormance | Locality로 높은 처리량을 가지고 있다 | 객체 단위 접근으로 처리량 측면에서는 HDFS 비해 낮은 처리량 |
Cost | 초기 하드웨어와 유지비용 비용 | 사용한 만큼 비용을 지불하기때문에 효율적이다 |
Security | Kerberos 인증, 암호화 (직접 구현) | AWS의 보안 기능 활용 (IAM, 암호화, 버전 관리) |
이 밖에 다양한 특성들이 있겠지만 공부를 하면서 찾아서 정리한 내용들이다.
과거 큰 회사에서는 대용량의 데이터를 처리하고 운영하기 위해서 CDH를 통해 자체 hadoop cluster를 구축하고 운영하곤했었다.
큰 회사라면 Hadoop을 직접 운영하고 관리하는 것이 비용 측면에서 효율적일 수 있을 것 같다.
하지만 규모가 작고 빠른 iteration으로 서비스를 출시하고 운영해야하는 스타트업이나 작은 규모의 조직이라면 비즈니스에 더욱 집중할 수 있는 Cloud Storage 서비스가 훨씬 효율적이라고 생각이 든다.
특히 요즘은 저장공간에 대한 cost가 부담스럽지 않기때문에 어떤 저장 Storage를 선택하는냐도 중요하지만 그 뒷단이 훨씬 더 중요하지 않을까 생각이 들었다.
어떤 기술 셋을 사용해 데이터를 처리하고 분석하는 거나 어떤 비즈니스 요구사항에 맞는 파이프라인들을 구축하는지가 더더욱 중요한 역량이지 않을까 싶다.
AWS S3 Object Lambda 공부하기 (1) | 2024.08.18 |
---|---|
AWS EBS, AWS EFS 공부하기 (feat. S3) (2) | 2024.08.18 |
AWS S3 Storage Class (0) | 2024.08.18 |
AWS S3 Versions, Lifecycle (1) | 2024.08.18 |
Amazon S3 개념 (AWS S3) (3) | 2024.08.17 |