제 11 장 하둡 에코시스템
하둡이란? (1) 하둡은 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크 하둡은 2005년에 더그 커팅(Doug Cutting)이 구글이 논문으로 발표한 GFS(Google File System)와 맵리듀스(MapReduce)를 구현한 결과물 처음에는 오픈소스 검색 엔진인 너치(Nutch)에 적용하기 위해 시작됐다가 이후 독립적인 프로젝트로 만들어졌고, 2008년에는 아파치 최상위 프로젝트로 승격되었음
하둡이란? (2) 하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하고, 분산 처리 시스템인 맵리듀스를 이용해 데이터를 처리 더그 커팅이 자신의 아들이 노란 코끼리 장난감 인형을 하둡이라고 부르는 것을 듣고 하둡이라는 이름을 지었음. 그래서 하둡의 로고로 노란 코끼리가 사용되는 것임 이러한 프로젝트 네이밍 룰 때문에 이후 하둡 관련 서브 프로젝트도 모두 동물과 관련된 이름을 사용
HDFS & 맵리듀스
왜 하둡인가? (1) 정형 데이터의 경우 기존 RDBMS에 저장할 수 있지만 웹 로그 같은 비정형 데이터를 RDBMS에 저장하기에는 데이터 크기가 너무 큼 하둡은 오픈소스 프로젝트이기에 소프트웨어 라이선스 비용에 대한 부담이 없음 값비싼 유닉스 장비를 사용하지 않고, x86 CPU에 리눅스 서버면 얼마든지 설치하고 운영할 수 있음. 데이터 저장 용량이 부족할 경우, 필요한 만큼 리눅스 서버만 추가하면 됨 하둡은 데이터의 복제본을 저장하기 때문에 데이터의 유실이나 장애가 발생했을 때도 데이터의 복구가 가능함
왜 하둡인가? (2) 기존 RDBMS는 데이터가 저장된 서버에서 데이터를 처리하는 방식이지만, 하둡은 여러 대의 서버에 데이터를 저장하고, 데이터가 저장된 각 서버에서 동시에 데이터를 처리하는 방식임 하둡의 저렴한 구축 비용과 비용 대비 빠른 데이터 처리, 장애를 대비한 특성은 많은 기업들의 구미를 당기게 했음 하둡은 초기에 야후에서만 주도적으로 사용됐지만, 현재는 아마존, 이베이, 페이스북, 마이스페이스 등 글로벌 서비스 업체에서 주로 이용함 국내에서는 NHN, DAUM과 같은 포털 기업과 KT, SKT 같은 통신업체에서 사용함
왜 하둡인가? (3) EMC, IBM, 테라데이터, 오라클, 델, 마이크로소프트, HP 등은 하둡과 관련된 제품을 쏟아내며 마케팅을 강화 미국에서는 클라우데라, 호튼웍스와 같은 하둡 컨설팅 업체들이 활발히 활동 국내에서는 그루터, 넥스알, 클라우다인 같은 기업들이 하둡과 연계한 자체 솔루션을 선보이고 있음
하둡 에코시스템 (1) 하둡은 비즈니스에 효율적으로 적용할 수 있게 다양한 서브 프로젝트가 제공됨. 이러한 서브 프로젝트를 바탕으로 하둡 에코시스템이 구성되었음
하둡 에코시스템 (2) 분산 데이터를 저장하는 HDFS와 분산 데이터를 처리하는 맵리듀스가 하둡 코어 프로젝트에 해당하며 나머지는 모두 하둡의 서브 프로젝트 Zookeeper(분산 코디네이터)는 분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공하는 시스템 Oozie(워크플로우 관리)는 하둡 작업을 관리하는 워크플로우 및 코디네이터 시스템 HBase(분산 데이터베이스)는 HDFS 기반의 컬럼 데이터베이스이며 구글의 BigTable 논문을 기반으로 개발되었음. 실시간 랜덤 조회 및 업데이트가 가능함. 얼마 전 NHN이 모바일 메신저 라인에 HBase를 적용한 시스템 아키텍처를 발표했음
분산데이터베이스 (1)
분산데이터베이스 (2)
분산데이터베이스 (3)
분산데이터베이스 (4)
분산데이터베이스 (5)
분산데이터베이스 (6)
분산데이터베이스 (7)
분산데이터베이스 (8)
분산데이터베이스 (8)
분산데이터베이스 (9)
분산데이터베이스 (10)
분산데이터베이스 (11)
분산데이터베이스 (12)
분산데이터베이스 (13)
분산데이터베이스 (14)
분산데이터베이스 (15)
분산데이터처리 (1)
분산데이터처리 (2)
분산데이터처리 (3)
분산데이터처리 (4)
분산데이터처리 (5)
분산데이터처리 (6)
분산데이터처리 (7)
분산데이터처리 (8)
분산데이터처리 (9)
분산데이터처리 (10)
분산데이터처리 (11)
분산데이터처리 (12)
분산데이터처리 (13)
분산데이터처리 (14)
하둡 에코시스템 (3) Pig(하이레벨 스크립트 언어 for 데이터 분석)는 복잡한 맵리듀스 프로그래밍을 대체할 Pig Latin 이라는 자체 언어를 제공함. 맵리듀스 API를 크게 단순화 했으며 SQL 과 유사한 형태로 설계되었음. 야후에서 개발됨 Hive(데이터 분석)는 페이스북에서 개발된 하둡 기반의 DW용 솔루션임. SQL과 매우 유사한 HiveQL 이라는 쿼리를 제공함. HiveQL은 내부적으로 맵리듀스 잡으로 변환되어 실행됨 Mahout(데이터 마이닝)은 하둡 기반으로 데이터 마이닝 알고리즘을 구현한 오픈소스임. Classification, clustering, 추천 및 협업 필터링, 회귀 분석, 차원 리덕션, 진화 알고리즘 등을 지원함
하둡 에코시스템 (4) Hcatalog (메티데이터 관리)는 하둡으로 생성한 데이터를 위한 테이블 및 스토리지 관리 서비스 Avro(직렬화)는 RPC(Remote Procedure Call)와 데이터 직렬화를 지원하는 프레임워크. JSON을 이용해 데이터 형식과 프로토콜을 정의하며 작고 빠른 바이너리 포맷으로 데이터를 직렬화 함
하둡 에코시스템 (5) Chukwa(비정형 데이터 수집)는 분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장하는 플랫폼. 분산된 각 서버에서 에이전트를 실행하고 콜렉터가 에이전트로부터 데이터를 받아 HDFS에 저장함 Flume(비정형 데이터 수집)은 Chukwa 처럼 분산된 서버에 에이전트가 설치되고, 에이전트로부터 데이터를 전달받는 콜렉터로 구성. 차이점은 전체 데이터의 흐름을 관리하는 마스터 서버가 있어서 데이터를 어디서 수집하고 어떤 방식으로 전달할지를 동적으로 변경할 수 있음. 클라우데라에서 개발 Scribe(비정형 데이터 수집)는 페이스북에서 개발한 데이터 수집 플랫폼이며, Chuckwa 와는 다르게 중앙 집중 서버로 전송하는 방식을 사용함
하둡 에코시스템 (5) Scoop(대용량 데이터 전송 솔루션)은 HDFS, RDBMS, DW, NoSQL 등 다양한 저장소에 대용량 데이터를 신속하게 전송할 수 있는 방법을 제공함 Hiho(대용량 데이터 전송 솔루션)는 Sqoop과 같은 대용량 데이터 전송 솔루션이며 GitHub에 공개돼 있음. 오라클과 MySQL의 데이터 전송만 지원함
하둡 에코시스템 (6) Impala는 클라우데라에서 개발한 하둡 기반의 실시간 SQL 질의 시스템이며, 맵리듀스를 사용하지 않고 자체 개발한 엔진을 사용해 빠른 성능을 보여줌. 데이터 조회를 위한 인터페이스로 HiveQL을 사용하며 Hbase와도 연동할 수 있음 Tajo는 고려대학교 박사 과정 학생들이 주도해서 개발한 하둡 기반의 SW 시스템이며, 2013년 아파치 재단의 인큐베이션 프로젝트로 선정됐음. 데이터 저장소는 HDFS를 사용하되, SQL 언어를 사용하여 실시간으로 데이터를 조회할 수 있음
NoSQL 이란? NoSQL이란 관계형 데이터 모델과 SQL문을 사용하지 않는 데이터베이스 시스템 혹은 데이터 저장소를 의미함 기존 RDBMS가 분산 환경에 적합하지 않기 때문에 이를 극복하기 위해 NoSQL이 고안되었음 NoSQL의 데이터베이스는 단순히 키와 값의 쌍으로만 이뤄져 있고, 인덱스와 데이터가 분리되어 별도로 운영됨. 또한 조인이 없으며, 샤딩(Sharding)이라는 기능을 이용해 데이터를 분할해서 다른 서버에 나눠 저장함 MongoDB, HBase, CouchDB, Casandra, Redis 등 다양한 NoSQL 솔루션이 출시되고 있으며, 국내에서는 MongoDB가 가장 많이 사용됨
Hadoop의 사용 예