Hadoop The Definitive Guide - Chap1 하둡과의 만남
Hadoop The Definitive Guide은 하둡 운영/사용하면 읽어야할 바이블 같은 책이다.
http://www.yes24.com/Product/Goods/36151445
하둡 완벽 가이드 - YES24
★ 곁에 두고 찾아보는 하둡 최고의 바이블 개정 4판 전격 출간! 하둡 프로젝트의 커미터이자 핵심 설계자인 톰 화이트가 집필한 이 책은 하둡 창시자인 더그 커팅을 비롯한 프로젝트별 전문가
www.yes24.com
Chap1~24까지 필요한 부분에 대해서 정리하며 읽을 예정이며, 3개월을 목표로 잡고 있다.
이 책을 읽는 목적은 데이터 관련 백엔드를 개발하다보면 자연스럽게 빅데이터를 활용하게 되고, 이때 자주 사용하는 하둡 플랫폼에 대해서 공부해보면 좋을 것 같다는 생각이 들어서 시작하게 되었다. 스터디를 수행하면서 이야기나온 부분들도 함께 정리하며 다른 사람들은 어떻게 이해하였고, 어떤 부분들이 좀 더 공부가 필요한지를 알게 될 것 같다.
Chapter 1 - 하둡과의 만남
데이터 저장소와 분석
하드 디스크의 용량은 시간이 지남에 따라 엄청나게 증가했지만 데이터를 읽는 속도는 그에 미치지 못하고 있다.
1990년대에는 일반적인 디스크는 1,370MB를 저장하고 초당 4.4MB의 전송 속도를 가졌기 때문에 대략 5분(1,370/4.4초) 정도 걸렸지만, 현재는 디스크의 용량이 1TB를 저장하고 초당 100MB의 전송 속도를 가져서 대략 2시간 반 이상이 소요된다. 디스크 증가 속도에 비해 전송 속도 증가는 1/50 수준이다.
단일 디스크의 데이터를 읽는데 많이 걸리는 이 문제는 여러 개의 디스크에서 동시에 데이터를 읽음으로써 해결이 가능하다.
이처럼 여러 개의 디스크를 병렬로 쓰거나 읽으려면 몇몇 문제를 고려해야한다.
- 하드웨어 장애
많은 하드웨어를 사용 → 장애 발생 가능성 증가로 이어진다. 데이터 손실로 이어질 수 있는 이 문제를 막기위해서는 데이터를 여러 곳에 복제하는 방법이 있다. 하드웨어 백업을 위해 널리 알려진 RAID(Redundant Arrays of Inexpensive Disks) 기술이 있지만 하둡의 파일 시스템인 HDFS에서는 다른 방식을 사용한다. - 분할된 데이터의 결합
다중 출처의 데이터를 병합하는 기능을 제공하는 것과 이에 대한 정합성(데이터간 모순이 없음을 보장하는 성질)을 보장하기 위해 맵리듀스를 사용한다. 맵리듀스는 디스크에서 데이터를 읽고 쓰는 문제를 키-값 쌍의 계산으로 변환한 추상화된 프로그래밍 모델이다.
요약하자면 하둡은 안정적이고 확장성이 높은 저장 및 분석 플랫폼을 제공한다.
일괄 처리를 넘어서
하둡은 맵리듀스를 활용한 일괄 처리 시스템이고 대화형 분석에는 적합하지 않다. 일반적으로 질의를 처리하는데 시간이 많이 걸려 오프라인 용도로 적합하다고 볼 수 있다. 최초의 하둡은 HDFS와 맵리듀스를 결합하여 일괄 처리를 위한 시스템으로 만들어졌지만, 현재는 수많은 에코시스템 프로젝트를 지칭하는 말로 사용되고 있다.
- HBase - 온라인 접근 지원하는 시스템으로 키-값 저장소로 활용
- YARN - 클러스터 자원 관리 시스템으로 하둡 클러스터에 저장된 데이터를 처리할 수 있도록 해줌
- Impala, Hive - 대화형 SQL 제공
- Spark - 반복 처리에 유용한 데이터 처리 프레임워크
- Stom, Spark Streaming, Samza - 스트림 처리
- Solr - 검색
많은 에코시스템들이 같이 사용되어 일괄 처리를 넘어 다양한 처리 패턴을 수행할 수 있다.
다른 시스템과의 비교
관계형 데이터베이스 관리 시스템
하둡은 여러 개의 디스크를 사용하여 대규모 처리를 수행한다고 앞서 말했다.
그렇다면 하둡을 사용하지 않고 기존에 사용하는 데이터베이스에서 여러 개의 디스크를 사용하여 대규모 분석을 하는 것은 왜 불가능할까?
위의 질문에 대한 답은 탐색 시간은 전송 속도보다 발전이 더디다. 라는 것이다. 탐색은 데이터를 읽거나 쓸 때 디스크의 헤더를 디스크의 특정 위치로 이동시키는 조작이며 전송 속도는 디스크의 대역폭과 관련되어 있다.
관계형 데이터베이스에서는 일부 레코드를 변경하는 작업이 대부분이기 때문에 탐색을 위해 전통적인 B-트리를 사용한다. B-트리의 경우 상당 부분이 변경될 때는 데이터베이스를 재구성하기 위해 Sort/Merge를 사용해야하므로 맵리듀스보다 효율적이지 않게 된다.
관계형 데이터베이스는 상대적으로 작은 양의 데이터를 낮은 지연 시간에 추출하고 변경하기 위해 데이터셋을 색인하기 때문에 특정 쿼리와 데이터 변경에 적합하지만, 맵리듀스는 전체 데이터셋을 분석할 필요가 있는 문제에 적합하다.
아래는 전통적인 관계형 데이터베이스와 맵리듀스를 비교한 표이다.
전통적인 RDBMS | 맵리듀스 | |
데이터 크기 | 기가바이트 | 페타바이트 |
접근 방식 | 대화형과 일괄 처리 방식 | 일괄 처리 방식 |
변경 | 여러 번 읽고 쓰기 | 한 번 쓰고 여러 번 읽기 |
트랜잭션 | ACID | 없음 |
구조 | 쓰기 기준 스키마 | 읽기 기준 스키마 |
무결성 | 높음 | 낮음 |
확장성 | 비선형 | 선형 |