본 포스팅은 제가 2013년 네이버 하둡스터디 카페에 포스팅했던 공개 강의 글입니다.
This is a public lecture that I posted on Naver Hadoop Study Cafe in 2013.
안녕하세요
하둡 스터디 카페 운영자 김현욱 입니다.
이번 세션에서는 하둡에 대해 본격적으로 알아보기에 앞서 구글 시스템 소프트웨어에 대해 알아보도록 하겠습니다.
하둡은 구글 시스템 소프트웨어의 클론 프로젝트라는 것은 알고 계실겁니다. 내부적으로 저장, 분석하는 모든 것이 용어만 틀리지 똑같은 개념입니다.
그렇다면 구글 시스템 소프트웨어는 어떻게 등장하게 된 것일까요?
구글의 최대 핵심 프로젝트이자 수익모델은 검색 기능입니다. 구글의 검색 시스템은 웹상의 html을 수집하는 크롤러, 수집된 html을 저장하는 저장 기술, 웹에서 수집된 hgm을 원하는 검색이 노출 될 수 있도록 색인하는 색인 및 분석 기능으로 구성되어 있습니다. 과거 구글에서는 html 내용 수집을 위해 줄 곧 RDBMS를 사용하였으나, 인터넷의 급격한 발전과 웹 사이트 수의 증가에 따라 기존의 System으로는 더 이상 분석이 어렵다고 판단하여 새로운 개념을 도입하고 2003년 구글의 파일 시스템인 Google File System(GFS)를 2003년 논문으로 발표하기 시작하여 내부 시스템을 구성하는 시스템 소프트웨어 중 일부의 요건, 설계등을 아래 [표 1]과 같이 논문으로 발표하기 시작하였습니다.
[표 1] Google System Software 과 Hadoop 비교
Google Publication | Hadoop | 특성 |
GFS(2003)&MapReduce(2004) | HDFS&MapReduce(2006) | Batch, Programs |
Sawzall(2005) | Pig&Hive(2008) | Batch, Queries |
Big Table(2006) | HBase(2008) | Online, key/value |
Dremel(2010) | Impala(2012) | Online, Queries |
Spanner | Transactions, etc... |
구글 시스템 소프트웨어는 아래 [그림1]과 같이 구성되어 있다. 주요 구성 요소로는 GFS(Google File System), Google MapReduce, BigTable, Sawzall, Chubby, Protocol Buffer 등이 있습니다.
GFS는 수천대 이상의 분산된 서버를 이용해 수십 페타바이트이상 대규모의 파일을 저장할 수 있는 파일 시스템으로, x86 장비의 장착된 로컬 디스크를 사용한다는 특징을 가집니다. Hadoop의 HDFS는 GFS의 Clone 프로젝트입니다.
Google MapReduce는 분산된 수만은 노드(Server)의 대용량 처리를 수행하는 배치작업을 수행하고, 관리하는 프레임워크로 주로 GFS에 저장된 데이터를 분석하는 기능을 하며, Hadoop의 MapReduce가 바로 Google MapReduce의 Clone 프로젝트에 해당됩니다. 다만 MapReduce에서는 간단한 연산을 할 경우에도 정해진 프로그램 모델에 맞추어 프로그래밍을 해야하는 번거로움이 있습니다.
이를 극복하기 위해 Query문과 같이 간단한 문법을 통해 MapReduce 프로그램을 작성할 수 있도록 스크립트 기반으로 개발 된 것이 Sawzall이며, Hadoop에서는 Pig&Hive가 Sawzall의 영향을 받았습니다.
Bigtable은 구글 파일 시스템 상에서 운영되는 분산 데이터베이이스 시스쳄으로 대용량의 구조화된 데이터를 저장할 수 있으며, Oracle, MySQL과 같이 기존의 데이터베이스에서 제공하는 관계형 데이터 모델은 지원하지 않으며, Bigtable 자체에서 정의한 데이터 모델 기방으로 데이터를 저장합니다.
Hadoop계열에서는 Hbase가 Bigtable의 Clone 프로젝트입니다. 구글에서는 구글 시스템 소프트웨어에서 분산 락 시스템으로 분산된 서버들 사이에서 발생할 수 있는 자원에 대한 공유 문제를 해결하기 위한 시스템으로 Cubby를 개발하였습니다. 구글의 대부분의 서비스는 분산된 서버에서 운영되기 때문에 파일, 데이터 등과 같은 특정 자원에 동시에 접근 할 경우에 대한 제어를 필요로 하는데 이를 처비를 사용하여 구현하였으며, 실제로는 구글 클러스터의 전체관리와 판단, 마스터 선출 등과 같은 분산 시스템 전체를 관리하는데 사용되고 있습니다. Hadoop의 Zookeeper가 Chubby의 역할을 하고 있습니다. 구글 시스템 소프트웨어에서 서로 다른 프로그래밍 언어나 플랫폼 간에 데이터 전송 및 교환이 필요한 경우 데이터 타입을 맞추거나 표준화된 프로토콜을 사용하기 위하여 자체 개발한 프로토콜 표준 플랫폼을 이용하는데 이를 Protocol Buffer라고 합니다.
구글 시스템 소프트웨어는 구글 인프라를 구성하는 시스템은 컴퓨터 리소스(Server 또는 Storage)와 같은 자원을 추가, 삭제 시 기존 프로그램을 변경하지 않거나 최소화 해야 하며, 장애 발생 상황을 바로 인지해 관리자의 개입 없이 자동으로 복구 처리를 진행하고, 서비스는 중단없이 제공이 가능해야 한다는 몇가지 기본 요건을 반드시 만족하도록 설계가 되었습니다.
이와 같은 기본요건은 현재 대부분의 시스템의 기본요건과 비슷하며, 이를 충실하게 따라 설계된 구글 시스템 소프트웨어는 세계 최고의 웹 검색 시스템을 개발하고 구축할 수 있는 구글의 원동력이 되었습니다.
그렇다면 구글은 왜 위와같은 기본요건을 가지고 설계가 된 것일까요?
구글은 인터넷 검색 시장에서는 후발 주자였습니다. 때문에 자금력이 부족하였으며, 자체 Data Center 구축 또한 어려웠습니다. 이에 구글의 창업자는 대량의 데이터를 저장, 분석하기 위해 자신들이 사용하고 있는 PC나 대학의 연구소 장비를 주로 활용하였으며, 컴퓨터의 종류와 스토리지의 종류도 제각각이였습니다. 이러한 열악한 하드웨어를 가지고 안정적인 서비스를 운영하기 위해 구글은 소프트웨어 기술에 집중함에 따라 결함 또는 장애 발생 상황에도 안정적인 서비스 제공할 수 있는 기술을 가지게 되었으며, 지금은 야후의 아성을 무너뜨리고 정교하고 안정적인 인터넷 검색 서비스를 제공하며 인터넷 검색 시장의 최강자가 되었습니다.
이번 세션에서는 하둡을 본격적으로 공부하기에 앞서 구글 시스템 소프트웨어와 구글에 대해 간단히 알아보는 시간을 가졌습니다. 하둡이란 것 자체가 구글 시스템 소프트웨어의 개념을 보고 개발 된 것으로, 하둡을 공부하는 입장에서는 중요한 부분이라고 생각하여 이렇게 공개강의에 포스팅 하게 되었습니다. 지루했던 글 끝까지 읽어주셔서 감사드리며, 앞으로 계속되는 하둡 공개강의에 많은 관심 부탁드립니다.
2023.12.19 - [hadoop study] - Hadoop Study Session #1-3 빅데이터 (BigData) 주요 기술
'hadoop study' 카테고리의 다른 글
Hadoop Study Session #3-1 하둡 (Hadoop) 개요 (0) | 2023.12.24 |
---|---|
Hadoop Study Session #1-3 빅데이터 (BigData) 주요 기술 (1) | 2023.12.19 |
Hadoop Study Session #1-2 빅데이터(BigData) 등장 배경과 중요성 (0) | 2023.12.19 |
Hadoop Study Session #1-1 빅데이터 (BigData) (0) | 2023.12.19 |
Cloud Computing Study Session #1-4 클라우드 컴퓨팅 (Cloud Computing) 서비스 및 구조 (0) | 2023.12.19 |
댓글