데이터 과학, 데이터 분석에 관심이 있다면 한 번쯤 접하게 되는 이름이 바로 '하둡(Hadoop)'이다.
하둡은 자바 기반의 분산 컴퓨팅 플랫폼으로, 핵심 파일 시스템인 HDFS(Hadoop Distributed File System) 덕분에 대용량의 데이터를 저장하고 다룰 수 있다.
어떻게 이런 관리가 가능할까?
하둡은 구글의 GFS(Google File System)를 기반으로 설계되었는데, 일반적인 파일 시스템을 가진 여러 데이터노드를 묶어서 하나의 분산 파일 시스템을 구축하도록 하였다.
따라서 파일 시스템을 쉽게 확장할 수 있게 되었고 대용량의 데이터를 저장하고 관리할 수 있게 되었다.
이런 HDFS의 설계에는 세 가지의 가정이 반영되었는데
첫 번째, 데이터의 풀 스캐닝을 지원하기 위해서 파일 순차 읽기(sequential read)의 속도가 빨라야 한다.
두 번째, 데이터를 옮겨서 계산을 수행하는 것이 아니라 저장된 곳에서 계산을 수행할 수 있도록 각 노드가 자신이 저장한 데이터의 위치 정보를 충분히 교환해야 한다.
세 번째, 노드에 결함(fault)은 소프트웨어 레이어에서 극복해야 한다.
또한 데이터는 HDFS 내부에 블록 형태로 저장되고, 블록은 HDFS에 의해 복제되어 여러 노드에 분산된다.
HDFS의 리플리케이션 메커니즘(여러 DB를 수직적인 구조로 구축하는 방법)은 단순히 여러 노드에 데이터를 저장시키는 것이 아니라, 여러 랙(rack)에 분산 저장되도록 하여 단일 노드나 단일 랙의 문제로 데이터가 유실되는 것을 방지한다.
데이터가 저장된 위치를 파악하고 계산이 진행될 장소를 시스템이 결정하기 때문에 데이터와 가까운 곳에서 작업이 실행되고, 이런 점 덕분에 데이터를 전송하는 데에 걸리는 시간을 단축할 수 있다.
데이터를 주고받으려면 클라이언트는 먼저 네임노드에 접속해 데이터를 요청한다.
이 때 파일을 읽거나 저장하려는 경우엔 필요한 블록의 위치를 요청하고 해당 블록을 저장하는 서버와 직접 통신한다.
이런 구조 덕분에 모든 데이터가 네임노드를 거쳐가지 않아도 되고, 시스템의 일부를 필요한 만큼만 사용할 수 있다.
참고 : 「하둡과 스파크를 활용한 실용 데이터 과학」, 오퍼 멘델리비치 외 2명
'스터디 > Data Analytics' 카테고리의 다른 글
[PySpark] Jupyter Notebook에서 PySpark 사용하기 (0) | 2022.02.25 |
---|---|
[Hadoop] YARN - 리소스 관리자와 스케줄러 (0) | 2022.02.24 |
[Hadoop] 하둡 설치하고 확인해보기 (0) | 2022.02.23 |
[Spark] 스파크 설치하고 csv 파일 불러오기 (0) | 2022.02.15 |
[Pandas] 판다스와 시리즈 기본 (0) | 2022.02.06 |