출처: http://www.jaso.co.kr/entry/Untitled99
이번 컬럼은 apache 프로젝트 중의 하나인 hadoop에 대한 내용이다. 지금까지의 분야와는 조금 다른 분야라 많은 내용을 설명해야 하기 때문에 몇번에 나누어서 진행될 예정이다. 끝까지 작성할 수 있을지는 모르겠지만 그래도 시작이 반이라는 생각에 컬럼을 쓰기로 마음먹었다.
hadoop은 apache의 검색엔진 프로젝트인 lucene의 서브 프로젝트 중 하나이다. Lucene은 모든 검색 분야에 사용이 가능하도록 범용적인 API 및 다양한 기능을 제공하고 있어 웹 검색엔진부터 사내 업무 지원 시스템의 자료 검색에까지 널리 사용될 수 있다. Lucene의 서브 프로젝트를 보면 nutch와 hadoop이 있다.
Hadoop은 원래 nutch 프로젝트 내부에 있었는데 올해(2006년)초에 별도의 서브프로젝트로 만들어졌으며 패키지도 org.apache.hadoop와 같이 별도로 구성되었다.
Nutch는 Lucene 검색엔진을 이용하여 만든 웹 검색 엔진이다. Lucene의 경우 일반텍스트, word문서, email, 데이터베이스, CAD 등 모든 문서에 사용하다. 이런 일반적인 경우에서는 검색 대상이 한정적이라고 할 수 있다. 내 PC 또는 회사에 보관되어 있는 문서 정도일 것이다. 웹 검색의 경우 웹 페이지의 방대함과 전세계에서 지금 순간에서 수많은 새로운 페이지들이
생겨나고 있기 때문에 일반적인 검색에서 처리하는 기법에 추가로 몇 가지 기능을 더 필요로 한다. 가장 기본적인 구조로는 다음과 같은 요소들이 있다.
- 로봇 또는 crawler : 자동으로 웹 페이지의 link를 따라가면서 전세계의 웹 페이지의 내용을 가져오는 기능을 수행
- 분석기 : 웹 페이지의 내용을 분석하여 HTML 태그와 본문을 분리하고, 다시 본문을 검색하기 쉽게 index화 하여 저장하는 기능
- 질의 해석 및 검색 수행 : 사용자가 요청한 검색어를 분석한 후 index 파일을 검색하여 검색을 수행
- 웹 UI : 검색 결과를 화면에 보여 주는 기능
이런 기본적인 구성요소를 nutch에서는 미리 만들어서 제공하고 있다. 실제로 영문 웹 페이지의 경우 nutch를 다운로드 받아 설치만 하면 Google, Naver와 같은 검색 사이트를 쉽게 구성할 수 있다. 물론 웹 페이지와 index를 저장할 수 있는 하드디스크와 네트워크 용량이 필요하겠지만 기능적으로는 완벽하게 동작하는 웹 검색 사이트를 간단한 설치만으로 구성할 수 있다. 다음은 nutch로 구성한 사이트의 초기검색 화면이다. 이런 화면 구성도 nutch에서 제공하고 있기 때문에 crawling 후 tomcat을 시작시키면 바로 사용할 수 있다.
hadoop을 이용한 nutch 구성은 다음 문서를 참고하면 쉽게 구성할 수 있다.
- NutchHadoopTutorial
이런 웹 검색 구조에서 hadoop이 어떤 역할을 수행하고, 어떤 기능을 제공하고 있는지에 대해 살펴보자.
Hadoop은 분산파일시스템(Distributed File System)과 분산컴퓨팅 기능을 제공하고 있다. 전세계의 웹 페이지에 있는 내용을 분석하여 구성한 index 파일의 크기를 생각해보라. 수십 ~ 수백 GB 이상이 될 수도 있다.
분산파일시스템은 이러한 index 파일과 같은 대용량과 동시에 엄청난 양의 트렌젝션을 처리해야 하는 요구사항에 부합되도록 설계되었다. 지금은 디스크 용량이 많이 커져 이 정도 규모의 파일을 하나의 시스템에 저장할 수 있지만 몇 년 전에는 하나의 시스템에 저장하는 것이 어려웠다. 그리고 하나의 시스템에 파일을 저장할 경우 수 많은 트렌젝션에 의해 디스크에 부하가 집중되어 원하는 검색 속도를 보장하기가 어렵게 된다.
일반적인 분산컴퓨팅의 경우 하나의 Job을 동시 수행 가능한 여러 개의 Task로 분리하여 여러 머신에서 동시에 수행하게 한다.웹 검색에서 이러한 분산컴퓨팅 기법을 적용하면 수 ~ 수백 GB의 검색 대상 파일을 여러 머신에 쪼개서 저장시킨 후, 파일이 저장된 각 머신에서 사용자가 요청한 키워드에 대한 검색을 병렬로 실행시킨 후 결과만 취합하도록 구성할 수 있다.
Hadoop은 이러한 분산컴퓨팅 기법을 이용한 프로그램을 쉽게 할 수 있도록 해준다.
Hadoop은 Google File System의 기본 개념을 그대로 가져와 구현하고 있다. 따라서 Hadoop을 이해하기 위해서는 Google File System 에 대한 이해가 필수이다. Google File System은 다음과 같은 특징을 가지고 있다.
- 수십 ~ 수백대 이상의 Node로 구성된 클러스터링을 지원한다.
다음 컬럼에서 계속...
이번 컬럼은 apache 프로젝트 중의 하나인 hadoop에 대한 내용이다. 지금까지의 분야와는 조금 다른 분야라 많은 내용을 설명해야 하기 때문에 몇번에 나누어서 진행될 예정이다. 끝까지 작성할 수 있을지는 모르겠지만 그래도 시작이 반이라는 생각에 컬럼을 쓰기로 마음먹었다.
hadoop은 apache의 검색엔진 프로젝트인 lucene의 서브 프로젝트 중 하나이다. Lucene은 모든 검색 분야에 사용이 가능하도록 범용적인 API 및 다양한 기능을 제공하고 있어 웹 검색엔진부터 사내 업무 지원 시스템의 자료 검색에까지 널리 사용될 수 있다. Lucene의 서브 프로젝트를 보면 nutch와 hadoop이 있다.
Hadoop은 원래 nutch 프로젝트 내부에 있었는데 올해(2006년)초에 별도의 서브프로젝트로 만들어졌으며 패키지도 org.apache.hadoop와 같이 별도로 구성되었다.
Nutch는 Lucene 검색엔진을 이용하여 만든 웹 검색 엔진이다. Lucene의 경우 일반텍스트, word문서, email, 데이터베이스, CAD 등 모든 문서에 사용하다. 이런 일반적인 경우에서는 검색 대상이 한정적이라고 할 수 있다. 내 PC 또는 회사에 보관되어 있는 문서 정도일 것이다. 웹 검색의 경우 웹 페이지의 방대함과 전세계에서 지금 순간에서 수많은 새로운 페이지들이
생겨나고 있기 때문에 일반적인 검색에서 처리하는 기법에 추가로 몇 가지 기능을 더 필요로 한다. 가장 기본적인 구조로는 다음과 같은 요소들이 있다.
- 로봇 또는 crawler : 자동으로 웹 페이지의 link를 따라가면서 전세계의 웹 페이지의 내용을 가져오는 기능을 수행
- 분석기 : 웹 페이지의 내용을 분석하여 HTML 태그와 본문을 분리하고, 다시 본문을 검색하기 쉽게 index화 하여 저장하는 기능
- 질의 해석 및 검색 수행 : 사용자가 요청한 검색어를 분석한 후 index 파일을 검색하여 검색을 수행
- 웹 UI : 검색 결과를 화면에 보여 주는 기능
이런 기본적인 구성요소를 nutch에서는 미리 만들어서 제공하고 있다. 실제로 영문 웹 페이지의 경우 nutch를 다운로드 받아 설치만 하면 Google, Naver와 같은 검색 사이트를 쉽게 구성할 수 있다. 물론 웹 페이지와 index를 저장할 수 있는 하드디스크와 네트워크 용량이 필요하겠지만 기능적으로는 완벽하게 동작하는 웹 검색 사이트를 간단한 설치만으로 구성할 수 있다. 다음은 nutch로 구성한 사이트의 초기검색 화면이다. 이런 화면 구성도 nutch에서 제공하고 있기 때문에 crawling 후 tomcat을 시작시키면 바로 사용할 수 있다.
hadoop을 이용한 nutch 구성은 다음 문서를 참고하면 쉽게 구성할 수 있다.
- NutchHadoopTutorial
이런 웹 검색 구조에서 hadoop이 어떤 역할을 수행하고, 어떤 기능을 제공하고 있는지에 대해 살펴보자.
Hadoop은 분산파일시스템(Distributed File System)과 분산컴퓨팅 기능을 제공하고 있다. 전세계의 웹 페이지에 있는 내용을 분석하여 구성한 index 파일의 크기를 생각해보라. 수십 ~ 수백 GB 이상이 될 수도 있다.
분산파일시스템은 이러한 index 파일과 같은 대용량과 동시에 엄청난 양의 트렌젝션을 처리해야 하는 요구사항에 부합되도록 설계되었다. 지금은 디스크 용량이 많이 커져 이 정도 규모의 파일을 하나의 시스템에 저장할 수 있지만 몇 년 전에는 하나의 시스템에 저장하는 것이 어려웠다. 그리고 하나의 시스템에 파일을 저장할 경우 수 많은 트렌젝션에 의해 디스크에 부하가 집중되어 원하는 검색 속도를 보장하기가 어렵게 된다.
일반적인 분산컴퓨팅의 경우 하나의 Job을 동시 수행 가능한 여러 개의 Task로 분리하여 여러 머신에서 동시에 수행하게 한다.웹 검색에서 이러한 분산컴퓨팅 기법을 적용하면 수 ~ 수백 GB의 검색 대상 파일을 여러 머신에 쪼개서 저장시킨 후, 파일이 저장된 각 머신에서 사용자가 요청한 키워드에 대한 검색을 병렬로 실행시킨 후 결과만 취합하도록 구성할 수 있다.
Hadoop은 이러한 분산컴퓨팅 기법을 이용한 프로그램을 쉽게 할 수 있도록 해준다.
Hadoop의 주요 기능
- 분산파일시스템
- 분산컴퓨팅
- 분산파일시스템
- 분산컴퓨팅
Hadoop은 Google File System의 기본 개념을 그대로 가져와 구현하고 있다. 따라서 Hadoop을 이해하기 위해서는 Google File System 에 대한 이해가 필수이다. Google File System은 다음과 같은 특징을 가지고 있다.
- PC와 같은 일반적으로 값싼 장비를 이용한다.(NAS 등과 같은 고비용의 장비를 사용하지 않고 소프트웨어로 해결한다.)
- 많은 수의 대용량 파일(수백 MB ~ 수 GB)을 처리할 수 있어야 한다.
- 추가로 데이터에 대한 백업을 하지 않는다.
- 장비의 추가 및 제거가 자유로워야 한다.
- 특정 노드 장애 시에도 별도의 복구 절차 없이 지속적인 서비스 제공이 가능하다.
- 많은 수의 대용량 파일(수백 MB ~ 수 GB)을 처리할 수 있어야 한다.
- 추가로 데이터에 대한 백업을 하지 않는다.
- 장비의 추가 및 제거가 자유로워야 한다.
- 특정 노드 장애 시에도 별도의 복구 절차 없이 지속적인 서비스 제공이 가능하다.
- 수십 ~ 수백대 이상의 Node로 구성된 클러스터링을 지원한다.
다음 컬럼에서 계속...