본문 바로가기
카테고리 없음

구글의 빅데이터 처리 기술, 하둡의 구성요소

by 포스팅하는 남자 2022. 8. 23.
반응형

구글의 빅데이터 처리 기술, 하둡의 구성요소

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

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

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

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

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

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

빅 테이블은 구조화된 데이터(Structured Data) 처리를 위한 분산 스토리지 시스템(A Distributed Storage System)이다(Fay Chang, 2006). 웹 검색과 같은 크고 복잡한 데이터 구조로 효율적으로 읽고 쓰기 위해 빅 테이블은 기존의 관계형 데이터베이스와 달리 복잡한 구조를 가지고 있습니다. 관계형 데이터베이스는 테이블(테이블), 행(Row), 열(column)이라는 간단한 구조로 구성되지만, 빅 테이블은 열 대신 로키(Row Key)와 열 패밀리(column family), 타임스탬프 (time stamp) )와 같은 복잡한 구조로 구성됩니다. 빅 테이블은 이러한 기능을 사용하여 테이블을 종횡으로 무한히 늘릴 수 있다(Fay Chang, 2006).

MapReduce는 효율적인 데이터 처리를 위해 여러 컴퓨터를 사용하는 분산 데이터 처리 기술입니다 (Dean & Gemawat, 2004). 맵 리듀스는 이름에서 추측할 수 있도록 맵(Map)과 리듀스(Reduce)의 두 가지 프로세스로 구성됩니다. 우선, 맵 단계에서는 대규모 데이터를 복수의 컴퓨터에 분산하여 병렬적으로 처리하여 새로운 데이터(중간 결과)를 생성한다. 감소 단계에서, 이렇게 생성된 중간 결과를 조합하여 최종적으로 원하는 결과를 생성한다. 리듀스 프로세스도 복수의 컴퓨터를 동시에 활용하는 분산 처리 방식을 적용한다.

지도 감소 처리 프로세스를 쉽게 이해하기 위해 어떤 문서에 존재하는 특정 단어의 수를 계산하는지 고려해 봅시다. 맵 단계에서는 문서의 내용을 하나하나의 단어로 분해한다. 이 단어가 우리가 찾고있는 특정 단어라면 숫자 1을 제공합니다. 이 작업을 여러 컴퓨터가 병렬로 처리하면 순간적으로 숫자 1의 중간 결과가 생성됩니다. 감소 단계에서 이와 같이 생성된 중간 결과를 모두 합치면 원하는 단어의 개수가 얻어진다(O'Reilly Media, 2012).

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

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

Google의 분산 파일 시스템 기능은 Hadoop 분산 파일 시스템(HDFS, Hadoop Distributed File System), Google의 MapReduce는 Hadoop MapReduce(Hadoop MapReduce), Google의 빅 테이블은 HBASE가 각각 담당하고 있다.

Hadoop은 노란색 아기 코끼리로 표현되지만, 이것은 Hadoop을 처음 개발한 더그 커팅이 그의 아이가 놀고 있던 장난감 코끼리의 이름을 지정했기 때문입니다. 2011년 야후에서 오픈소스 아파치 하두프(Apache Hadoop) 사업을 위해 분사한 기업도 코끼리가 주인공 동화로 상명(Horton)에 따라 회사명(Hortonworks)을 만들었다.

3. Hadoop 구성 요소
Hadoop은 핵심 구성 요소인 분산 파일 시스템과 MapReduce 외에도 다양한 기능을 담당하는 시스템으로 구성됩니다. Hadoop 프로그램을 쉽게 처리할 수 있는 솔루션으로 Pig와 Hive가 있습니다(O'Reilly Radar Team, 2012). 피그는 Yahoo에서 개발되었으며 현재 Hadoop 프로젝트에 포함되어 있습니다. 피그는 데이터를 적재·변환하고 결과를 정렬하는 과정을 쉽게 처리하기 위해 만든 프로그래밍 언어이다. 하이브는 Hadoop을 데이터 웨어하우스(DW)로 운영할 수 있는 솔루션입니다.

에이치베이스는 컬럼 기반 데이터베이스로 대규모 데이터에 빠르게 액세스할 수 있도록 합니다. Sqoop은 관계형 데이터베이스에서 데이터를 Hadoop으로 이동하는 도구입니다. Flume은 로그 데이터를 Hadoop 분산 파일 시스템으로 이동하는 도구입니다. 이 밖에 처리 과정을 조정하고 관리하는 주키퍼(Zookeeper)와 우지(Oozie)가 있다.

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

Hadoop은 공개용 소프트웨어이므로 무료로 이용할 수 있다는 장점이 있다. 현재, 인터넷 환경에서 오픈 소스로 제공되는 개발 툴로서는, LAMP(Linux, Apache, MySQL, PHP/Python)가 있다. 운영 체제인 Linux(Linux), 웹 서버인 Apache(Apache), 데이터베이스는 MyScuel(MySQL), 개발 언어인 Piechi Python(PHP/Python)을 사용하면 저렴한 비용으로 시스템을 개발할 수 있습니다. 수 있습니다. 빅데이터 처리 기술인 Hadoop을 포함한 이러한 오픈 소스 프로그램의 등장은 개방과 협업, 공유를 목표로 하는 웹 에코시스템의 특성을 잘 나타내고 있다.

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

Hadoop은 상용 서비스로도 사용할 수 있습니다. 신회사인 클라우델라(Cloudera)와 Yahoo에서 분사한 HottonWorks, MapR(MapR) 등이 Hadoop의 상용 배포판을 제공하고 있다. IBM은 인포스피어의 빅 인사이트 데이터 분석 패키지에 Hadoop을 통합하고 있으며 Microsoft의 Windows Azure 클라우드 서비스에서도 Hadoop을 사용할 수 있습니다.

반응형

댓글