IT일반

빅데이터 기술

영웅왕 2014. 12. 27. 16:53

빅데이터

빅데이터 기술

구글은 빅데이터를 효과적으로 처리하기 위한 전략으로 컴퓨터 장비는 가능한 한 값싼 것을 사용하고 그 성능을 최대한 끌어 낼 수 있는 소프트웨어는 자신들이 직접 개발하는 전략을 선택했다. 이 과정에서 빅데이터 처리 기술인 분산파일 시스템과 맵리듀스가 새롭게 개발되었다.

1. 구글의 빅데이터 처리 기술

웹 환경은 기존의 전통 방식으로는 효과적으로 처리하기 어려운 대규모 데이터가 존재하는 대표적인 곳이다. 웹에서 검색이란 규격이 일정하지 않은 여러 종류의 데이터가 대규모로 쌓여 있는 데이터 더미에서 원하는 내용을 효과적으로 빠른 시간 안에 찾는 것이 필수적이다. 웹 검색엔진 개발자들은 이러한 문제를 해결하기 위해 다양한 시도를 했다.

구글(Google)은 대규모 데이터를 효과적으로 처리하기 위한 전략으로 컴퓨터 장비(hardware)는 가능한 한 값싼 것을 사용하고 그 성능을 최대한 끌어 낼 수 있는 소프트웨어(software)는 자신들이 직접 개발하는 전략을 선택했다(니시다 케이스케, 2009). 컴퓨터 성능을 향상시키기 위해서는 성능이 더 좋은 장비를 도입하는 스케일 업(scale-up) 방식과 장비의 수를 늘리는 스케일 아웃(scale-out) 방식이 있는데 구글은 후자를 택했다.

구글의 검색엔진 기술은 대량의 정보를 효과적으로 저장하기 위한 분산파일 시스템(GFS, Google File System), 대용량 데이터의 읽기와 쓰기를 위한 분산 스토리지 시스템인 빅테이블(Bigtable), 분산 데이터 처리를 위한 맵리듀스(MapReduce)로 요약할 수 있다.

분산파일 시스템(GFS)은 여러 대의 컴퓨터를 조합해 대규모 기억장치(storage)를 만드는 기술이다. 웹 검색엔진의 경우 전 세계에 존재하는 엄청난 규모의 웹 페이지를 저장해야 한다. 인터넷 상 데이터는 그 증가 속도가 매우 빠르기 때문에 대규모 데이터를 안전하게 저장하고 효율적으로 처리하기 위해서는 다수의 하드디스크를 조합해 데이터를 저장하는 새로운 기술이 필요하다(니시다 케이스케, 2009). 분산파일 시스템은 이를 위해 개발된 구글의 독자적인 기술이다.

구글은 가격이 저렴한 하드웨어를 대량으로 이용하기 때문에 고장 발생을 전제로 시스템을 설계한다. 분산파일 시스템은 이를 위해 항상 파일을 여러 개 복사해 저장한다. 또한 파일의 내용과 위치에 대한 정보도 여러 개의 복사본을 만들어 저장한다. 이렇게 파일의 내용과 정보가 여러 대의 컴퓨터에 분산 저장되기 때문에 검색 시간도 단축되고 여러 곳에서 동시에 검색이 이루어져도 어느 한 곳에 작업량이 집중되지 않는다. 예를 들어 한국에 있는 이용자가 특정 단어를 검색하면 저장된 복수의 정보 중에서 이용자와 가장 가까운 곳에 있는 정보를 찾아내 검색하게 된다. 한 대의 컴퓨터가 고장이 나도 거기에 담겨 있는 정보는 다른 곳에 복사본이 존재하기 때문에 데이터 손실의 염려도 없다.

빅테이블은 구조화된 데이터(Structured Data) 처리를 위한 분산 스토리지 시스템(A Distributed Storage System)이다(Fay Chang, 2006). 웹 검색과 같은 대규모의 복잡한 데이터 구조에서 효율적으로 읽고 쓰기 위해 빅테이블은 기존의 관계형 데이터베이스와 달리 복잡한 구조를 가지고 있다. 관계형 데이터베이스가 테이블(Table), 로(Row), 칼럼(column)이라는 간단한 구조로 구성되어 있는 반면 빅테이블은 칼럼 대신에 로 키(Row Key)와 칼럼 패밀리(column family), 타임 스탬프(time stamp)와 같은 복잡한 구조로 구성되어 있다. 빅테이블은 이러한 기능을 이용해 테이블을 종횡으로 무한정 늘려갈 수 있다(Fay Chang, 2006).

