데이터 저장소와 분석
디스크에서 데이터를 읽는데 시간을 줄일 수 있는 가장 확실한 방법은 무엇일까?
바로 여러개의 디스크에서 동시에 데이터를 읽는것이다.
과거에는 데이터셋의 크기가 크지 않기에, 단지 읽는 속도를 빠르게 하기 위해 디스크를 100개 쓰며, 각 디스크 별로 1/100의 공간을 쓴다면 이는 낭비이다.
그러나 현대에는 1TB의 데이터셋 100개가 존재하고,이는 각 디스크의 공간을 모두 사용하며 나눠 저장하고 공유할수 있다면 충분한 의미가 있다.
여러 개의 디스크에 데이터를 병렬로 쓰거나 읽으려면 어떤 문제를 고려해야 할까?
1. 하드웨어 장애: (사용하는 하드웨어 수 증가 → 어디선가 장애가 발생할 확률 증가)
여러곳에 복사본을 보관하여 데이터 손실을 방지하는 RAID 방식과 달리, HDFS는 조금 다른 방식으로 해결하고 있다.(추후에 알아보자)
2. 분산된 데이터 병합 : 데이터 분석을 위해 100개로 나눠서 저장한 데이터를 병합해야 한다.
맵리듀스는 데이터 IO를 key-value 쌍의 계산으로 변환한 추상화된 프로그래밍 모델을 제공한다.
"하둡은 안정적이고 확장성이 높은 저장 및 분석 플랫폼을 제공한다."
하둡의 처리 패턴
하둡 에코시스템은 분산 컴퓨팅과 대규모 데이터 처리를 위한 기반 시설이다.
최초의 하둡은 일괄 처리를 위해 만들어졌으나 시간이 흐르며 다양한 처리 패턴이 생겨났다.
- HBase : HDFS를 기본 저장소로 하는 키-값 저장소이며, 온라인 읽기/쓰기 및 일괄처리를 지원
- YARN : 클러스터 자원 관리 시스템 (Yet Another Resource Negotiatior) 맵리듀스 뿐만 아니라 다른 분산 프로그램도 하둡 클러스터에 저장된 데이터를 처리할 수 있게 해줌.
발전 과정에서 등장한 하둡 기반에서 작동되는 다양한 처리 패턴
- 대화형 SQL : 맵리듀스 대신 Impala, Tez 기반의 분산 쿼리 엔진을 사용 대용량 데이터셋에 대한 확장성이 있으면서 하둡 기반의 SQL 쿼리를 실행할 때 빠른 응답 속도를 가짐
- 반복 처리 : ML과 같은 알고리즘에서 스파크와 같은 기술을 통해 디스크가 아닌 메모리에서 데이터셋을 보존하며 사용
- 스트림 처리 : 실시간 실행 및 경계가 없는 스트림 데이터를 분산 계산하여 그 결과를 저장하거나 내보냄. ex) Storm, Spark Streaming, Samza
- 검색 : Solr(솔라), 하둡 클러스터에서 실행되며 문서를 색인하여 HDFS에 저장 후 이를 기반으로 검색 쿼리 제공
Hadoop VS RDBMS
| RDBMS | 맵리듀스 | |
| 데이터 크기 | GB | PB |
| 데이터 유형 | 정형 | 정형, 반정형, 비정형 |
| 접근 방식 | 대화형, 일괄 처리 | 일괄 처리 |
| IO | 여러 번 읽고 쓰기 | 한 번 쓰고 여러 번 읽기 |
| 트랜잭션 | ACID | - |
| 구조 | 쓰기 기준 스키마 | 읽기 기준 스키마 |
| 무결성 | 높음 | 낮음 |
| 확장성 | 비선형 | 선형 |
RDBMS에서 전통적으로 사용되는 *B-트리가 무엇이며, 왜 데이터 일부 변경시 유리하며 많은 부분을 변경에는 비효율적인지 생각해보자.
Grid라는 단어가 뜻하듯 그리드컴퓨팅이란 지리적으로 분산된 컴퓨팅 자원을 모아 하나의 거대 가상 컴퓨터처럼 사용한다는 개념이다. 언뜻 보면 분산 처리와 유사하게 보일 수 있지만, 유후 자원을 모아 사용한다는 차이점이 있으며 주로 조직이나 기관에서 관리한다.
이와 반대로 공공 연구등을 위해 개인 PC에서 자발적으로 자원을 기부하는 경우를 자발적 컴퓨팅이라고 한다.
Hadoop VS 그리드 컴퓨팅
그리드 컴퓨팅과 고성능 컴퓨팅(HPC)은 전통적으로 다음과 같은 방식으로 작업을 처리합니다.
- API를 통한 데이터 처리: 주로 MPI(Message Passing Interface)와 같은 로우레벨(Low-level) API를 사용하여 데이터를 처리
- MPI의 특징: 개발자에게 상당한 제어권을 부여하여 복잡하고 정밀한 병렬 처리 로직을 구현할 수 있게 한다. 하지만 이는 개발자가 고수준 분석 알고리즘 뿐만 아니라, 저수준 C 루틴 및 소켓 통신을 통해 데이터 흐름의 메커니즘을 명확히 다뤄야함을 의미한다. 즉, 개발 복잡도가 높습니다.
- 공유 파일 시스템 기반: 주로 SAN(Storage Area Network)등으로 연결된 공유 파일 시스템에 데이터를 저장하고, 여러 클러스터 머신이 이 중앙 저장소에 접근하여 작업을 분산 처리 한다.
- 계산 작업에 유리:이는 계산 자체가 복잡하고 노드 간의 빈번한 데이터 교환이 필요한 작업(강하게 결합된 병렬 작업)에는 효율적일 수 있다.
- 데이터 접근의 병목 현상:그러나 수백 기가바이트(GB) 단위 이상의 대규모 데이터 접근할 때 심각한 병목 현상(Bottleneck)이 발생한다. 모든 계산 노드가 중앙 저장소에 동시에 접근하려 하면서 I/O 대역폭이 포화 상태가 되고, 이로 인해 계산 노드가 데이터를 기다리며 빈둥거리는(idle) 상황이 발생하게 된다.
하둡은 어떻게 접근할까?
하둡은 위에서 언급된 그리드/HPC의 대규모 데이터 처리 한계를 극복하기 위해 다음과 같은 새로운 패러다임을 제시했다.
- 최상위 수준의 데이터 처리: 하둡의 데이터 처리 프레임워크(ex:맵리듀스,스파크)는 최상위 수준에서만 동작 한다.
- 개발 편의성:개발자는 내부 데이터 흐름이나 로우레벨 통신 메커니즘에 신경을 쓰지 않아도 된다. 복잡한 분산 처리의 세부 사항은 하둡 프레임워크가 추상화하여 자동으로 관리한다.이는 개발자가 오직 비즈니스 로직(무엇을 계산할것인가)에만 집중할수 있게 한다.
- 데이터 지역성(Data Locality): 하둡의 데이터 처리 핵심 원칙이다.
- 데이터와 계산 노드의 배치: 데이터를 처리하는 계산 노드와 데이터를 함께 배치한다. 즉, 데이터가 이미 계산 노드의 로컬 디스크에 존재하거나, 적어도 같은 랙(Rack)내의 다른 노드에 존재하도록 한다.
- 접근 속도 향상: 데이터를 네트워크를 통해 멀리서 가져오는 대신, 로컬에서 직접 접근하므로 데이터 접근 속도가 매우 빠르다. 이는 대규모 데이터 처리 시 발생하는 I/O 병목 현상을 근본적으로 해결한다.
- 네트워크 대역폭 보존:데이터가 네트워크를 덜 이동하므로 네트워크 대역폭을 보존할 수 있다.하둡은 네트워크 토폴로지(어떤 노드가 어떤 노드와 가까이 있는지)를 명확하게 모델링 하는 방법을 통해 네트워크 대역폭을 효율적으로 사용하도록 노력한다.
MPI와 대비되는 맵리듀스의 강점
MPI는 개발자가 자신의 체크포인트와 장애 복구를 명확하게 관리할 것을 요구한다.
반면, 하둡 맵리듀스는 특히 대규모 클러스터 환경에서의 안정성을 염두에 두고 설계되었음.
- 비공유 아키텍처: 맵리듀스는 각 태스크(Task)간의 상호 의존성이 없는 비공유(Shared-nothing) 아키텍처를 가진다. 각 태스크는 독립적으로 실행되며, 다른 태스크의 결과에 직접적으로 의존하지 않는다.
- 자동 장애 감지 및 복구: 이러한 아키텍처 덕분에 맵리듀스는 실패한 태스크를 자동으로 감지하여, 장애가 없는 다른 머신(노드)에 재배치하여 실행하도록 구현되어 있다.
- 개발자의 부담 경감: 결과적으로 개발자는 개별 태스크의 실패에 대해 크게 고민하지 않아도 된다.시스템이 알아서 실패를 처리하고 복구하므로,개발자는 안정적인 코드 작성보다는 비즈니스 로직 구현에 더 집중할 수 있다.
결론적으로, 그리드 컴퓨팅과 HPC가 고도로 정밀한 계산과 최단 시간 해결에 강점을 가진다면, 하둡은 수백 기가바이트에서 페타바이트에 이르는 대규모 데이터의 효율적인 저장 및 처리, 특히 데이터 I/O 병목 현상 해결과 장애 허용 능력에서 독보적인 강점을 가진다. 이는 대용량 데이터 분석이라는 현대의 빅데이터 요구사항에 최적화된 설계 덕분이다.
Hadoop VS 자발적 컴퓨팅
"SETI@home"이란 외계 지적 생명체 탐사 프로젝트로, 대표적인 자발적 컴퓨팅중 하나다.
외계인을 찾기 위해,자원 봉사자들이 컴퓨터가 쉬고 있을 때 CPU의 연산력을 제공해 주는것이다.
Chunk 단위로 문제들을 분리해서 전 세계의 컴퓨터로 보낸다.
집에 있는 일반적인 컴퓨터에서 각 문제를 풀고 결과를 서버로 전송하고, 클라이언트는 새로운 작업을 받는다.
봉사자가 의도적으로 나쁜 마음을 먹을 수 있기에 3대의 컴퓨터에 같은 작업을 보내고, 둘 이상의 결과가 같아야 인정해준다.
병렬처리를 위해 문제를 쪼갠다는 부분은 맵리듀스와 비슷해 보이지만, 큰 차이가 있다.
자발적 컴퓨팅: CPU중심 연산 계산 시간보다 결과를 전송하는 시간이 빠르기에 전 세계 수십만대의 컴퓨터에서 실행한다면 유의미하다. 다만 연결 속도가 가변적이고, 데이터 지역성이 없는 신뢰할 수 없는 머신에서 오랜 시간이 걸리는 계산을 실행함.
'0️⃣Algorithm&자료구조&codingTest > Book&Study' 카테고리의 다른 글
| [하둡 완벽 가이드] - PART1 03장 하둡 분산 파일시스템 HDFS (1) | 2026.02.02 |
|---|---|
| [하둡 완벽 가이드] - PART1 02장 맵리듀스 (0) | 2026.02.01 |
| [견고한 데이터엔지니어링] - 4장 데이터 엔지니어링 수명 주기 전체에 걸친 기술 선택 (0) | 2026.01.30 |
| [견고한 데이터엔지니어링] - 3장 우수한 데이터 아키텍처 설계 (0) | 2026.01.29 |
| [견고한 데이터엔지니어링] - 2장 데이터 엔지니어링 수명 주기 (0) | 2026.01.28 |