전체 글 1383

통계 R 다운로드 및 설치

통계 R 다운로드 및 설치 많인 알려 있지는 않지만 최근 빅데이터, 통계에 관심을 가지면서 R 이라는 프로젝트를 접하게 되었다. 아직 국내에는 R에 대한 자료 및 커뮤니티가 많지 않은 듯 하다. R은 통계, 그래픽 작업, 통계적 프로그램을 하는데 효과적인 툴이다. R은 오픈소스 프로젝트로 R에 서 사용 할 수 있는 애드온만 해도 수천개에 달한다고 한다. 가장 많은 자료는 당연 R 프로젝트 사이트에 있으니 참고 하길 바란다. R-Project : http://www.r_project.org R-Project에서 R 소프트웨어를다운받고 설치 하는 과정을 알아 보자. R-project의 사이트로 이동 한다. 본문에 download-R 을 클릭 한다. 각 국가별로 다운로드 미러 사이트가 있다. 한국의 경우에는 ..

하둡실행

하둡실행 - 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개의 블록 복제본을 생성하여 분산된 서버에 저장한다. 복제된 블록이 여러 서버에 저장되어 있기 때문에 특정 시스템에 장애가 발생하여도 데이터를 유지 할 수 있다. 블록의 사이즈를 너무 작거나 크게 하였을 경우에 블록 사이즈보다 작은 데이터가 저장 될 경우 무조건 해당 블록의 크기만큼 공간을 차지하..