SW Engineering/Hadoop 98

하둡실행

하둡실행 - CnetOS 6.4 - Hadoop-1.2.1 하둡의 환경설정이 완료 되었으면 하둡 데몬을 실행하여 보자. 네임노드 서버에서 다음과 같이 hadoop 명령을 호출하여 초기화 한다. # ./bin/hadoop namenode –format 초기화 과정에 다음과 같이 오류가 발생하면 오류가 난 부분을 수정하고 다시 초기화를 진행 한다. 대부분의 오류는 환경설정 단계에서 오타 또는 주소의 오류로 발생하였다. (필자가 겪은 대부분의 오류가 오타였다.) 정상적인 초기화 화면이다. 초기화 작업이 완료 되었으면 다음 쉘 명령을 이용하여 하둡과 관련된 모든 데몬을 실행 시킨다. # ./bin/start-all.sh 하둡의 데몬 실행 여부는 jps라는 명령어를 통하여 확인 할 수 있다. Jps는 Java V..

하둡 환경설정 파일 수정

하둡 환경설정 파일 수정 - CnetOS 6.4 - Hadoop 1.2.1. 하둡 설치가 완료 되면 환경설정 파일을 사용자 환경에 맞게 수정해서 사용해야 한다. 설정 파일은 하둡 홈디렉터리 하위디렉터리 conf에 저장되어 있다. 파일명 용도 hadoop-env.sh 하둡을 실행하는 쉘 스크립트 파일에서 환경 변수 설정. JDK 경로, 클래스 패스, 데몬 실행 옵션등 다양한 환경변수 설정 masters 보조 네임노드를 실행할 서버를 설정 slaves 데이터노드를 실행할 서버를 설정 core-site.xml HDFS와 맵리듀스에서 공통적으로 사용할 환경정보 설정 hdfs-site.xml HDFS에서 사용할 환경 정보 설정. mapred-site.xml 맵리듀스에서 사용할 환경 정보 설정 [hadoop-env..

하둡 인코딩 방식 설정

하둡 인코딩 방식 설정 하둡은 인코딩 방식으로 UTF-8을 사용한다. 다른 인코딩 방식을 사용할 경우 문자열 처리시 문제가 발생 할 수 있으므로 서버 인코딩을 반드시 확인 한다.  UTF-8 : UTF-8은 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나이며 한 문자를 나타내기 위해 1바이트에서 4바이트까지 사용한다. 자세한 내용은 검색을 통하여 알아 보도록 한다. (참고 링크 : http://ko.wikipedia.org/wiki/UTF-8) 리눅스에서 인코딩 방식을 확인 하는 명령어는 echo 이다. 대소문자의 주의 한다. (CentOS 6.4에서 진행 하였다.) # echo $LANG UTF-8이 아닌경우 다음과 같이 UTF-8로 변경 한다. # vi /etc/sysconfig/i18n 편집..

맵리듀스(MapReduce) 작동방식

맵리듀스(MapReduce) 작동방식 맵리듀스 시스템에서 어떻게 맵리듀스가 작동하는지 알아보자. 다음 그림은 각 단계별 처리되는 과정을 나타낸 것이다. [1단계, Split Input(분할 입력)] 첫 번째 단계와 다음 단계의 대규모 병렬처리의 핵심은 여러 조각으로 입력을 분할 하는 것이다. 이 작업은 split 또는 Shard라 불린다. 맵리듀스 라이브러리는 분할 작업을 수행한다. 입력 데이터가 HDFS의 기본 블록 사이즈인 64MB 보다 큰 경우에만 입력 스플릿이 생성된다. 분할의 실제 형태는 데이터의 위치와 형태에 관련되어 있을 수 있다. 맵리듀스는 타입에 따라 사용자 지정 또는 기본 포맷을 사용할 수 있다. 분할 스플릿은 잡이 수행되는 시간에 큰 영향을 끼친다. 입력 데이터를 분리하지 않는 것보다..

맵리듀스(MapReduce) 구성

맵리듀스(MapReduce) 구성 맵리듀스 프레임워크는 데이터에 대한 분산과 병렬 처리를 담당한다. 맵리듀스 시스템은 클라이언트, 잡트래커, 태스크트래커로 구성 된다. [클라이언트] 사용자가 실행한 맵리듀스 프로그램과 하둡에서 제공하는 맵리듀스 API를 의미. 사용자는 맵리듀스 API로 맵리듀스 프로그램을 개발하고 개발한 프로그램을 하둡에서 실행할 수 있다. [잡트래커(JobTracker)] 클라이언트가 하둡으로 요청하는 맵리듀스 프로그램은 잡(job)이라는 하나의 작업 단위로 관리되며 잡트래커는 하둡 클러스터에 등록된 전체 잡의 스케줄링을 관리하고 모니터링 한다. 사용자가 잡을 요청하면 잡트래커는 잡을 처리하기 위한 맵과 리듀스의 사용계획을 계산하고 어떤 태스크트래커에서 실행할지 결정하여 잡을 할당한다..

맵리듀스(MapReduce) 개념

맵리듀스(MapReduce) 개념 맵리듀스(MapReduce)는 구글에서 정보 검색을 위한 데이터 가공(색인어 추출, 정렬 및 역 인덱스 생성)을 목적으로 개발된 분산 환경에서의 병렬 데이터 처리 기법이자 프로그래밍 모델이다. 맵리듀스는 비공유 구조(shared-nothing)로 연결된 여러 노드 PC들을 가지고 대량의 병렬처리 방식(MPP, Massively Parallel Processing)으로 대용량 데이터를 처리할 수 있는 방법을 제공한다. 맵리듀스는 LISP 프로그래밍 언어에서 맵(map)과 리듀스(reduce)라는 함수의 개념을 차용하여 시스템의 분산구조를 감추면서 범용 프로그래밍 언어를 이용해 병렬 프로그래밍을 가능하게 한다. 즉 맵(map)과 리듀스(reduce)라는 두 개의 메소드로 구..

보조 네임노드

보조 네임노드 네임노드는 HDFS의 메타데이터를 관리하기 위해 에디트로그(EditLog)와 파일시스템이미지(FsImage) 파일을 사용한다.  에디트로그 : HDFS의 메타데이터에 대한 모든 변화를 기록하는 로그 파일. HDFS에 새 파일을 저장, 기존 파일 삭제, 파일 위치 변경 등 모든 파일의 상태를 기록. 용량 제한이 없이 파일 크기가 증가 할 수 있으며 네임노드 서버 로컬에 위치한다.  파일시스템이미지 파일 : 파일 시스템의 네임 스페이스(디렉터리명, 파일명, 상태정보)와 파일에 대한 블록 매핑 정보를 저장하는 네임노드의 로컬에 위치한다. 네임노드는 위의 두 파일을 사용하여 메타데이터를 관리 한다. 파일 시스템의 네임스페이스와 파일의 블록 매핑 정보를 메모리에서 유지하며 네임노드가 구동될 때 ..

네임노드와 데이터노드

네임노드와 데이터노드 HDFS(Hadoop Distributed File System)는 마스터(master)-슬레이브(slave) 구조로 되어 있다. 즉 마스터 역학을 하는 네임노드(NameNode) 서버 한대에 슬레이브 역할을 하는 데이터노드(DataNode) 서버 여러대로 구성된다.  네임노드(NameNode)의 역할은 HDFS의 메타데이터를 관리하고 클라이언트가 HDFS에 저장된 파일에 접근 할 수 있도록 한다. 데이터를 저장할 때 블록으로 나누어진 데이터를 여러 데이터노드에 분산하여 저장한다. 저장된 데이터를 읽기 위해서는 HDFS 클라이언트를 사용하며 클라이언트는 API형태로 사용자에게 제공 된다.  데이터노드(DataNode)의 역할은 주기적으로 네임노드에게 핫빗(Hearbeat)과 블록..

HDFS 블록 파일 시스템

HDFS 블록 파일 시스템 HDFS(Hadoop Distributed File System)는 블록 구조 파일 시스템이다. HDFS에 저장하려는 파일은 특정 사이즈의 블록으로 나누어져 분산된 서버에 저장된다. (이때 저장되는 개별의 서버를 Data Node라고 한다.) 블록 사이즈는 기본적으로 64MB 또는 128MB이며 변경이 가능하다. (최대 512yottabyte) HDFS는 블록을 저장할 때 기본적으로 3개의 블록 복제본을 생성하여 분산된 서버에 저장한다. 복제된 블록이 여러 서버에 저장되어 있기 때문에 특정 시스템에 장애가 발생하여도 데이터를 유지 할 수 있다. 블록의 사이즈를 너무 작거나 크게 하였을 경우에 블록 사이즈보다 작은 데이터가 저장 될 경우 무조건 해당 블록의 크기만큼 공간을 차지하..

HDFS 소개

HDFS 소개 HDFS(Hadoop Distributed File System)는 수십 테라바이트 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고 많은 클라이언트가 저장된 데이터를 빠르게 처리할 수 있게 설계된 파일 시스템이다. HDFS는 내결함성이 우수하고 저가의 하드웨어에 배포 할 수 있도록 설계되어 있다. 또한 POSIX 요구사항을 수용하여 파일 시스템 데이터에 스트리밍 액세스 할 수 있다. HDFS에 저장된 데이터는 물리적으로 분산되어 있지만(서로 다른 여러 대의 서버에 저장되어 있음) 분산된 서버의 로컬 디스크에서 파일의 읽기, 저장과 같은 제어는 HDFS에서 제공하는 API를 이용해 처리된다. HDFS는 다음과 같은 목표로 설계 되었다.  Hardware Failure (하드웨어..