Hadoop은 공식적으로 소개 되었다 아파치 소프트웨어 재단 회사에 의해 2005가을에 Lucene 하위 프로젝트 Nutch의 일환으로. 그것은 MapReduce와 구글 연구소에서 처음 개발한 구글 파일 시스템에 의해 영감을 했다. 2006 년 3 월, MapReduce 및 분산된 파일 시스템 (NDFS) 프로젝트에 포함 된 Nutch Hadoop 이라고 합니다.
Hadoop은 인터넷에 검색 키워드를 분류 하기 위한 가장 인기 있는 도구 이지만 그것은 또한 많은 훌륭한 확장성을 필요로 하는 문제를 해결할 수 있습니다. Grep 10 TB 메가 파일 하는 경우 예를 들어 어떻게 될 까? 기존 시스템에이 긴 시간이 걸립니다. 하지만 Hadoop 계정, 이러한 문제를 고려 하 고 따라서 효율성을 크게 개선 하도록 설계 되었습니다.
필수 구성 요소
팀 존스의 DeveloperWorks
에 기사 읽기
팀의 해부학... 일련의 기사 팀 모든 developerWorks에 기사
Hadoop은 대량의 데이터의 분산된 처리를 가능 하 게 하는 소프트웨어 프레임 워크. 하지만 Hadoop 안정적, 효율적이 고 확장 가능한 방식으로 처리 됩니다. Hadoop은 신뢰할 수 있는 작업 데이터의 여러 복사본을 유지 하는 그래서 그는 계산 요소와 저장소 실패 합니다, 가정 하기 때문에 되도록 처리 실패 한 노드에 대 한 재배포 될 수 있습니다. 그것은 동시에 작동 하 고 병렬 처리를 통해 처리 속도 때문에 Hadoop 효율적입니다. Hadoop PB 수준 데이터 처리 확장 이기도 합니다. 그래서 그 낮은 비용과 누구나 사용할 수 있습니다 또한, Hadoop 커뮤니티 서버에 의존 합니다.
당신이 생각 할 수 있습니다, Hadoop은 리눅스 생산 플랫폼에서 실행 하는 Java™ 언어로 작성 된 프레임 워크를가지고 있기 때문에 이상적입니다. C 같은 다른 언어에서 또한 Hadoop에 응용 프로그램을 작성 수 있습니다 + +.
Hadoop 아키텍처
Hadoop 많은 요소로 구성 되어 있습니다. 하단에는 Hadoop 분산 파일 시스템 (HDFS), Hadoop 클러스터에 저장소의 모든 노드에 파일을 저장 하는. HDFS의 상위 레이어 (이 문서)에 대 한 jobtrackers 및 tasktrackers 구성 된 MapReduce 엔진입니다.
HDFS
외부 클라이언트에 대 한 HDFS 처럼 전통적인 계층적 파일 시스템입니다. 수 있습니다 생성, 삭제, 이동, 또는 파일, 당신과 등등. 하지만 HDFS의 건축 자체의 특성에 의해 결정 되는 노드 (그림 1 참조), 특정 집합에 만들어집니다. 이러한 노드 포함 Namenode (단 하나)는 HDFS 내에서 메타 데이터 서비스를 제공 하; Datanode HDFS에 대 한 저장소 블록을 제공 합니다. 하나만 namenode 있기 때문에, 이것은 HDFS (단일 지점 실패)의 단점입니다.
그림 1입니다. Hadoop 클러스터
의 단순화 된 보기
HDFS에 저장 된 파일 블록으로 분할 하 고 여러 컴퓨터 (Datanode)에 복제 되는. 이것은 전통적인 RAID 아키텍처에서 매우 다르다입니다. 블록 복사의 수와 (일반적으로 64 MB) 블록의 크기는 파일을 만들 때 클라이언트에 의해 결정 됩니다. Namenode는 모든 파일 작업을 제어할 수 있습니다. HDFS 내 모든 통신은 표준 TCP/IP 프로토콜을 기반으로 합니다.
Namenode
Namenode는 HDFS 인스턴스는 별도 컴퓨터에 일반적으로 실행 되는 소프트웨어입니다. 그것은 파일 시스템 네임 스페이스를 관리 하 고 외부 클라이언트에 의해 액세스 제어에 대 한 책임입니다. Namenode는 파일 복사 블록은 Datanode에 매핑됩니다 여부를 결정 합니다. 복제의 3 가장 일반적인 블록에 대 한 첫 번째 복사본 블록 같은 랙에 다른 노드에서 저장 하 고 마지막 복사 블록 다른 랙에 노드에 저장 됩니다. 참고 여기에 클러스터 아키텍처를 이해 해야 합니다.
실제 I/O 트랜잭션 Namenode, 메타 데이터만 Datanode 대표 이며 블록 파일 매핑 Namenode 통해 전달 됩니다. 외부 클라이언트는 파일을 만드는 요청을 보내면, Namenode 블록 ID와 블록의 첫 번째 복사본의 Datanode IP 주소와 함께 응답 합니다. Namenode는 또한 블록의 사본을 받게 됩니다 다른 Datanode를 알립니다.
Namenode는 Fsimage 라는 파일에 파일 시스템 네임 스페이스에 대 한 모든 정보를 저장 합니다. 이 파일 및 모든 거래를 포함 하는 기록 파일 (여기서는 Editlog) Namenode 로컬 파일 시스템에 저장 됩니다. Fsimage 및 Editlog 파일 복제 파일 손상 또는 Namenode 시스템 손실을 방지 하기 위해 필요 합니다.
Datanode
Namenode는 일반적으로 인스턴스를 HDFS에 별도 시스템에서 실행 되는 소프트웨어 이기도 합니다. Hadoop 클러스터는 namenode와 datanode의 많은 수를 포함합니다. Datanode는 일반적으로 단일 스위치와 모든 시스템을 연결 하는 랙 구성 됩니다. Hadoop의 한 가정은 랙 내부 노드 간의 전송 속도 랙 노드 간의 보다 빠른.
Datanode 읽기 및 쓰기 HDFS 클라이언트에서 요청에 응답 합니다. 그들은 또한 Namenode에서 블록을 복사, 삭제 하기 위한 명령에 응답. Namenode 각 datanode의 정기적인 하트 (하트 비트) 메시지에 사용합니다. 각 메시지 블록 보고서를 Namenode 블록 매핑 및이 보고서에 따라 다른 파일 시스템 메타 데이터를 확인할 수 있습니다 포함 되어 있습니다. Datanode는 하트 비트 메시지를 보낼 수 없습니다, 경우 Namenode 노드에서 누락 된 블록 복제를 복구 조치를 취할 것입니다.
파일 작업
표시, HDFS 아니다 보편적인 파일 시스템. 주 목적은 큰 파일 작성에 대 한 스트리밍 액세스를 지원 하기 위해서입니다. 클라이언트 HDFS에 파일을 작성 하 고 싶다면, 먼저 로컬 임시 저장소 파일을 캐시 해야 합니다. 캐시 된 데이터 필요한 HDFS 블록 크기 보다 큰 경우 파일을 만드는 요청 Namenode 보내집니다. Namenode는 Datanode 정체성과 대상 블록을 사용 하 여 클라이언트에 응답 합니다. 또한 파일 블록 복사 저장 됩니다 것 Datanode는 알립니다. 클라이언트 임시 파일을 첫 번째 Datanode 보내기 시작, 블록 콘텐츠는 즉시 전달 Datanode 복제 파이프라인. 클라이언트는 또한 동일한 HDFS 네임 스페이스에 저장 된 체크섬 (checksum) 파일을 만드는 담당 합니다. 파일의 마지막 블록을 보낸 후 namenode의 지속형 메타 데이터 파일 저장 (Editlog 및 Fsimage 파일)에서.
리눅스 클러스터
Hadoop 프레임 워크 (개발 하 고 디버깅) 때 단일 리눅스 플랫폼에서 사용할 수 있습니다 하지만 그것은 선반에 저장 된 상용 서버를 사용 하 여 악용 될 수 있습니다. 이러한 랙 Hadoop 클러스터를 형성합니다. 작업 및 파일 클러스터 토폴로지 정보를 통해 클러스터를 통해 할당 되는 방법을 결정 합니다. Hadoop 단일 컴퓨터 또는 심지어 모든 랙 처리의 네이티브 메서드 실패 그래서 노드가 실패할 수 있습니다 가정 합니다.
Hadoop 응용 프로그램
Hadoop의 가장 일반적인 용도 중 하나는 웹 검색입니다. 비록 그것이 유일한 소프트웨어 framework 응용 프로그램을 병렬 데이터 처리 엔진으로는 매우 탁월 하 게 동작 합니다. Hadoop의 가장 흥미로운 측면 중 하나는 구글 개발에 의해 영감을 맵과 Reduce 프로세스입니다. 텍스트 웹 페이지를 검색 하는 인덱스 입력으로 웹 크롤러가 검색 및 결과 페이지에서 단어의 주파수를 보고이 과정 이라고 합니다. 이 결과 다음 정의 된 검색 매개 변수에서 콘텐츠를 식별 하는 웹 검색 프로세스를 통해 사용할 수 있습니다.
MapReduce
3 부분으로 구성 되어 간단한 MapReduce 응용 프로그램: A 지도 기능, 감소 기능 및 주요 기능. 주요 기능은 파일 입/출력 작업 제어를 결합합니다. 이 시점에서, 둡 둡 디버그 및 성능 통계를 응용 프로그램 개발자를 위한 많은 도구를 제공 인터페이스와 추상 클래스의 여러를 제공 합니다.
MapReduce 자체는 큰 데이터 집합의 병렬 처리에 대 한 소프트웨어 프레임 워크입니다. MapReduce의 루트 지도 이며 함수형 프로그래밍의 기능을 감소. 그것은 많은 경우 (많은 맵과 Reduce)를 포함할 수 있는 두 개의 작업으로 구성 됩니다. 지도 함수 데이터 집합이 고 각 요소는 키/값 쌍에 해당 하는 입력된 필드에 키/값 쌍의 목록에 그것을 변환 합니다. Reduce 함수는 MAP 함수에 의해 생성 된 목록 수락 하 고 각 키에 대 한 키/값 쌍을 생성 하는 그들의 키에 따라 키/값 쌍의 목록을 축소.
이것에서는 그것을 이해 하는 데 도움이. 입력된 필드 사람 인류를 위한 거 대 한 도약을 위한 하나의 작은 발걸음은 가정 합니다. 이 도메인에서 실행 하는 MAP 함수는 다음과 같은 키/값 쌍의 그릴 것입니다.
(1, 1) (소형, 1) (1 단계) (대 한, 1) (남자 1) (1, 1) (거 인, 1) (도약, 1) (대 한, 1) (인류, 1)
이 키/값 쌍 목록에 Reduce 함수를 적용 하는 경우 당신은 다음 키/값 쌍 집합:
(1, 2) (작은, 1) (1 단계) (2) (망, 1)을 위해 (거 인, 1) (도약, 1) (인류, 1)
인덱스 처리를 위해 확실히 유용 하는 입력된 필드에 있는 단어의 수입니다. 그러나 가정 두 입력된 필드는, 첫 번째는 지금 1 개의 작은 단계, 그리고 두 번째는 인류를 위한 하나의 거 대 한 도약. 각 도메인에 지도 기능 및 감소 기능을 수행 하 고 다른 reduce 함수에 두 개의 키/값 쌍을 적용 하 고 앞으로 같은 결과 얻을. 즉, 병렬, 입력된 필드에서 같은 작업을 사용할 수 있습니다 그리고 결과 동일 하, 그러나 빨리. 이 MapReduce의 힘 이며 그것의 병렬 기능 시스템에 사용할 수 있습니다. 그림 2 섹션 및 반복의 형태로이 개념을 보여 줍니다.
그림 2입니다. MapReduce 흐름의 개념 흐름
이제 Hadoop, 등을 맞댄 어떻게 합니까 그것은이 기능을 구현? 단일 마스터 시스템에서 시작 하는 클라이언트를 나타내는 MapReduce 응용 프로그램을 jobtracker를 라고 합니다. Namenode와 마찬가지로, MapReduce 응용 프로그램 제어에 대 한 책임은 Hadoop 클러스터에 있는 유일한 시스템 이다.입니다. 응용 프로그램 제출 후 HDFS에 포함 된 입력 및 출력 디렉터리 제공 됩니다. Jobtracker에서는 파일 블록 정보 (물리적 수량 및 위치) 하위 작업 추가 tasktracker를 생성 하는 방법을 결정 합니다. MapReduce 응용 프로그램 입력된 파일 블록에 표시 되는 각 노드에 복제 됩니다. 고유한 하위 작업 특정 노드에서 파일의 각 블록에 대해 생성 됩니다. 각 Tasktracker 상태 및 완료 정보 Jobtracker 보고. 그림 3 샘플 클러스터에서 작품의 배포를 보여 줍니다.
그림 3입니다. Hadoop 클러스터 처리 및 스토리지
의 실제 분포를 보여 주는
Hadoop의이 기능은 저장 처리를 위해 위치를 이동 하지 않습니다 하지만 오히려 처리 저장소에 이동 때문에 중요 하다. 이 처리는 클러스터의 노드 수에 따라 조정 하 여 효율적인 데이터 처리를 수 있습니다.
Hadoop의 다른 응용 프로그램
Hadoop은 분산된 응용 프로그램 개발을 위한 다양 한 프레임 워크 이며 다른 관점에서 문제를 보고 Hadoop의 대부분을 확인 하는 좋은 방법. 나타나는 프로세스 단계 기능으로 어디 한 구성 요소가 다른 구성의 결과 사용 하는 그림 2에 다시 찾고. 물론, 그것은 맞는 개발 도구, 하지만이 경우 다음 당신은 Hadoop을 사용 하 여 선택할 수 있습니다.
Hadoop은 큰 데이터 집합을 정렬 하 고 큰 파일에 대 한 검색을 포함 하 여 다양 한 문제를 해결 하기 위해 도움이 되었습니다. 다양 한 검색 엔진, 아마존의 A9 등 및 와인 정보를 찾기 위해 사용 되는 수 포도 수직 검색 엔진의 핵심 이기도 합니다. Hadoop 위 키에는 수많은 응용 프로그램 및 다양 한 방법으로 (참고 자료 참조)에 있는 Hadoop을 사용 하는 회사의 목록을 제공 합니다.
현재, 야 후 10000 개 이상의 코어 5PB 각 datanode를 배포 하는 저장소의 바이트 이상으로 구성 된 큰 Hadoop 리눅스 생산 건축을, 있다. 거의 1 조 링크 자신의 웹 색인을 확인 하 고 있습니다. 그러나, 이러한 대형 시스템, 필요 하지 않을 수 그리고 그렇다면, 20 노드 아마존 엘라 스틱 컴퓨트 클라우드 (EC2)를 사용 하 여 가상 클러스터를 구축할 수 있습니다. 사실, 뉴욕 타임즈는 Hadoop을 사용 하 고 4 t B의 TIFF 이미지 등 405 K 큰 TIFF 이미지, 3.3 M SGML 기사와 405 K XML 변환 하는 EC2 파일-800 K PN의 36 시간 이내에 웹에서 사용 하기 위해 G 이미지입니다. 클라우드 컴퓨팅, 라고 하는이 프로세스를 Hadoop의 힘을 표시 하는 유일한 방법입니다.
Hadoop은 점점 더 강력한 되 고 의심의 여지가 있다. 그것을 사용 하는 응용 프로그램에서 그것의 미래는 밝다.