대용량 데이터(big data) 처리 관련 기술 요소
발췌 : http://wonchanlee.tumblr.com/post/5757863713/the-big-data-cookbook-big-data
Big data는 요사이 인터넷상의 신조어로 떠오르고 있습니다. 이것은 많은 현대적 웹서비스들이 다루는 대량의 데이터를 참조합니다. 이 글은 big data를 다루는 웹개발자들이 활용할 수 있는 몇가지 유용한 소프트웨어를 소개합니다.
당신은 구글이나 페이스북 스케일의 데이터를 운용하지 않아도 됩니다. 웹분석 서비스(우리의 pigdom과 같은), 검색엔진등 모든 프로세스 및 데이터를 저장하는 엄청난 양의 서비스를 모니터링하는데 활용할 수 있습니다.
위키페디아 인용:
Big data는 점점 커져서 간단한 데이터베이스 관리도구로는 관리하기 어려워진 데이터셋 이다. 현재 한계는 테라바이트, 엑사바이트, 제타바이트 데이터의 정렬이다.
이런경우 데이터 처리를 위한 많은 전통적인 접근법은 비현실적이거나 완전히 작게 쪼갭니다.
웹개발 커뮤니티는 이 모든 데이터를 핸들링 하기 위한 다른 방법을 찾기 시작했습니다. 이 놀라운 크기로 확장될 수 있는 새로운 소프트웨어를 개발했습니다.
big data를 처리하기 위해 어떤 다양한 요소들을 사용할 수 있을까? 우리는 이것들을 네가지 카테고리로 나누었습니다.
- 스토리지와 파일시스템
- 데이터베이스
- 질의(Querying)와 데이터 분석도구
- 스트리밍과 이벤트 처리
우리는 이것들이 아주 좋은 출발점이 될것이란걸 알아냈고, 여러분들이 이 목록에 자신의 의견을 댓글을 달아 추가해 주시길 희망합니다.
다시말해, 이 목록을 읽으시고 더많은 유용한것들을 추가해 주시기 바랍니다.
자 이제 시작해 봅시다.
스토리지와 파일시스템
당신이 대용량의 데이터를 저장할 필요가 있을때, 다중 서버로 확장될 수 있는 스토리지 솔루션을 원하게 될 것입니다.
- HDFS (Hadoop Distributed File System) – 오픈소스 하둡(Hadoop) 프레임워크의 일부인, HDFS는 구글 파일 시스템(GFS)에 의해 시작된 분산, 확장가능한 파일시스템입니다. 이것은 기반 운영체제 파일시스템의 상위에서 실행 되었으며, 페타바이트 스토리지까지 확장될 수 있도록 설계되었습니다. 하둡 프로젝트(앞으로 몇가지 다른 하둡컴포넌트들을 보게 될것입니다.)는 다수의 대형 공헌자들이 있습니다. 주요 공헌자중 하나는 야후(Yahoo)입니다. 하둡은 Yahoo, AOL, eBay, Facebook, IBM, Meebo, Twitter 와 많은수의 회사와 서비스에서 사용되고 있습니다.
- CloudStore (KFS : Kosmos File System) – Kosmix에서 만든 Google File System의 오픈소스 구현체 입니다. 이것은 하둡, 하이퍼테이블(Hypertable)과 함께 사용할 수 있습니다. CloudStore로 알려져 있으며 공헌자는 Quantcast입니다.
- GlusterFS – Gluster에서 개발된 무료, 확장가능한, 분산 파일 시스템 입니다.
데이터베이스들
MySQL과 같은 전통적인 데이터베이스들이 아직 많이 사용되고 있습니다. 대안으로 “웹 확장성”을 고려하여 설계된 데이터베이스들이 있습니다. 이들중 많은것들이 NoSQL 데이터베이스로 불리고 있습니다.
- HBase – 구글의 BigTable을 모델로 개발된 분산, 무정지(fault-tolerant) 데이터베이스 입니다. 아파치 아둡 프로젝트의 일부분으로 HDFS 위에서 실행됩니다.
- Hypertable – 구글의 BigTable에서 영감을 얻은 오픈소스 데이터베이스. 주목할만한 Hypertable의 사용자는 Baidu입니다.
- Cassandra – 분산 키-값 데이터베이스로서 페이스북에 의해 처음 개발되었습니다. 오픈소스로 릴리즈 되었으며, 지금은 아파치 프로젝트 산하에서 개발되고 있습니다. 카산드라는 Facebook, Digg, Reddit, Twitter와 Rackspace에서 사용되고 있습니다.
- MongoDB – 오픈소스로서 확장가능한 고성능 문서-지향(document-oriected)형 데이터베이스 입니다. 이것은 Foursquare, bit.ly, shutterfly, Etsy 와 Chartbeat에서 사용중입니다.
- Membase – 대화형 웹 어플리케이션을 위한 오픈소스 분산 키-값 데이터베이스 최적화 도구 입니다.
질의와 데이터 분석
이 모든 데이터를 접근하여 처리하고 분석을 할 능력이 없다면 쓸모가 없습니다.
- Hadoop MapReduce – 구글의 대용량 데이터셋의 분산처리를 위한 MapReduce 프레임워크의 오픈소스 버전입니다.
- Hive – 하둡에서 대용량 데이터셋의 질의와 분석을 위한 도구를 포함한 오픈소스 데이터 웨어하우스 인프라 스트럭처 입니다. SQL 쿼리와 비슷한 Hive QL이라는 언어를 지원합니다.
- Pig – 하둡에서 데이터 처리를 위한 고급언어로 사용됩니다. 우스갯말로 이 언어를 종종 Pig Latin이라고도 부릅니다.(역자주: 영어의 변형으로 은어의 기능을 한다.)
스트리밍과 이벤트 처리
대량의 데이터가 시스템내부로 흐른다면 당신은 이 데이터를 실시간으로 처리하고 반응하길 원할것입니다.
- S4 – 데이터의 연속된 스트림을 처리하기 위한 범용 분산 확장 플랫폼 입니다. 야후에 의해 개발되었고 2010년 오픈소스로 릴리즈 되었습니다. 이것은 아직 완전한 버전이 아니어서, 야후에서도 내부적으로만 사용중입니다.
- Esper – EsperTech에서 개발한 입력데이터의 연속된 스트림을 처리하기 위한 이벤트 처리 플랫폼 입니다.
- StreamInsight – 마이크로소프트의 SQL서버에 포함된 EST/CEP분야를 위한 도구.
스트리밍과 이벤트처리에 관해 이야기 할때, 당신은 두가지 용어를 반복해서 듣게 될 것입니다. EST, Event Stream Processing 과 CEP, Complex Event Processing. 지금은 이것만 알아 두도록 하십시요.
구글이 남긴것들
구글이 실제 생각보다 많지않은 소프트웨어를 공개했음에도 불구하고 big data분야에 어떤 영향을 끼쳤는지 알아보는것은 매우 흥미롭습니다.
많은 big data관련 오픈소스 프로젝트는 아파치재단의 하둡 프로젝트를 중심으로 진행되어왔습니다. 이것은 처음에 구글이 공개한 많은 백서에 기반한 구글 내부 소프트웨어를 대체하기 위한 시도로 시작되었습니다. (예를들어, 하둡은 GFS, BigTable과 MapReduce를 대체합니다)
다음 목록은 big data와 관련된 구글 소유의 소프트웨어들 입니다.
- GFS (Google File System) – 구글의 확장가능한 무정지 분산 파일 시스템. 처음부터 데이터중심 어플리케이션과 함께 사용되기 위해 설계 되었습니다.
- BigTable – GFS위에 구축된 분산 고성능 데이터베이스 시스템.
- MapReduce – 매우 큰 데이터 집합의 분산처리를 위한 프레임워크.
- Pregel – 수십억개의 노드로 구성된 큰 규모의 그래프를 분석하기 위한 프레임워크.
- Dremel – MapReduce를 위한 보조도구로서, Dremel은 확장가능하고, 대화식의 대용량 데이터 집합을 위한 ad-hoc 쿼리 시스템 입니다. 구글에 따르면, 이것은 수조단위의 테이블 행이 넘는 집합 쿼리를 수초내에 실행할 수 있으며 수천개의 CPU로 확장될 수 있습니다.
우리가 좀 더 위험을 감수한다면 곧 Pregel과 Fremel의 오픈소스 구현을 곧 사용할 수 있게 될 것입니다. 사실 이미 OpenDremel프로젝트는 시작이 되었습니다.
.