맵리듀스는 효율적인 데이터 처리를 위해 여러 대의 컴퓨터를 활용하는 분산 데이터 처리 기술이다(Dean & Ghemawat, 2004). 맵리듀스는 이름에서 짐작할 수 있듯이 맵(Map)과 리듀스(Reduce)의 두 과정으로 구성되어 있다. 먼저 맵 단계에서는 대규모 데이터를 여러 대의 컴퓨터에 분산해 병렬적으로 처리해 새로운 데이터(중간 결과)를 만들어낸다. 리듀스 단계에서는 이렇게 생성된 중간 결과물을 결합해 최종적으로 원하는 결과를 생산한다. 리듀스 과정 역시 여러 대의 컴퓨터를 동시에 활용하는 분산처리 방식을 적용한다.

맵리듀스 처리 과정을 쉽게 이해하기 위해 어떤 문서에 존재하는 특정 단어의 숫자를 계산하는 작업을 생각해보자. 맵단계에서는 문서의 내용을 하나하나의 단어로 분해한다. 만약 이 단어가 우리가 찾는 특정한 단어라면 숫자 1을 부여한다. 이 작업을 여러 대의 컴퓨터가 병렬적으로 처리하면 순식간에 숫자 1로 구성된 중간 결과물이 생성된다. 리듀스 단계에서 이렇게 생성된 중간 결과를 모두 합치면 원하는 단어의 개수를 얻게 된다(O'Reilly Media, 2012).

구글은 분산 데이터 처리 프로그램을 쉽게 사용할 수 있도록 소잴(Sawzall)이라는 프로그램 언어를 새로 개발했다(Rob Pike, 2005). 이 언어는 관계형 데이터베이스(RDB, Relational Database)에서 간단한 문장으로 데이터 처리를 위한 프로그램을 작성할 목적으로 사용되고 있는 구조화 질의 언어(SQL, Structured Query Language)와 유사하다. 데이터 통계와 로그 분석 등 반복 사용하는 프로그램 업무를 간단한 명령어로 처리할 수 있다.

2. 하둡

빅데이터 처리 언어인 하둡(Hadoop)을 처음 개발한 더그 커팅(Doug Cutting, ?~ )

빅데이터 처리 언어인 하둡(Hadoop)을 처음 개발한 더그 커팅(Doug Cutting, ?~ )ⓒ 커뮤니케이션북스

하둡(hadoop)은 대용량의 데이터 처리를 위해 개발된 오픈소스 소프트웨어다(open-source software). 하둡은 야후(Yahoo)의 재정지원으로 2006년부터 개발되었으며 현재는 아파치(Apache) 재단이 개발을 주도하고 있다(O'Reilly Media, 2012). 하둡은 구글의 분산 파일 시스템(GFS) 논문 공개 후 본격적으로 개발되었는데 구글의 시스템과 대응되는 체계로 구성되어 있는 것이 특징이다.

구글의 분산파일 시스템 기능은 하둡 분산파일 시스템(HDFS, Hadoop Distributed File System), 구글의 맵리듀스는 하둡 맵리듀스(Hadoop MapReduce), 구글의 빅테이블은 에이치베이스(Hbase)가 각각 담당하고 있다.

하둡은 노란색 아기코끼리로 표현하는데 이는 하둡을 처음 개발한 더그 커팅(Doug Cutting)이 자신의 아이가 가지고 놀던 장난감 코끼리의 이름을 붙인 것에 기인한다. 2011년 야후에서 오픈 소스 아파치 하둡(Apache Hadoop) 사업을 위해 분사한 기업도 코끼리가 주인공인 동화에서 코끼리 이름(Horton)을 따와 회사 이름(Hortonworks)을 만들었다.

〈그림 1〉 하둡과 호튼웍스 로고

〈그림 1〉 하둡과 호튼웍스 로고출처 : http://hadoop.apache.org/, http://hortonworks.com/

3. 하둡의 구성 요소

하둡은 핵심 구성 요소인 분산파일 시스템과 맵리듀스 이외에 다양한 기능을 담당하는 시스템으로 구성되어 있다. 하둡 프로그램을 쉽게 처리하기 위한 솔루션으로 피그(Pig)와 하이브(Hive)가 있다(O'Reilly Radar Team, 2012). 피그는 야후에서 개발되었는데 현재는 하둡 프로젝트에 포함되어 있다. 피그는 데이터를 적재·변환하고 결과를 정렬하는 과정을 쉽게 처리하기 위해 만든 프로그램 언어다. 하이브는 하둡을 데이터웨어하우스(DW)로 운영할 수 있게 해주는 솔루션이다 페이스북에서 개발한 하이브는 관계형 데이터베이스에서 사용하는 SQL과 유사한 질의 언어(query language)의 특징을 가지고 있다.

에이치베이스는 칼럼 기반의 데이터베이스(column-oriented database)로 대규모 데이터에 빠른 속도로 접근할 수 있도록 만든다. 스쿱(Sqoop)은 관계형 데이터베이스로부터 데이터를 하둡으로 옮기는 도구다. 플럼(Flume)은 로그데이터를 하둡 분산파일 시스템으로 옮기는 도구다. 이 밖에 처리 과정을 조정하고 관리하는 주키퍼(Zookeeper)와 우지(Oozie)가 있다.

하둡을 대규모 데이터 처리에 활용한 대표적인 사례로는 《뉴욕타임스》가 있다. 《뉴욕타임스》는 1851년부터 1980년까지의 기사 1100만 건을 PDF로 변환하는 대규모 프로젝트를 수행하면서 하드웨어와 소프트웨어를 신규로 구매하는 대신 아마존 EC2와 S3, 그리고 하둡(Hadoop) 플랫폼을 활용했다. 하루만에 작업을 완료하고 지불한 비용은 1450달러에 불과했다(《매일경제》, 2010).

하둡은 공개용 소프트웨어이기 때문에 무료로 이용할 수 있다는 장점이 있다. 현재 인터넷 환경에서 오픈 소스로 제공되는 개발 도구로는 LAMP(Linux, Apache, MySQL, PHP/Python)가 있다. 운영체제인 리눅스(Linux), 웹 서버인 아파치(Apache), 데이터베이스는 마이에스큐엘(MySQL), 개발언어인 피에이치피/파이썬(PHP/Python)을 사용하면 저렴한 비용으로 시스템을 개발할 수 있다. 빅데이터 처리 기술인 하둡을 포함한 이러한 오픈 소스 프로그램의 등장은 개방과 협업, 공유를 지향하는 웹 생태계의 특성을 잘 나타내주고 있다.

하둡은 대규모 데이터 처리가 필수적인 구글, 야후, 페이스북, 트위터 등 인터넷 서비스 기업에서 먼저 활용하기 시작했다. 최근에는 금융 서비스업, 정부기관, 의료와 생명과학, 소매업, 통신업, 디지털 미디어 서비스업 등으로 확장되고 있다.

하둡은 상용 서비스로도 이용할 수 있다. 신생업체인 클라우데라(Cloudera)와 야후에서 분사한 호튼웍스, 맵알(MapR) 등이 하둡의 상용 배포판을 제공하고 있다. IBM은 자사의 인포스피어 빅인사이트 데이터 분석 패키지에 하둡을 포함시켰고, 마이크로소프트의 윈도 애저 클라우드 서비스에서도 하둡을 사용할 수 있다.

참고문헌

  • 정용찬(2012). 『빅데이터 혁명과 미디어 정책 이슈』(KISDI Premium Report 12-02). 정보통신정책연구원.
  • 西田圭介(2008). Googleを支える技術. 김성훈 역(2009). 『구글을 지탱하는 기술』. 멘토르.
  • Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach(2006). Bigtable: A Distributed Storage System for Structured Data. Google, Inc.
  • Jeffrey Dean and Sanjay Ghemawat(2004). MapReduce: Simplified Data Processing on Large Clusters. Google, Inc.
  • O'Reilly Media(2012). Big Data Now. O'Reilly.
  • O'Reilly Radar Team(2012). Planning for Big Data. O'Reilly.
  • Rob Pike, Sean Dorward, Robert Griesemer, Sean Quinlan(2005). Interpreting the Data: Parallel Analysis with Sawzall. Google, Inc.
  • Sanjay Ghemawat, Howard Gobioff, & Shun-Tak Leung(2003). The Google File System. Google.

온라인사이트

  • 《매일경제》 OSS 기반 대규모 데이터 처리 기술 하둡. 2010.10.20. http://news.mk.co.kr/newsRead.php?year=2010&no=569653

    [네이버 지식백과] 빅데이터 기술 (빅데이터, 2013.02.25., 커뮤니케이션북스)

http://terms.naver.com/entry.nhn?docId=1691556&cid=42171&categoryId=42183